我正在尝试创建一个非常简单的程序,它将在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完成的吗?我理解简单的循环,但是我完全失去了这个循环。非常感谢您提供的任何帮助或答案。提前感谢您帮助我学习这些材料。
答案 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