Senin, 09 Juli 2012

Program Perkalian 1 digit pada Assembler


;program menghitung axb, a dan b diinput
 
code segment
    assume cs:code
    org 100h
mulai:jmp awal
psn db 13,10, 'Masukan angka pertama:$'
psn1 db 13,10, 'Masukan angka kedua :$'
ganti db 13,10,'$'

awal:
    mov dx,offset psn
    call inputbil
    mov cl,al
   
    mov dx,offset psn1
    call inputbil
    mov ch,al

    mov dx,offset ganti
    call tampil

    mov dl,cl
    call cetakhrf
   
    mov dl,'x'
    call cetakhrf

    mov dl,ch
    call cetakhrf

    mov dl,'='
    call cetakhrf
 
    sub ch,'0'  
    sub cl,'0'
    mov al,cl
    mul ch
    add al,'0'
    mov cl,al
    mov dl,cl
    call cetakhrf

    int 20h

tampil proc
   mov ah,9
   int 21h
   ret
tampil endp

cetakhrf proc
   mov ah,2
   int 21h
   ret
cetakhrf endp

inputbil proc
ulang:
    call tampil
    mov ah,1         ; minta input keyboard
    int 21h
   
    cmp al,'0'       ; 0?
    jge ditpl        ; lebih besar atau sama dengan 0, bandingkan dengan '9'
    jmp ulang        ;tidak --->ulangi

ditpl:
    cmp al,'9'      ;apakah 9?
    jg ulang     ; lebih dari '9' berarti non angka, ulangi langka pertama
    ret
inputbil endp

code ends
     end mulai

Tidak ada komentar:

Posting Komentar