Assembly 字母等级不为';t返回基于条件的值

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

在这段代码中,我尝试生成最多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 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'。我以为会是这样的,但我不确定我应该把它叫做什么。