0
我有一个问题,理解为什么我的cmp语句无法正常工作。装配不正常
当我运行这个,我在第一个输入0,它进入storeValue。我输入0作为第二个值,它会像它应该的那样进入searchArray。
我在我的cmp和跳转语句的断点和AL的一个表上,所以我不明白为什么它存储的第一个0当它应该提示搜索值在那一点。
感谢您的期待。
.DATA
prompt1 BYTE "Enter a value to put in array or 0 to search array.", 0
prompt2 BYTE "Enter a value to search array for.",0
intArray DWORD ?
numElem DWORD 0
SearchVal DWORD ?
resultNope BYTE "Not in array.",0
.CODE
_MainProc PROC
lea ebx, intArray ;get the address of array.
start: input prompt1, intArray, 50 ;read in integer
atod intArray ;convert to int
mov al, [ebx] ;move int to register
cmp al, 0 ;if integer is positive - store it!
jg storeValue ;JUMP!
cmp al, 0 ;if 0 - time to search array!
je searchArray ;JUMP!
storeValue: add numElem, 1 ;Adds 1 to num of elements in array.
mov [ebx], al ;moves number into array.
add ebx, 1 ;increment to next array address.
jmp start ;get next number for array. JUMP!
searchArray:input prompt2, searchVal, 50 ;What are we searching array for?
atod searchVal ;convert to int
lea ebx, intArray ;get address of array.
mov ecx, 1 ;set loop counter to 1.
对不起,我是s直到学习80x86 asm,我假设atod和输入是本书解释它的标准语法。仔细研究它,我发现它们是宏。虽然谢谢!我明白了,在我从EAX调用atod到[EBX]之后,我愚蠢地忘了移动这个值,从而解决了我的问题。谢谢! – Arcath