Bahan Presentasi Ini Dibuat Untuk Memenuhi
Tugas Mata Kuliah Mikroprosesor Kelas B
Dosen : Darwison, M.T
Oleh :
Siti Sarah Fitrianisa
1610951017
Jurusan Teknik Elektro
Fakultas Teknik
Referensi :
- John Crisp, Introduction to Microprosessor and Microcontrollers, 2nd edition, Newnessm 2004.
- Darwison, 2007 “ Teori, Rancangan ,Simulasi Dan Aplikasi Mikroprosesor Dan Mikrokontroller” ISBN: 978-602-9487-09-1”, CV Ferila, Padang
OPERASI PEMBAGIAN
Tujuan [Kembali]
- Memahami pembuatan program dengan bahasa assembly
- Memahami bagaimana operasi aritmatika pembagian dengan bahasa assembly
Alat dan Bahan [Kembali]
Alat yang dibutuhkan : Software Emulator 8086
Tata Penulisan : DIV(Register)
Tata Penulisan : DIV(Register)
Listing Program [Kembali]
Gambar 1. Program Bagi dengan Instruksi DIV
Gambar 3. Hasil Program Bagi dengan Instruksi DIV
Program ini merupakan program pembagian 1, dimana :
mov cx, 0009h ; melakukan loop dengan perincian 1-9 {9 angka}
mov bh, 01h ; isi register bh telah diset angka 1
=> Kedua pernyataan di atas merupakan suatu pernyataan di luar loop yang menyatakan berapa banyak akan melakukan loop (pada CX) dan elemen pertama pada pembagian
ulangi:
mov AH, 02H ; menset fungsi/ service interupt{int 21h}
mov dl, 0dh ; 0D = turun satu baris
int 21H ; mencetak kode ASCII karakter dl ke layar
mov dl, 0aH ; OA membuat kursor ke kiri
int 21H
=> Pada 5 baris di atas akan melakukan perintah berupa turun satu baris ( enter)
mov dl,bh ; percetakan bilangan pertama
ADD dl,30H ; BH+30H untuk ASCII angka {dimana 1+0=1)
mov AH,02H ; service untuk mencetak karakter
int 21H ; cetak angka
=> Pada 4 baris di atas akan melakukan percetakan bilangan pertama, dimana akan selalu menambahkan sebuah bilangan (0-9), yaitu disalinnya nilai dari register BH ke register DL
, dimana pada awal program tadi telah diset nilai register BH yaitu '1' sehingga untuk saat ini nilai pada register DL adalah '1'.
mov dl,3aH ; 3a merupakan kode ASCII untuk karakter ':'
int 21H ; cetak ':'
mov dl, 31H ; angka pembagi untuk register ini adalah '1' (karena 31H pada ASCII merupakan angka '1')
int 21H ; cetak angka '1'
mov dl,3dH ; 3d merupakan kode ASCII untuk karakter '='
int 21H ; cetak karakter '='
=> Pada baris di atas akan di cetak karakter ' : ' dengan kode ASCII-nya adalah 3a ,lalu angka '1' dan tanda '='
mov al,bh ; dibagi register BL dengan isi register AL yang telah diset 1
xor ah,ah ; register AH dibuat NOL / setiap bilangan yang di XOR dengan bilangan sama pasti menghasilkan bilangan 0
mov bl, 01H ; diset register bl dengan "1"
div bl ; AX : BL = hasil di AL, sisa di AH
mov dl,al
add dl, 30h
mov ah, 02h
int 21h
mov dl,0dh ; OD turun satu baris
int 21h ;
mov dl,0ah ; 0A membuat kursor ke kiri
int 21h ; cetak angka
inc bh ; bh ditambah 1
=>Pada baris ini register BH ditambah dengan 1
loop ulangi ; ulangi hingga nilai CX bernilai 0
=>Pada baris ini dilakukan loop ke baris mov dl, 0dh(label diulangi) sampai dengan 9 kali, jika sudah 9 kali, akhir program
;stop program dan kembali ke sistem DOS
mov ah, 4ch
int 21h