- Memahami penggunaan EMU 8086
- Mengetahui program mencetak 3 digit angka ke layar
- Emulate : untuk menjalankan emulator kode program yang kita buat
- Compile : untuk membuat (compile) “binary executable file” atau ekstensi “.com” atau “.exe” dari kode program.
- Run : menjalankan aplikasi dari emulator yang dihasilkan (execute).
- Single Step : Menjalankan aplikasi dengan cara tracing (diproses perbaris kode program).
Representasi Bilangan dalam Register
Mikroprosesor
Intel menggunakan register sebagai penyimpanan data sementara dalam operasi
aritmatika dan logika. Untuk mencetak angka 3 digit, angka tersebut perlu
dipecah menjadi ratusan, puluhan, dan satuan, dan masing-masing digit
dikonversi menjadi karakter ASCII sebelum ditampilkan.
Konversi Bilangan ke Format
ASCII
Untuk
menampilkan bilangan sebagai karakter, nilai numerik harus dikonversi menjadi
karakter ASCII. Angka 0 dalam ASCII memiliki nilai 30H, sehingga setiap
digit numerik ditambahkan dengan 30H untuk mengubahnya menjadi
karakter ASCII yang dapat ditampilkan.
Penggunaan Instruksi
Aritmatika
Instruksi
seperti DIV digunakan untuk membagi angka menjadi digit-digit yang
lebih kecil (misalnya, ratusan, puluhan, dan satuan). Mikroprosesor Intel
menggunakan register AX untuk menyimpan nilai yang akan dibagi
dan AL untuk hasil pembagian digit.
Instruksi Interrupt DOS (INT
21H)
Interrupt INT
21H adalah layanan yang disediakan oleh DOS untuk berbagai fungsi,
termasuk menampilkan karakter di layar. Untuk menampilkan karakter, biasanya
digunakan fungsi AH = 02H di mana karakter yang akan ditampilkan
harus ditempatkan di register DL.
Pemecahan Bilangan Menjadi
Digit-Digitnya
Misalnya, untuk mencetak angka
123, diperlukan beberapa langkah:
·
Pembagian pertama: Angka dibagi 100
untuk mendapatkan digit ratusan.
·
Pembagian kedua: Sisanya dibagi 10
untuk mendapatkan digit puluhan.
·
Sisa pembagian kedua: Menjadi digit
satuan.
Penggunaan Register dalam
Pembagian
Register AX, DX, dan AL digunakan untuk menyimpan angka, hasil pembagian, dan sisa. AX sering digunakan sebagai akumulator utama, sementara DX dapat digunakan untuk menyimpan sisa saat melakukan pembagian.
4. Prinsip Kerja[Kembali]
1. MULAI:
Label untuk menandai awal program.
2. MOV AX,
469
Memasukkan angka 469 ke dalam register AX. Angka ini akan
dipecah menjadi digit-digitnya.
3. XOR CX,
CX
Mengosongkan register CX (set CX ke 0). CX digunakan
untuk menghitung berapa banyak digit yang ada.
4. ULANG1:
Label untuk memulai loop pertama.
5. MOV BH,
10
Memasukkan nilai 10 ke register BH. Ini digunakan sebagai
pembagi untuk memisahkan digit.
6. DIV BH
Membagi AX dengan BH (10). Hasil pembagian disimpan
di AL, dan sisa pembagian (digit paling kanan) disimpan di AH.
7. PUSH AX
Menyimpan nilai AX (hasil pembagian) ke dalam stack. Stack digunakan
untuk menyimpan digit sementara sebelum dicetak.
8. INC CX
Menambahkan 1 ke CX. Ini menghitung jumlah digit yang telah diproses.
9. XOR AH,
AH
Mengosongkan register AH (set AH ke 0). Ini dilakukan
untuk memastikan register AH siap untuk pembagian berikutnya.
10. CMP
AL, 00
Membandingkan nilai AL dengan 0. Jika AL adalah 0,
berarti tidak ada digit tersisa untuk diproses.
11. JNE
ULANG1
Jika AL tidak sama dengan 0, lompat kembali ke ULANG1 untuk
mengulang pembagian dengan digit berikutnya.
12. ULANG2:
Label untuk memulai loop kedua yang mencetak digit.
13. POP DX
Mengambil nilai dari stack ke DX. Ini adalah digit paling kanan yang sudah
diproses sebelumnya.
14. MOV
DL, DH
Memindahkan sisa pembagian (digit) dari DH ke DL agar dapat
dicetak.
15. ADD
DL, 30H
Menambahkan 30H ke DL untuk mengonversi digit numerik
menjadi karakter ASCII. Digit 0 (0x00) menjadi ‘0’ (0x30), 1 menjadi ‘1’
(0x31), dan seterusnya.
16. MOV
AH, 02
Mengatur fungsi INT 21H untuk mencetak karakter dari register DL.
17. INT
21H
Menampilkan karakter dalam DL pada layar.
18. LOOP
ULANG2
Mengulangi pencetakan sampai semua digit yang tersimpan di stack telah
ditampilkan. Mengurangi CX setiap kali instruksi dijalankan
hingga CX mencapai 0.
19. MOV
AH, 4CH
Mengatur fungsi INT 21H untuk keluar dari program.
20. INT
21H
Mengakhiri program dan kembali ke DOS.
Download program disini
Tidak ada komentar:
Posting Komentar