Menu on Assembly

Code to create menu on assembly.
Menu.ASM :
INCLUDE  PUSTAKA.MCR
.MODEL SMALL
.CODE
ORG 100h

Mulai :  JMP  Proses
         Kal0 DB 13,10,'A = $'
         Kal1 DB 13,10,'B = $'
         Kal2 DB 13,10,'Menu : $'
         Kal3 DB 13,10,'1. Perkaliam $'
         Kal4 DB 13,10,'2. Penjumlahan $'
         Kal5 DB 13,10,'3. Pengurangan $'
         Kal6 DB 13,10,'4. Pembagian $'       
         Kal7 DB 13,10,'Masukkan Pilihan : $'
         Kal8 DB 13,10,' X $'
          Kal9 DB 13,10,' + $'
         Kal10 DB 13,10,' - $'
         Kal11 DB 13,10,' : $'
         Kal12 DB 13,10,' = $'
         Jwb   db 26,?,26 dup(?)
       
         a Dw 4
         b Dw 8
         d Dw 0

   

Proses:
            Cetak_Klm Kal0
            Cetak_Angka a
            Cetak_Klm Kal1
            Cetak_Angka b   
            Cetak_Klm Kal2
            Cetak_Klm Kal3
            Cetak_Klm Kal4
            Cetak_Klm Kal5
            Cetak_Klm Kal6
            Cetak_Klm Kal7

            Catat Jwb
            lea bx,Jwb+2        ; menunjuk byte ke-2 dari jawab
            cmp byte ptr [bx],'1'
            JE Kali
            cmp byte ptr [bx],'2'
            Je Tambah
            cmp byte ptr [bx],'3'
            Je Kurang
            Jne Bagi
           
Kali        :
            Cetak_Klm Kal8
            Perkalian a,b
            tampil
            JMP Keluar
Tambah        :           
            Cetak_Klm Kal9
            Penjumlahan a,b
            tampil
            JMP Keluar   
Kurang        :
            Cetak_Klm Kal10
            Pengurangan a,b
            tampil
            JMP Keluar
Bagi        :
            Cetak_Klm Kal11
            Pembagian a,b
            tampil
            JMP Keluar

       
Keluar  :
         INT   20h
END      Mulai
Pustaka.MCR
Cetak_Kar    Macro Kar
            MOV AH,02
            MOV DL,Kar
            INT 21H
            EndM
          
Cetak_Klm  MACRO  Klm        ; Macro untuk mencetak 
           LEA    DX,Klm     ; kalimat 
           MOV    AH,09
           INT    21h
           ENDM
   
Catat        MACRO j
            mov ah,0ah
            lea dx,j
            int 21h
            ENDM
     
Cetak_Angka MACRO Angka
            mov ax,angka
            Tampil
            endm
      
Perkalian MACRO a,b
            MOV AX,a
            Mul b
            endm
          
Penjumlahan MACRO a,b
            MOV AX,a
            ADD AX,b
            endm
          
Pengurangan MACRO a,b
            MOV AX,a
            SUB AX,b
            endm
          
Pembagian MACRO a,b
            SUB  DX,DX
            MOV AX,a
            DIV b
            endm
Kuadrat MACRO a
            MOV AX,a
            Mul a
            endm
Akar    MACRO a
        sqrt:
        push cx ; input variable = cx
        mov cx,0FFFFh
        cmp dx,cx ; if dx = 0FFFFh then square root = 0FFFFh
        jz sqdone
        sqloop:
        push ax
        push dx
        div cx ; divide by variable
        add cx,ax
        rcr cx,1 ; calculate average for variable
        cmp ax,cx
        pop dx
        pop ax
        jc sqloop
        sqdone:
        xchg ax,cx
        pop cx
        ret
        endm
          
Tampil Macro
            local looping, cetak
            mov bx,10 ;bx=10
            xor cx,cx ;cx=0
            looping:
            xor dx,dx
            div bx ;dx=ax/bx
            push dx ;push untuk menyimpan data ke dalam steck
            inc cx
            cmp ax,0
            jne looping
            cetak:
            pop dx ;pop untuk mengambil data dari stack
            add dl,'0' ;ubah angka menjadi code ascii
            mov ah,02h
            int 21h
            loop cetak
            endM
Previous
Next Post »