materi mikro

DIV (Register)

Program pembagian dengan instruksi DIV


                     Gambar 1. Program Bagi dengan Instruksi DIV


                                              Gambar 2. Program Bagi dengan Emulator 8086


                  Gambar 3. Hasil Program Bagi dengan Instruksi DIV

Analisa Program:

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             

No comments:

Post a Comment