JWASM Mencetak angka.

Slides:



Advertisements
Presentasi serupa
JWASM Input Keyboard.
Advertisements

Program Bahasa Rakitan Tanpa DEBUG.COM
Flags.
Pemograman DEBUG.
OPERASI ARITMATIKA OPERASI PENAMBAHAN 1. ADD
ASSEMBLER PERTEMUAN KE-1
Manipulasi Bit dan Logika
Turbo Assembly Operasi Aritmatika.
Bahasa Assembley & Program COM
POINTER A. PENDAHULUAN Tanpa pointer untuk memindahkan data dari suatu variabel ke register 8 bit, maka variabel tersebut haruslah 8 bit juga yang dapat.
Procedure. Procedure???? Procedure merupakan suatu alat bantu yang sangat berguna. Dengan procedure, suatu program yang besar dapat disusun secara terstruktur.
JWASM Macro.
Macro. Macro ???? Macro hampir sama dengan procedure, yang dapat membantu anda dalam membuat program yang besar. Dengan Macro anda tidak perlu menggunakan.
Turbo Assembly Stack.
Turbo Assembly Membuat Program .EXE.
Turbo Assembly Mencetak Kalimat.
Turbo Assembly Compare and Jump.
Turbo Assembly Masukan dari Keyboard.
REGISTER Oleh : Oman Somantri, S.Kom
Pemrograman Mikroprosesor
Turbo Assembler TASM.
Program Bahasa Rakitan Tanpa DEBUG.COM
BAHASA RAKITAN BAGIAN 3.
Johannes Simatupang, MKom, Cobit5-F NIDN :
REGISTER.
POINTER & MANIPULASI BIT DAN LOGIKA
Mode Pengalamatan.
Pertemuan 1 Mengapa Belajar Bahasa Rakitan ??
EE-2623 Mikroprosesor & Antarmuka
SISTEM BILANGAN DAN REGISTER
Pointer. Karakteristik Operasi Assembly  Lebar data tujuan dan asal harus sama! Lebar data tidak sama => invalid opcode  Operasi 8bit disimpan pada.
Procedure dan Macro.
OPERASI ARITMATIKA.
Program Bahasa Rakitan dengan DEBUG.COM
Pertemuan 5 Struktur program bahasa rakitan
Instruksi Perpindahan Data
Arsitektur Perangkat Lunak 8086
Procedure merupakan suatu alat bantu yang sangat berguna. Dengan procedure suatu program yang besar dapat diselesaikan dengan lebih mudah. Proses pencarian.
BAHASA RAKITAN BAGIAN 1.
BAHASA RAKITAN BAGIAN 2.
PRAKTIKUM BAHASA RAKITAN 05
Praktikum 6.
1 Pertemuan 3 Komponen Sistem Komputer dan Register pada prosesor 8088 Matakuliah: T0483 / Bahasa Rakitan Tahun: 2005 Versi: versi 1.0 / revisi 1.0.
Pengenalan Assembler.
Program Bahasa Rakitan dengan DEBUG.COM
BIOS, DOS, dan String.
Dasar-Dasar Pemrograman Assembler
Stack dan Procedure.
Matakuliah : T0483 / Bahasa Rakitan Tahun : 2005 Versi : 1.0
PERTEMUAN I (Sesi 2) SISTEM BILANGAN.
Sistem Bilangan dan Kode
REGISTER.
Mata Kuliah : Bahasa Rakitan
Pengenalan Assembler.
OPERASI ARITMATIKA.
BAB III REGISTER 8088 Mikroprosesor 8088 berorientasi pada register
OPERASI PADA LAYAR.
Pertemuan 6 Instruksi Bahasa Rakitan 8088
OPERASI PADA STRING.
Matakuliah : T0483 / Bahasa Rakitan Tahun : 2005 Versi : 1.0
BAHASA RAKITAN BAGIAN 1.
SISTEM BILANGAN.
OPERASI LOGIKA Mulyono.
Operasi Aritmatika.
P O L I N O M I A L (SUKU BANYAK) Choirudin, M.Pd.
PERTEMUAN KE – 3 SISTEM BILANGAN.
SISTEM BILANGAN.
Program Bahasa Rakitan Tanpa DEBUG.COM
Manipulasi Bit dan Logika
CHAP 6 SET INSTRUKSI MEMORI
Transcript presentasi:

