📄 jisuanqi.asm
字号:
include C:\fen.mac
DATAS SEGMENT
opr1 dw ?
opr2 dw ?
sum dw ?
sum2 dw ?
fuhao db ?
lap db ?
tap db ?
tap2 db ?
biaoji db ?
messg1 db 'Please input the expression:',13,10,'$'
messg2 db 13,10,'Input error!',13,10,'$'
DATAS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS
START:
MOV AX,DATAS
MOV DS,AX
here:lea dx,messg1
mov ah,9
int 21h
mov si,0
mov di,0
mov cx,10
mov bl,0
input:mov ah,1
int 21h
cmp al,'+'
jz store
cmp al,'-'
jnz jixu
inc bl
mov tap,bl
cmp biaoji,1 ;换?
jz store
cmp bl,1
jz input
jixu: push bx
cmp al,'*'
jz store
cmp al,'/'
jz store
cmp al,30h
jl exit1
cmp al,39h
jg exit1
mov bl,1
mov biaoji,bl
sub al,30h
mov ah,0
mov bx,sum
mov opr1,bx
add opr1,ax
mov ax,opr1
mul cx
mov sum,ax
pop bx
jmp input
store:mov fuhao,al
mov bl,0
input2:mov ah,1
int 21h
cmp al,'-'
jnz jixu2
inc bl
mov tap2,1
cmp bl,1
jz input2
jixu2: cmp al,'='
jz jisuan
cmp al,30h
jl exit
cmp al,39h
jg exit
sub al,30h
mov ah,0
mov bx,sum2
mov opr2,bx
add opr2,ax
mov ax,opr2
mul cx
mov sum2,ax
jmp input2
jisuan:mov bl,fuhao
cmp bl,'+'
jz jiafa
cmp bl,'-'
jz jianfa
cmp bl,'*'
jz chengfa
cmp bl,'/'
jz chufa
jiafa:mov ax,opr1
mov bx,opr2
mov cl,tap
mov ch,tap2
add cl,ch
cmp cl,2
jz jiafa1
cmp cl,1
jz jiafa2
add ax,bx
fen ax
jmp exit
jiafa1:add ax,bx
push ax
mov ah,02
mov dl,'-'
int 21h
pop ax
fen ax
jmp exit
jiafa2:mov cl,tap
cmp cl,1
jnz jiafa4
jiafa3:cmp ax,bx
ja opr1dayuopr2
xchg ax,bx
sub ax,bx
fen ax
jmp exit
opr1dayuopr2:push ax
mov ah,02
mov dl,'-'
int 21h
pop ax
sub ax,bx
fen ax
jmp exit
jiafa4:cmp ax,bx
ja x1
xchg ax,bx
push ax
mov ah,02
mov dl,'-'
int 21h
pop ax
sub ax,bx
fen ax
jmp exit
x1: sub ax,bx
fen ax
jmp exit
jianfa:mov ax,opr1
mov bx,opr2
mov cl,tap
mov ch,tap2
add cl,ch
cmp cl,3
jz jianfa1
cmp cl,2
jz jianfa2
cmp cl,1
jz jianfa3
cmp ax,bx
ja x3
xchg ax,bx
push ax
mov ah,02
mov dl,'-'
int 21h
pop ax
x3: sub ax,bx
fen ax
jmp exit
jianfa1:cmp ax,bx
ja x2
xchg ax,bx
sub ax,bx
fen ax
jmp exit
x2:push ax
mov ah,02
mov dl,'-'
int 21h
pop ax
sub ax,bx
fen ax
jmp exit
jianfa2:mov cl,tap2
cmp cl,1
jnz x6
add ax,bx
fen ax
jmp exit
x6: add ax,bx
push ax
mov ah,02
mov dl,'-'
int 21h
pop ax
fen ax
jmp exit
jianfa3:mov cl,tap
cmp cl,1
jz x4
add ax,bx
fen ax
jmp exit
x4:cmp ax,bx
ja x5
xchg ax,bx
sub ax,bx
push ax
mov ah,02
mov dl,'-'
int 21h
pop ax
fen ax
jmp exit
x5:sub ax,bx
fen ax
jmp exit
chengfa:mov cl,tap
mov ch,tap2
add cl,ch
cmp cl,0
jz x7
cmp cl,2
jz x7
mov ah,02
mov dl,'-'
int 21h
x7: mov ax,opr1
mov cx,opr2
mul cx
fen ax
jmp exit
chufa: mov cl,tap
mov ch,tap2
add cl,ch
cmp cl,0
jz x8
cmp cl,2
jz x8
mov ah,02
mov dl,'-'
int 21h
x8: mov dx,0
mov ax,opr1
mov cx,opr2
div cx
push dx
fen ax
pop dx
cmp dx,0
jz exit
push dx
mov ah,02
mov dl,'.'
int 21h
pop dx
mov cx,5
lop: mov ax,dx
mov bx,10
mul bx
mov bx,opr2
div bx
push dx
add al,30h
mov ah,02
mov dl,al
int 21h
pop dx
loop lop
jmp exit
exit1: lea dx,messg2
mov ah,9
int 21h
jmp here
exit: MOV AH,4CH
INT 21H
CODES ENDS
END START
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -