我正在使用Irvine32.inc库,我的L4
跳转问题。
L1:
mov edx, offset optionPromptMsg
call WriteString
call ReadInt
mov ebx, 1
cmp eax, ebx
je L2 //if eax is 1, jump to l2, if eax is -1, jump l3
mov ebx, -1
cmp eax, ebx
je L3
mov ebx, -2
mov ecx, 2
cmp ebx, eax //if eax is less than -2 or more than 2 jump to L4
ja L4
cmp eax, ecx
ja L4
L2: call NextScore
L4: mov edx, offset optionErrorMsg
call WriteString
loop L1
L3 : call WriteScore
无论我如何格式化,出于某种原因,每次L2: call NextScore
被调用时,后来L4
被调用,我无法找出原因。 NextScore
如下......
NextScore PROC USES esi
mov edx, offset scorePromptMsg
call WriteString
call ReadInt
mov ebx, 0
mov ecx, 100
cmp ebx, eax
ja L1
cmp eax,ecx
ja L1
jmp L2
L1:
mov edx, offset scoreErrorMsg
call WriteString
L2:
mov scores[esi*4], eax
inc esi
ret
NextScore ENDP
如您所见,NextScore
读取0-100之间的值,然后此时失败,将该值添加到数组scores
。由于某种原因,它只在整个阵列中添加一个数字的重复,但这是一个完全不同的问题。任何想法或想法都非常感谢!
答案 0 :(得分:4)
ret
末尾的NextScore
完全返回L4
,因为每个ret
都会返回以继续匹配call
停止的位置。也就是说,如果您想要执行其他操作,则需要在L4
之前添加代码,NextScore
在jmp
返回时执行(例如L4
,而不是$s ="INSERT into cuporder(nama,no_hp,add) VALUES('$nama','$no_hp','$add')";
而不是sum(diag(apply(m,2,rev)))
1}}):