2015-06-21 56 views
0

我有一个装配环:CMP在循环不工作

mov dx, [block_pos]  
mov bx,offset GameBoard 
add bx, dx 
; bx now holds the address of the player 
mov cx,5 
rows_loop: 
add bx,COL_NUM 
inc rows_counter 
cmp [bx],'_' 
je print_rows 
loop rows_loop 

IM添加到BX在板的cols的数量,并且每次我检查是否有一个壁在那里。

,不管怎样,当[BX]等于“_”(一个游戏中的墙),它不会跳到print_rows

多次尝试后,我敢肯定它的东西与实际语法或别的东西,而不是代码背后的逻辑。

回答

0

您没有指定​​的操作数大小。明智的装配人员会因错误而中止。你没有提到你正在使用的汇编程序,所以也许你的程序默认使用字大小,并且不符合你的电路板。您可能需要类似cmp byte ptr [bx], '_'

PS:学习使用调试器(和您的汇编程序;))。

+0

相同的结果。顺便说一句,我使用8086大会 –