Menu.ASM
INCLUDE PUSTAKA.MCRPustaka.ASM
.MODEL SMALL
.CODE
ORG 100h
Mulai : JMP Proses
a Dw 16
b Dw 8
c Dw ?
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,' 5. Kuadrat (Pangkat Dua) $'
Kal8 DB 13,10,' 6. Akar A $'
Kal9 DB 13,10,'Masukkan Pilihan : $'
Kal10 DB 13,10,'A X B = $'
Kal11 DB 13,10,'A + B = $'
Kal12 DB 13,10,'A - B = $'
Kal13 DB 13,10,'A : B = $'
Kal14 DB 13,10,'A Pangkat 2 = $'
Kal15 DB 13,10,'Akar A = $'
Kal16 DB 13,10,'Pilihan Salah ! $'
Kal17 DB 13,10,'Pilih Menu Lain? [Y/N]: $'
Jwb db 26,?,26 dup(?)
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
Cetak_Klm Kal8
Cetak_Klm Kal9
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
cmp byte ptr [bx],'4'
Je Bagi
cmp byte ptr [bx],'5'
Je Pangkat
cmp byte ptr [bx],'6'
Je Akar
Jne Salah
Salah : Cetak_Klm Kal14
JMP Proses
Kali :
Cetak_Klm Kal10
Perkalian a,b
JMP Cetak
Tambah : Cetak_Klm Kal11
Penjumlahan a,b
JMP Cetak
Kurang : Cetak_Klm Kal12
Pengurangan a,b
JMP Cetak
Bagi : Cetak_Klm Kal13
Pembagian a,b
JMP Cetak
Pangkat : Cetak_Klm Kal14
Kuadrat a
JMP Cetak
Akar : Cetak_Klm Kal15
AkarKuadrat a
JMP Cetak
Cetak :
tampil
Ulang :
Cetak_Klm Kal17
Catat Jwb
lea bx,Jwb+2 ; menunjuk byte ke-2 dari jawab
cmp byte ptr [bx],'Y'
JE Lanjutkan
cmp byte ptr [bx],'y'
JE Lanjutkan
JNE Keluar
Lanjutkan : JMP Proses
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
AkarKuadrat Macro a
MOV CX,a
MOV AX,-1
CWD
XOR BX,BX
Loopsqrt:
INC AX
INC DX
INC DX
ADD BX,DX
CMP BX,CX
JBE Loopsqrt
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