2011-12-13 65 views
0

我对变量如何存储在数据段中有点困惑。我们给出的代码这一部分:汇编语言字节计数

 .data 
vala dw 1234h 
valb db 1,2,3,4 
valc db '1234$' 
vald db '12' 

我做了,像这样的偏移数据表:因为需要

offset 00 01 02 03 04 05 06 07 08 09 10 11 
data 34 12 01 02 03 04 31 32 33 34 31 32 

我不认为我在加载到内存中正确的字节总数在内存中是13,我在这里只有11。有人可以评论我出错的地方吗?

还有另外一个问题,询问有多少字节这些指令后写入到标准输出设备:

mov dx,offset valb ;valb has 4 bytes 
mov ah,9    ;4 bytes is written to the output 
int 21h    ;for a total of 8 bytes 

上午我通过这一段的代码以正确的方式在想什么?

回答

1

你列出12,而不是11。美元字符缺少一个字节。除此之外,补偿似乎很好。

此外,功能9只打印文本,而不是二进制数字。它不会以可读的方式打印valb中的4个字节(1,2,3和4)。它将打印多少字节......呃,它不会打印美元,因为它被用作字符串终结符(请参阅文档,顺便说一句,它都在那里)。所以,它应该只有8个(字节1到4和字符“1”,“2”,“3”和“4”)有4个奇怪的字符。

+0

谢谢,我总是忘记数美元符号。 – raphnguyen