masm Irvine32库。如何打印出单个字节

时间:2018-02-03 15:25:56

标签: masm irvine32

这个问题要求我接受一个dword并将它从little endian转换为big endian。我已经把那部分打倒了,但现在我需要将它打印出来。

对WriteHex的调用只会打印出整个寄存器。我也尝试使用一些数学来将我的数组的内容放在一个寄存器中但我们只能使用mov,add和sub而没有循环。有没有办法使用Irvine打印单个字节或只使用那些命令将数组移动到寄存器?

这就是我所拥有的

<system.web>
<machineKey decryptionKey="Yourdecryptionkey" validationKey="Your validation 
    key" />
</system.web>

1 个答案:

答案 0 :(得分:0)

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