我正在尝试使用xchg指令在dword数组中将元素1与元素5和元素2交换为元素4。我只是要求指导,以帮助我开始。到目前为止我有这个。我正在尝试将这些指令用于双字阵列。
mov ax,val1
xchg ax,val2
mov val1,ax
.data
myArray BYTE 2,4,6,8,10
DArray DWORD 5 DUP(?)
.code
main PROC
mov esi, OFFSET myArray
mov edi, OFFSET DArray
mov ecx, 5
L1: movzx eax, byte ptr [esi]
mov [edi], eax
inc esi
add edi, 4
call WriteDec
loop L1
mov al, byte ptr [esi]
xchg al, byte ptr [esi]+4
mov byte ptr[esi], al
call WriteDec
mov ah, byte ptr [esi]+1
xchg ah, byte ptr [esi]+3
mov byte ptr [esi]+1, ah
call WriteDec
答案 0 :(得分:1)
byte 数组中的交换缺少ESI
寄存器的设置。
mov esi, OFFSET myArray <<< Add this
mov al, byte ptr [esi]
xchg al, byte ptr [esi]+4
mov byte ptr[esi], al
call WriteDec <<< Is this useful ???
mov ah, byte ptr [esi]+1
xchg ah, byte ptr [esi]+3
mov byte ptr [esi]+1, ah
call WriteDec <<< Is this useful ???
我正在尝试使用xchg指令在 dword 数组中将元素1与元素5和元素2交换为元素4。
mov edi, OFFSET DArray
mov eax, dword ptr [edi]
xchg eax, dword ptr [edi]+16
mov dword ptr[edi], eax
mov eax, dword ptr [edi]+4
xchg eax, dword ptr [edi]+12
mov dword ptr [edi]+4, eax