masm Irvine32 库。如何打印出单个字节
masm Irvine32 library. How to print out a single byte
这个问题要求我输入一个双字并将其从小端转换为大端。我已经把那部分记下来了,但现在我需要把它打印出来。
调用 WriteHex 只会打印出整个寄存器。我也曾尝试使用一些数学来将数组的内容放入一个寄存器中,但我们仅限于使用没有循环的 mov、add 和 sub。有没有办法使用 Irvine 打印出单个字节或仅使用这些命令将数组移动到寄存器?
这是我的
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
PTR
是声明或覆盖类型的 MASM 运算符。如果你想从 DWORD 变量中加载一个字节,你可以使用 BYTE PTR
。如果你想从 BYTE 数组中加载一个 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 main
这个问题要求我输入一个双字并将其从小端转换为大端。我已经把那部分记下来了,但现在我需要把它打印出来。
调用 WriteHex 只会打印出整个寄存器。我也曾尝试使用一些数学来将数组的内容放入一个寄存器中,但我们仅限于使用没有循环的 mov、add 和 sub。有没有办法使用 Irvine 打印出单个字节或仅使用这些命令将数组移动到寄存器?
这是我的
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
PTR
是声明或覆盖类型的 MASM 运算符。如果你想从 DWORD 变量中加载一个字节,你可以使用 BYTE PTR
。如果你想从 BYTE 数组中加载一个 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 main