在Assembly x86中向后循环

时间:2016-09-25 03:58:17

标签: arrays loops assembly x86 irvine32

当你在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开始。为什么?谢谢。

0 个答案:

没有答案