📄 runian.asm
字号:
fuhao macro
local cufuhao
cmp al,'*'
jz cunfuhao
cmp al,'/'
jz cunfuhao
cmp al,'+'
jz cunfuhao
cmp al,'-'
jz cunfuhao
sub al,al
cunfuhao:
mov op2,al
ENDM
STACK SEGMENT PARA STACK 'STACK'
DW 128 DUP(?)
STACK ENDS
;**************************************************************
EXTRA SEGMENT PARA 'EXTRA'
EXTRA ENDS
;**************************************************************
DATA SEGMENT PARA 'DATA'
op1 dw 0
op2 db 0
ten db 10
wten dw 10
Str db 13,10,'error!',13,10,'$'
DATA ENDS
;**************************************************************
CODE SEGMENT PARA 'CODE'
ASSUME CS:CODE,DS:DATA,SS:STACK,ES:EXTRA
MAIN PROC FAR
START:
MOV AX,DATA
MOV DS,AX ;Let DS register have data segment address
MOV AX,EXTRA
MOV ES,AX ;Let ES register have extra segment address
;**************************************************************
get1:sub bx,bx
sub cx,cx
sub dx,dx
mov ah,01
int 21H
cmp al,1bH
JZ quit2
cmp al,30H
JB error
cmp al,39H
JA error
;get2:
sub al,30H
sub ah,ah
mov bx,ax
get2:
mov ah,01
int 21H
cmp al,30H
JB yusuanfu
cmp al,39H
JA yusuanfu
sub al,30H
mov cl,al
mov ax,bx
mul wten
mov bx,ax
sub ch,ch
add bx,cx
jmp get2
yusuanfu:
mov op1,bx
fuhao
cmp al,0
jz error
sub bx,bx
get3:
mov ah,01
int 21H
cmp al,'='
jz yusuan
cmp al,30H
JB error
cmp al,39H
JA error
sub al,30H
mov cl,al
mov ax,bx
mul wten
mov bx,ax
sub ch,ch
add bx,cx
jmp get3
yusuan:
mov ax,op1
mov cl,op2
cmp cl,'+'
jnz jian
add ax,bx
jmp quit
jian:
cmp cl,'-'
jnz cheng
sub ax,bx
jmp quit
cheng:
cmp cl,'*'
;mov ax,bx
jnz chu
mul bx
jmp quit
chu:
cmp cl,'/'
;mov bx,ax
sub dx,dx
div bx
jmp quit
error:
lea dx,Str
mov ah,09
int 21H
JMP get1
quit:
mov bx,ax
sub dx,dx
div wten
mov cl,dl;个位数
div ten;
mov ch,ah;十位数
sub ah,ah
div ten;ah 百位数,al千位数
mov bh,al
mov bl,ah
mov dl,bh
add dl,30H
mov ah,02
int 21h
mov dl,bl
add dl,30H
int 21h
mov dl,ch
add dl,30H
int 21H
mov dl,cl
add dl,30H
int 21H
mov dl,13
int 21H
mov dl,10
int 21H
jmp get1
quit2:
mov ax,4c00H
int 21H
MAIN endp
CODE ends
end START
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -