Assembly 字母等级不为';t返回基于条件的值
在这段代码中,我尝试生成最多25个介于50和100之间(含50和100)的随机整数,具体取决于用户输入,计算字母等级并打印整数和字母等级Assembly 字母等级不为';t返回基于条件的值,assembly,masm,masm32,irvine32,Assembly,Masm,Masm32,Irvine32,在这段代码中,我尝试生成最多25个介于50和100之间(含50和100)的随机整数,具体取决于用户输入,计算字母等级并打印整数和字母等级 AlphaGrade PROC USES EAX ;letter grade cmp EAX, 90 jae gradeA ;jump if grade>= 90 cmp EAX, 80 jae gradeB ;jump if
AlphaGrade PROC USES EAX ;letter grade
cmp EAX, 90
jae gradeA ;jump if grade>= 90
cmp EAX, 80
jae gradeB ;jump if grade >= 80
cmp EAX, 70
jae gradeC ;jump if grade >= 70
cmp EAX, 60
jae gradeD ;jump if grade >= 60
cmp EAX, 0
jae gradeF ;jump if grade < 60
gradeA:
mov al, 'A' ;mov grade A to al
call WriteChar ;display the letter
jmp okay ;jump to okay
gradeB:
mov al, 'B' ;mov grade B to al
call WriteChar ;display the letter
jmp okay ;jump to okay
gradeC:
mov al, 'C' ;mov grade C to al
call WriteChar ;display the letter
jmp okay ;jump to okay
gradeD:
mov al, 'D' ;mov grade D to al
call WriteChar ;display the letter
jmp okay ;jump to okay
gradeF:
mov al, 'F' ;mov grade F to al
call WriteChar ;display the letter
jmp okay ;jump to okay
okay:
ret
AlphaGrade ENDP
我的问题是字母等级不会返回基于刻度的字母等级(例如:0-59=F,90-100=A)。它一直在打印F
这是我返回字母等级的代码
AlphaGrade PROC USES EAX ;letter grade
cmp EAX, 90
jae gradeA ;jump if grade>= 90
cmp EAX, 80
jae gradeB ;jump if grade >= 80
cmp EAX, 70
jae gradeC ;jump if grade >= 70
cmp EAX, 60
jae gradeD ;jump if grade >= 60
cmp EAX, 0
jae gradeF ;jump if grade < 60
gradeA:
mov al, 'A' ;mov grade A to al
call WriteChar ;display the letter
jmp okay ;jump to okay
gradeB:
mov al, 'B' ;mov grade B to al
call WriteChar ;display the letter
jmp okay ;jump to okay
gradeC:
mov al, 'C' ;mov grade C to al
call WriteChar ;display the letter
jmp okay ;jump to okay
gradeD:
mov al, 'D' ;mov grade D to al
call WriteChar ;display the letter
jmp okay ;jump to okay
gradeF:
mov al, 'F' ;mov grade F to al
call WriteChar ;display the letter
jmp okay ;jump to okay
okay:
ret
AlphaGrade ENDP
AlphaGrade程序使用EAX;字母等级
cmp EAX,90
在读A级;如果等级>=90,则跳转
cmp EAX,80
乙级;如果等级>=80,则跳转
cmp EAX,70
乙级;如果等级>=70,则跳转
cmp EAX,60
jae评分;如果等级>=60,则跳转
cmp-EAX,0
在读成绩F;等级<60时跳转
A级:
mov al,“A”;mov A级至al级
呼叫WriteChar;展示信件
jmp-ok;跳到好的
B级:
mov al,'B';mov B级至al级
呼叫WriteChar;展示信件
jmp-ok;跳到好的
C级:
mov al,'C';mov C级至al级
呼叫WriteChar;展示信件
jmp-ok;跳到好的
分级:
mov al,'D';mov D级至al级
呼叫WriteChar;展示信件
jmp-ok;跳到好的
F级:
mov al,'F';mov F级至al级
呼叫WriteChar;展示信件
jmp-ok;跳到好的
可以:
ret
字母级ENDP
这是家庭作业吗?你是在调试器中运行的吗?是的,我尝试在调试器中运行。它只会为每一个随机生成的数字打印F。调用AlphaGrade时,请查看EAX的值。在代码的顶部,您正在使用WriteChar编写代码,在您将其传递给AlphaGrade之前,它可能会摧毁EAX。事实上,当您写出空格字符时,您将粉碎EAX。在调用WriteDec之前保存EAX(推EAX),然后在调用AlphaGrade之前检索它(pop EAX)。哦,是的,我没有意识到!谢谢我还有一个问题。因此,我的老师希望我用gotoxy来代替空格字符mov DH,5''mov DL,1''呼叫gotoxy'。我以为会是这样的,但我不知道该怎么称呼它。这是家庭作业吗?你是在调试器中运行的吗?是的,我尝试在调试器中运行。它只会为每一个随机生成的数字打印F。调用AlphaGrade时,请查看EAX的值。在代码的顶部,您正在使用WriteChar编写代码,在您将其传递给AlphaGrade之前,它可能会摧毁EAX。事实上,当您写出空格字符时,您将粉碎EAX。在调用WriteDec之前保存EAX(推EAX),然后在调用AlphaGrade之前检索它(pop EAX)。哦,是的,我没有意识到!谢谢我还有一个问题。因此,我的老师希望我用gotoxy来代替空格字符mov DH,5''mov DL,1''呼叫gotoxy'。我以为会是这样的,但我不确定我应该把它叫做什么。