JWASM Mencetak angka

Pencetakan angka Pada assembler, untuk mencetak suatu angka tidaklah semudah mencetak angka pada bahasa tingkat tinggi, karena BIOS maupun DOS tidak menyediakan fungsinya. Misalkan kita mempunyai suatu angka 7, untuk mencetaknya kita harus menerjemahkan ke dalam kode ASCII 55 dahulu barulah mencetaknya. Demikian halnya bila ingin mencetak angka 127, maka kita juga harus menterjemahkannya dalam rangkaian kode ASCII 49, 50 dan 55 untuk kemudian dicetak.

Mencetak angka dalam desimal Cara yang paling banyak dilakukan oleh programmer assembler, untuk mencetak angka dalam bentuk desimal adalah dengan membagi angka tersebut dengan 10. Kemudian sisa pembagiannya disimpan dalam stack. Pada saat pencetakan, angka-angka yang disimpan dalam stack akan diambil satu persatu untuk dicetak. Misalkan anda mempunyai angka 345, maka hasil pembagian dengan 10 sebanyak 3 kali akan menghasilkan sisa berturut-turut 5, 4 dan 3. Sisa pembagian ini kemudian disimpan pada stack. Karena sifat stack yang Last In First Out (LIFO), maka pada saat pengambilan angka pada stack untuk dicetak akan diambil berturut-turut angka 345 !

.MODEL SMALL .CODE ORG 100h TData: JMP Proses Test_Angka DW 65535 ; Angka yang akan dicetak Proses: MOV AX,Test_Angka ; AX = angka yang akan dicetak MOV BX,10 ; BX = penyebut XOR CX,CX ; CX = 0 Ulang : XOR DX,DX ; Cegah sisa bagi menjadi pembilang ! DIV BX ; Bagi angka yang akan dicetak dengan 10 PUSH DX ; Simpan sisa bagi dalam stack INC CX ; CX ditambah 1 CMP AX,0 ; Apakah hasil bagi sudah habis ? JNE Ulang ; Jika belum, ulangi lagi ! Cetak : POP DX ; Ambil 1 angka yang disimpan ADD DL,'0' ; Ubah angka tersebut dalam kode ASCII MOV AH,02 ; Interrupt 21h Service 02h INT 21h ; Cetak angka tersebut LOOP Cetak ; ulangi INT 20h END TData

Mencetak angka dalam hexadesimal Untuk mencetak angka dalam bentuk hexadesimal, adalah lebih mudah daripada mencetak angka delam bentuk desimal. Hal ini dikarenakan sifat dari hexadesimal yang setiap angkanya terdiri atas 4 bit. Untuk itu anda bisa membuat suatu tabel untuk hexadesimal yang terdiri atas angka 0 sampai F. Kemudian ambillah angka yang ingin dicetak secara 4 bit untuk digunakan sebagai penunjuk dalam mencetak angka tersebut.

Cetak MACRO MOV DL,Tabel_Hex[BX] ; MACRO untuk MOV AH,02 ; mencetak INT 21h ; huruf ke BX pada tabel_Hex ENDM .MODEL SMALL .CODE ORG 100h TData : JMP Proses Tabel_Hex DB '0123456789ABCDEF' Test_Angka DB 255 ; Angka yang akan dicetak 255=FFh Proses: SUB BH,BH ; Jadikan BH=0 MOV BL,Test_Angka ; BL = angka yang akan dicetak PUSH BX ; Simpan angka tersebut MOV CL,4 ; Ambil 4 bit tinggi dari + SHR BL,CL ; BL untuk dicetak Cetak ; Cetak 1 angka hexa tingginya POP BX ; Ambil angka yang disimpan AND BL,0Fh ; Ambil 4 bit rendah dari + Cetak ; BL untuk dicetak INT 20h END TData