.data
TRUE = 1
FALSE = 0
gradeAverage DWORD 275 ; test value
credits DWORD 12 ; test value
OkToRegister BYTE ?
.code
main PROC
mov OkToRegister,FALSE
mov eax, gradeAverage
cmp eax, 350
ja l1
L1: mov OkToRegister,TRUE
mov eax, gradeAverage
cmp eax, 250
ja l2
L2: mov ebx,credits
cmp ebx,16
jbe l3
L3: mov OkToRegister,TRUE
mov ebx,credits
cmp ebx,12
jbe l4
L4: mov OkToRegister,TRUE
main ENDP
这是我尝试将逻辑更改为跳转语句,但在运行之后我收到了一个逻辑错误,我可以看到这是因为我不确定如何用跳转来说.ELSEIF。如果可能,请帮助我了解如何修复我的代码以使其工作。顺便说一句,是的,这是为了学校,是的,这是家庭作业。我没有找到答案,只是一些有用的提示,指出我正确的方向。非常感谢你。
.IF gradeAverage > 350
mov OkToRegister,TRUE
.ELSEIF (gradeAverage > 250) && (credits <= 16)
mov OkToRegister,TRUE
.ELSEIF (credits <= 12)
mov OkToRegister,TRUE
.ENDIF
这是原始程序中使用的.IF / .ELSEIF逻辑。
答案 0 :(得分:1)
因为我之前14年尝试过一些masm32。我猜诀窍是适当跳跃。
.code
main PROC
mov OkToRegister,FALSE
mov eax, gradeAverage
cmp eax, 350
ja LT
mov eax, gradeAverage
cmp eax, 250
jbe L1
mov ebx,credits
cmp ebx,16
jbe LT
L1:
mov ebx,credits
cmp ebx,12
ja LF
LT: mov OkToRegister,TRUE
LF:
main ENDP