好的,爲了使事情儘可能簡單,說我有一個基本的循環,我想用來修改標記爲a的數組的一些元素。在下面的示例代碼中,我嘗試用1替換1的所有元素,但這並不起作用。8086程序集 - 如何訪問循環內的數組元素
assume cs:code ,ds:data
data segment
a db 1,2,3,4
i db 0
data ends
code segment
start:
mov ax,data
mov ds,ax
lea si,a
the_loop:
mov cl,i
cmp cl,4
jae the_end
mov ds:si[i],1 ; this is the part that i don't really understand since
inc i ; i'm expecting i=0 and ds:si[i] equiv to ds:si[0] which
loop the_loop ; is apparently not the case here since i actually receives the
; the value 1
the_end:
mov ax,4c00h
int 21h
code ends
end start
我知道我可以簡單地通過修改存儲在al
的lodsb
指令之後的元素做到這一點,只是存儲。但我想知道是否有可能做到像我上面嘗試過的那樣。
'mov bx,[i]'如果'i'是一個字節就不會組裝或工作正常。你用'movzx'弄明白了。但知道這是80386+指令可能很重要。 – 2013-02-20 13:09:31
@AlexeyFrunze你是對的,所以我修復它並轉換爲8088/8086代碼。 – nrz 2013-02-20 13:12:00