这是我的汇编代码。它不工作..我试图用另一种方式写它,但这给了我其他错误我使用emu8086 .....在第一页中将有3页(1,2,3),您必须选择页面。
1-学习2考试3退出
完成测验后,将会有标记。
multi-segment executable file template.
data segment
firstpage db "welcome to learn math ",10,13,"create by:saad ",10,13,"1.study",10,13,"2.exam",10,13,"3.exit" ,10,13,"$"
q1 db "2*1=$"
q2 db "2*2=$"
q3 db "2*3=$"
q4 db "2*4=$"
q5 db "2*5=$"
std1 db "2*1=1 $"
std2 db "2*2=4 $"
std3 db "2*3=6 $"
std4 db "2*4=8 $"
std5 db "2*5=10 $"
nl db ,10,13,"$"
mark0 db "your mark us:0 $"
mark1 db "your mark us:20 $"
mark2 db "your mark us:40 $"
mark3 db "your mark us:60 $"
mark4 db "your mark us:80 $"
mark5 db "your mark us:100 $"
count db 0
ends
stack segment
dw 128 dup(0)
ends
code segment
start:
mov ax, data
mov dx, ax
lea dx, firstpage
mov ah, 9
int 21h
mov ah,7
int 21h
cmp al,3
je t1
t1: mov ax,3
int 21h
lea dx,std1
int 21h
mov ah,7
int 21h
lea dx ,nl
mov ah,9
int 21h
lea dx,std2
int 21h
mov ah,7
int 21h
lea dx ,nl
mov ah,9
int 21h
lea dx,std3
int 21h
mov ah,7
int 21h
lea dx ,nl
mov ah,9
int 21h
lea dx,std4
int 21h
mov ah,7
int 21h
lea dx ,nl
mov ah,9
int 21h
lea dx,std5
int 21h
mov ah,7
int 21h
lea dx ,nl
mov ah,9
int 21h
mov ah,7
int 21h
lea dx ,q1
mov ah,9
int 21h
lea dx ,nl
mov ah ,9
int 21h
lea dx ,q2
mov ah,9
int 21h
lea dx ,nl
mov ah ,9
int 21h
lea dx ,q3
mov ah,9
int 21h
lea dx ,nl
mov ah ,9
int 21h
lea dx ,q4
mov ah,9
int 21h
lea dx ,nl
mov ah ,9
int 21h
lea dx ,q5
mov ah,9
int 21h
lea dx ,nl
mov ah ,9
int 21h
mov ah,1
int 21h
cmp count,0
je mark0
cmp count,1
je mark1
cmp count, 2
je mark2
cmp count,3
je mark3
cmp count,4
je mark4
cmp count,5
je mark5
mark0:lea dx,mark0
mov ah,9
int 21h
jmp soof
mark1:lea dx,mark1
mov ah,9
int 21h
jmp soof
mark2:lea dx,mark2
mov ah,9
int 21h
jmp soof
mark3:lea dx,mark3
mov ah,9
int 21h
jmp soof
mark4:lea dx,mark4
mov ah,9
int 21h
jmp soof
mark5:lea dx,mark5
mov ah,9
int 21h
jmp soof
mov ax, 4c00h
int 21h
ends
end start
nl db ,10,13,"$"
多余的逗号转换为额外的零。您得到的是db 0,10,13,"$"
mov ax, data mov dx, ax
要设置段寄存器,您需要编写:
mov ax, @data
mov ds, ax ; Do read carefully: DS
mov ah,7 int 21h cmp al,3 je t1
当用户按下标有“ 3”的键时,您将在AL
中收到代码51。因此,您的支票应为cmp al, 51
或更好的cmp al, '3'
。
t1: mov ax,3 <<<<<< This sets AH=0 int 21h lea dx,std1 int 21h mov ah,7 int 21h
由于AH=0
是ProgramExit函数,因此以下代码均不会执行。
mov ah,7 int 21h
您的程序中包含很多这些,您不会使用AL
中的结果。如果这些是您的调试工作,则应该删除它们在此论坛上的[[之前。现在,对于任何阅读您的程序的人来说,这都很令人困惑。