将DWORD向下转换为字节,程序集32位



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

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

正如Peter Cordes在他的评论中所说,Irvine32具有WriteDecWriteInt函数来打印EAX中的二进制整数,如printf%u或%d

最新更新