2015-06-21 96 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大會 –