循环中的Cmp无法正常工作

时间:2015-06-21 14:18:11

标签: assembly x86

我有一个汇编循环:

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

我将bx中的cols数添加到bx中,每次检查那里是否有墙。

不知何故,当[bx]等于'_'(游戏中的墙)时,它不会跳转到print_rows

经过多次尝试后,我很确定它是实际语法或其他东西而不是代码背后的逻辑。

1 个答案:

答案 0 :(得分:1)

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

之类的内容

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