首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >masm Irvine32库。如何打印出单字节

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

Stack Overflow用户
提问于 2018-02-03 23:25:56
回答 1查看 891关注 0票数 1

这个问题要求我接受一个dword,并将其从小端转换为大端。我已经把那部分写下来了,但现在我需要把它打印出来。

对WriteHex的调用将只打印出整个寄存器。我还尝试使用一些数学方法来将数组的内容放在一个寄存器中,但我们只能使用mov、add和sub,不能有循环。有没有一种方法可以打印出一个单字节,或者只使用这些命令将一个数组移到一个寄存器?

这就是我的东西

代码语言:javascript
复制
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 
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-02-04 02:08:32

PTR是用于声明或覆盖类型的MASM运算符。如果您希望tp löad DWORD变量中的单个字节,则可以使用BYTE PTR。如果要从字节数组加载DWORD值,可以使用DWORD PTR

代码语言:javascript
复制
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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48598954

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档