assembly - 声明变量的解释值是 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。
解决方案
推荐阅读
- amazon-web-services - 来自 IAM 角色的 EC2 实例临时凭据不起作用
- tcl - 如何在给定的生成 id 上运行期望脚本
- python - 如何将文件转换为字典?
- java - 为 Double 列表覆盖 equals() 和 hashCode() 的问题
- javascript - 包装的组件不在 HOC 中重新渲染
- javascript - VSCode:向语义完成添加片段?
- html - HTML/CSS 试图调整按钮的大小,使它们的大小都相同
- jquery - 触发单个覆盖的多个 div
- html - 使用 div 创建表格而不是表格元素
- javascript - 删除没有文本 INPUT 值的 P 文本