我对变量如何存储在数据段中有点困惑。我们得到了这段代码:
.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
我是否正确地思考这段代码?
答案 0 :(得分:1)
你列出了12,而不是11.只计算它们。美元字符缺少一个字节。除此之外,抵消似乎很好。
此外,功能9仅打印文本,而不是二进制数。它不会以人类可读的方式从valb
打印4个字节(1,2,3和4)。它确切地打印了多少个字节......好吧,它不会打印美元,因为它被用作字符串终止符(参见文档,顺便说一句,它都在那里) 。因此,它应该只有8个(字节1到4的4个奇怪字符和字符" 1"," 2"," 3"和" 4& #34;。)