0

我正在组装一个相当大的程序

我在这段特定的代码中有一点问题

ToArray proc _FH:word ; _FH File Handler ;non-void function returns -1 if error 
LOCALS
push AX BX CX
MOV BX, _FH
MOV CX, 400
MOV DX, offset FileBuffer
MOV AH, 3FH
INT 21H
JC ErrorReading
call puts, offset Read_Success
JMP DONE
ErrorReading:
call puts, offset Read_Error
MOV DX,-1
DONE:
pop CX BX AX
ret
ToArray endp

我在打开的文件中有 { 1 2 5 6 } 但在调用 INT 21H 后它只是用 80241 80241 填充数组。

为什么会这样:?

4

1 回答 1

2

从有 1 3 5 6 我有 8241 8243 8245...

对我来说,这看起来像是正确的数据。当被视为十六进制时
,十进制数将是. 是空格字符的 ascii 代码,是 的 ascii 代码,依此类推。所以你在看字符串。只是您选择了一种难以看到的数据表示。除非文件使用 Unicode 或其他一些多字节字符编码,否则最好将字符视为字节而不是单词。8241 8243 82450x2031 0x2033 0x20350x200x31'1'"1 3 5 "

于 2013-05-07T17:50:17.063 回答