将 DWORD 向下转换为 BYTE,汇编 32 位
Down Convert DWORD to BYTE, Assembly 32 bits
我想将 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 says in his comment一样,Irvine32有WriteDec
和WriteInt
函数从EAX打印二进制整数,如printf %u或%d。
我想将 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 says in his comment一样,Irvine32有WriteDec
和WriteInt
函数从EAX打印二进制整数,如printf %u或%d。