这个问题要求我接受一个dword,并将其从小端转换为大端。我已经把那部分写下来了,但现在我需要把它打印出来。
对WriteHex的调用将只打印出整个寄存器。我还尝试使用一些数学方法来将数组的内容放在一个寄存器中,但我们只能使用mov、add和sub,不能有循环。有没有一种方法可以打印出一个单字节,或者只使用这些命令将一个数组移到一个寄存器?
这就是我的东西
data
bigEndian BYTE 4 DUP(?)
littleEndian DWORD ?
prompt BYTE "Please enter a number in HEX > ",0
.code
main PROC
mov edx, offset prompt
CALL WriteString
CALL ReadHex
mov littleEndian, eax
mov al, bigEndian + 4
mov bigEndian, al
mov al, bigEndian + 5
mov bigEndian + 1, al
mov al, bigEndian + 6
mov bigEndian + 2, al
mov al, bigEndian + 7
mov bigEndian + 3, al
; should print here 发布于 2018-02-04 02:08:32
PTR是用于声明或覆盖类型的MASM运算符。如果您希望tp löad DWORD变量中的单个字节,则可以使用BYTE PTR。如果要从字节数组加载DWORD值,可以使用DWORD PTR
INCLUDE Irvine32.inc
.data
bigEndian BYTE 4 DUP(?)
littleEndian DWORD ?
prompt BYTE "Please enter a number in HEX > ",0
.code
main PROC
mov edx, offset prompt
CALL WriteString
CALL ReadHex
mov littleEndian, eax
mov al, BYTE PTR littleEndian + 3
mov bigEndian + 0, al
mov al, BYTE PTR littleEndian + 2
mov bigEndian + 1, al
mov al, BYTE PTR littleEndian + 1
mov bigEndian + 2, al
mov al, BYTE PTR littleEndian + 0
mov bigEndian + 3, al
mov eax, DWORD PTR bigEndian
call WriteHex
exit
main ENDP
END mainhttps://stackoverflow.com/questions/48598954
复制相似问题