首页 > 解决方案 > 声明变量的解释值是 MASM 8086

问题描述

我编写了以下代码片段(使用 masm611 在 DOS 中工作):

.data
msg db 10h,?,10h dup(?)

.code
.startup

lea dx,msg
mov ah,0ah
mov cl,msg
int 21h
mov bl,[msg + 1d]

我对变量“msg”的内容感到困惑。CL 保存值 10h(假设我输入了 5 个字符)。但是代码 [msg+1d] 访问存储在位置 offset(msg) + 1d 处的数据。它不应该访问偏移地址 msg + 1d = 11h 的位置吗?为什么它在一个地方取'msg'的内容,而在另一个地方取'msg'的偏移量?

执行后寄存器的内容是—— 在此处输入图像描述

可以看出,CL = 10H,BL=05H。

标签: assemblydosmasmx86-16

解决方案


推荐阅读