如何在装配中反转阵列?

时间:2011-09-29 20:15:21

标签: assembly masm

我应该将数组反转到位。我已经研究了一段时间,这就是我所拥有的。谁能告诉我我做错了什么?

.data
array BYTE 10h, 20h, 30h, 40h

.code
main PROC
    mov esi, 0
    mov edi, 0
    mov esi, OFFSET array
    mov edi, OFFSET array + SIZEOF array
    mov ecx, SIZEOF array/2

l1: mov al, [esi]
    mov bl, [edi]
    mov [edi], al
    mov [esi], bl
    inc esi
    dec edi
    LOOP l1

    call DumpRegs
    call DumpMem

    exit

main ENDP

END main

1 个答案:

答案 0 :(得分:-1)

尝试声明两个数组,一个使用您的值进行初始化,另一个数组可以使用DUP运算符5 DUP(?)

使用循环开始将值从第一个数组移动到第二个数组。

示例:

。数据 myArr1 DWORD 5,4,3,2,1 myArr2 DWORD 5 DUP(?)

.code main proc mov edi,偏移myArr1 添加edi,sizeof myArr1 mov esi,抵消myArr2 mov ecx,myArr2的长度

reverseLoop: 添加ebx,[edi] mov [edi],ebx sub edi,输入myArr2 添加esi,输入myArr1 mov eax,[edi] 致电writeint

LOOP reverseLoop

出口 主要的 结束主要