📄 yan.asm
字号:
answer macro
mov ah,01h
int 21h
endm
display macro buffer
mov dx,offset buffer
mov ah,09h
int 21h
endm
data segment
aa db 13,10,'$'
bb db 13,10,'please press y to contine else press any to exit: $'
message1 db 10, 13, 'please choose your + or -: $'
message2 db 10,13,'you are right $'
message3 db 10,13,'the right question is: $'
message4 db 10,13,'sorry,please answer again $'
message5 db 10,13,'please input your answer: $'
message6 db 10,13,'if the answer below zero,put the opposite answer.$'
data ends
stack segment
db 4 dup(?)
stack ends
code segment
zz proc far
assume ds:data,cs:code,ss:stack
xian:
display aa
mov ah,0
;_____________显示第一个字符
int 1ah
mov ax,dx
and ah,3
mov dl,32h
div dl
mov bl,ah
;************************************************
push dx
push ax
push bx
xor ah,ah
mov al,bl
mov bl,0ah
div bl
push ax
add al,30h
mov dl,al
mov ah,02h
int 21h
pop ax
add ah,30h
mov dl,ah
mov ah,02h
int 21h
pop bx
pop ax
pop dx
;*****************************************
mov dl,bl
push dx
mov dx,' '
mov ah,02h
int 21h
;___________显示第二个字符
int 1ah
mov ax,dx
and ah,3
mov dl,32
div dl
mov bl,ah
;************************************************
push dx
push ax
push bx
xor ah,ah
mov al,bl
mov bl,0ah
div bl
push ax
add al,30h
mov dl,al
mov ah,02h
int 21h
pop ax
add ah,30h
mov dl,ah
mov ah,02h
int 21h
pop bx
pop ax
pop dx
;*****************************************
mov al,bl
push ax
xor ax,ax
mov ax,data
mov ds,ax
mov cx,3
display bb
answer
cmp al,'y'
jz contine
mov ah,4ch
int 21h
contine:
display message1
answer
cmp al,'+'
jz error
cmp al,'-'
jz xia
xia:
jmp near ptr exit
mov ah,4ch
int 21h
error:
display message5
pop ax
pop dx
add al,dl
xor ah,ah
push ax
mov bx,ax
;_______________加法计算结果
mov cx,03h
xun:
answer
cmp al,'9'
jbe jian
sub al,37h
and al,0fh
jian:
mov dl,al
shl dl,01h
shl dl,01h
shl dl,01h
shl dl,01h
answer
cmp al,'9'
jbe jia
sub al,07h
jia:
sub al,30h
and al,0fh
add al,dl
;*****************************************
xor ah,ah
mov dl,10h
div dl
shl al,01h
mov dl,al
shl al,01h
shl al,01h
add al,dl
add al,ah
;*******************************************
cmp al,bl
jnz heihei
jz gaga
heihei:
display message4
loop xun
display message3
;_______________显示正确加法结果
push dx
push ax
push bx
xor ah,ah
mov al,bl
mov bl,0ah
div bl
push ax
add al,30h
mov dl,al
mov ah,02h
int 21h
pop ax
add ah,30h
mov dl,ah
mov ah,02h
int 21h
pop bx
pop ax
pop dx
;*****************************************
jmp near ptr xian
;_______________
gaga:
display message2
;_________________返回
jmp near ptr xian
;_______________
exit:
display message5
display message6
pop ax
pop dx
cmp dl,al
jb fu
sub dl,al
mov al,dl
mov bx,ax
jmp xiaz
fu:
sub al,dl
mov bx,ax
;_______________减法计算结果
xiaz:
mov cx,03h
xunn:
answer
cmp al,'9'
jbe jianm
sub al,37h
and al,0fh
jianm:
mov dl,al
shl dl,01h
shl dl,01h
shl dl,01h
shl dl,01h
answer
cmp al,'9'
jbe jiam
sub al,07h
jiam:
sub al,30h
and al,0fh
add al,dl
;*****************************************
xor ah,ah
mov dl,10h
div dl
shl al,01h
mov dl,al
shl al,01h
shl al,01h
add al,dl
add al,ah
;*******************************************
cmp al,bl
jnz heiheim
jz gagam
heiheim:
display message4
;______________________显示正确的减法结果
loop xunn
display message3
;************************************************
push dx
push ax
push bx
xor ah,ah
mov al,bl
mov bl,0ah
div bl
push ax
add al,30h
mov dl,al
mov ah,02h
int 21h
pop ax
add ah,30h
mov dl,ah
mov ah,02h
int 21h
pop bx
pop ax
pop dx
;*****************************************
jmp near ptr xian
;_______________
gagam:
display message2
;_________________返回
jmp near ptr xian
;____________
zz endp
code ends
end xian
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -