MASM32反向数字

时间:2014-03-11 21:02:34

标签: arrays reverse masm cpu-registers masm32

我正在尝试创建一个非常简单的程序,它将在BYTE命名数组中列出值,然后反转数字。这是我给出的问题:

编写程序以执行以下操作: 使用BYTE指令定义学生ID号的9位数字列表并将其命名为array。编写指令以反转数组中这些数字的顺序。

到目前为止,这就是我所拥有的:

.DATA
 array BYTE 9h, 6h, 4h, 5h, 2h, 8h, 7h, 4h, 2h

.CODE
  start:

   mov esi, 0
   mov edi, 0
   ; ?????

 call DumpRegs
 call WriteInt

exit
END start

我使用了一个名为array的9位数的BYTE。我不知道如何启动逆转过程。这是由LOOP完成的吗?我理解简单的循环,但是我完全失去了这个循环。非常感谢您提供的任何帮助或答案。提前感谢您帮助我学习这些材料。

1 个答案:

答案 0 :(得分:0)

这是我放在一起的东西,希望它有所帮助。

.DATA
array BYTE 9h, 6h, 4h, 5h, 2h, 8h, 7h, 4h, 2h
reversearray BYTE 9 DUP (0) ; assign storage for array that will contain reverse

.CODE
    mov ecx, SIZEOF array ; length of array is 9, so ecx contains 9
    lea esi, array ; address of the start of array
    lea edi, reversearray ; address of the start of reversearray

decarray:
    movzx eax, byte ptr [esi+ecx-1] ; byte from esi (array start) + ecx counter - 1
    mov byte ptr [edi], al ; store byte we have in al, into reverse array (edi)
    inc edi ; add 1 to reverse array location for next bytes storage when we loop again
    loop decarray ; if ecx is 0 we end, otherwise loop again and ecx will now be ecx-1

    ; do other stuff here, print our arrays etc