当你在Assembly x86中向后循环时,内存中正在发生什么(你能尝试视觉,谢谢)?以下代码是我目前想知道的:
INCLUDE Irvine32.inc
.data
arrayb byte 1,2,3,4,5,6 ;6-7 bytes
len dword lengthof arrayb
space byte " ",0
x dword 3
.code
main PROC
mov edx,offset space
mov eax,0 ; clear ecx of garbage
mov ecx, len
mov esi,offset arrayb ; start of the array's memory
add esi,len ;This causes the array value to start at 6
dec esi ; esi goes from esi+5,esi+4,...,esi
myloop2:
mov al,[esi]
call writedec
call writestring
dec esi
loop myloop2
call crlf
特别是,为什么我要为esi添加1?当您向高速内存传输寄存器esi添加1时,它似乎导致数组值从6开始。为什么?谢谢。