Menu.ASM :
INCLUDE PUSTAKA.MCRPustaka.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
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
Sign up here with your email
ConversionConversion EmoticonEmoticon