DWORD内存变量可以包含四个ASCII字符、一个指针、一个编码为有符号或无符号二进制数的数字、浮点数、二进制编码的十进制数等。如果您想以可读文本的形式存储其内容,则需要首先对其进行转换。
我想将Dword向下转换为Byte,这样我就可以通过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
还要注意,totalTXT
保留的一个字节对于9以上的数字是不够的。它应该声明为totalTXT BYTE 12 DUP (?)
或total
转换为的任何大小。
正如Peter Cordes在他的评论中所说,Irvine32具有WriteDec
和WriteInt
函数来打印EAX中的二进制整数,如printf%u或%d