【问题标题】:Down Convert DWORD to BYTE, Assembly 32 bits [duplicate]向下将 DWORD 转换为 BYTE,汇编 32 位 [重复]
【发布时间】:2021-06-24 17:43:39
【问题描述】:

我想将 Dword 向下转换为字节,以便我可以将其存储到 call WriteToFile 可读文本的文本文件中。我该怎么做?

 .386     
 .model flat, stdcall  
 INCLUDE Irvine32.inc
 .stack 4096  

 .Data
 total         DWORD  ?      ;total is a variable which holding a math calc output
 totalTXT       BYTE  ?      ;totalTXT would be the output in String value. 
    

这是我尝试降低转化率的地方

 xor eax, eax
 mov eax,  total
 mov totalTXT, al

我需要以字节为单位的 totalTXT,以便我可以将文本作为文本存储到文件中。但是调试后,我的文本文件变空了。

WRITE_TO_FILE:                 ;assume file is successfully opened

 mov eax,fileHandle 
 mov edx, OFFSET   totalTXT          
 mov ecx, LENGTHOF totalTXT   
 call WriteToFile
 call CloseFile

【问题讨论】:

标签: assembly masm irvine32 masm32


【解决方案1】:

DWORD 内存变量可以包含四个 ASCII 字符、一个指针、一个编码为有符号或无符号二进制数的数字、浮点数、二进制编码的十进制数等。 如果您想以人类可读文本的形式存储其内容,则需要先对其进行转换。

另请注意,totalTXT 保留的一个字节对于 9 以上的数字是不够的。 它应该被声明为totalTXT BYTE 12 DUP (?) 或者你total 转换成的任何大小。

作为Peter Cordes says in his commentIrvine32 有WriteDecWriteInt 函数从EAX 打印二进制整数,如printf %u 或%d。

【讨论】:

    猜你喜欢
    • 2013-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-15
    • 2022-06-24
    • 2017-10-05
    • 2019-03-05
    • 1970-01-01
    相关资源
    最近更新 更多