当前位置: 首页 > article >正文

3.3 语法规则

在这里插入图片描述

🎓 微机原理考点专栏(通篇免费)

欢迎来到我的微机原理专栏!我将帮助你在最短时间内掌握微机原理的核心内容,为你的考研或期末考试保驾护航。

为什么选择我的视频?

  • 全程考点讲解:每一节视频都紧扣考试要点,拒绝冗余,专注于最关键的知识点。
  • 系统且高效:我已经为你精心准备了系统的学习资料,让你不再迷茫。

🔗 点击这里观看我的视频讲解 🔗

我需要你的支持

我为这套视频投入了大量精力,希望它能对你的学习有所帮助。如果你觉得内容有用,请给我的视频点个赞、评论、并关注我,这将是我继续创作的最大动力!

🙏 感谢你的支持!祝你学有所成! 🙏


3.3 语法规则

📘 8086 汇编语言中的常见错误及其修正

1. 源操作数与目的操作数的长度与类型要一致

  • 错误示例: MOV AX, BL
    问题: 操作数长度不一致,AX 是 16 位寄存器,BL 是 8 位寄存器。
    修正: 操作数长度应一致,确保两个寄存器的位数相同。

  • 错误示例: MOV [0200H], 56H
    问题: 操作数类型不明确。没有明确指定内存地址的大小。
    修正: 指定操作数类型,如 MOV WORD PTR [0200H], 56H,表示将 16 位数据写入指定地址。

2. 寄存器寻址与段地址要对应

  • 错误示例: MOV ES:AX, DX
    问题: 段寄存器和一般寄存器不能混用。
    修正: 段寄存器操作必须与段相关。例如,用 MOV ES, AX 来加载段寄存器 ES

3. [] 中只能使用特定的寄存器

  • 错误示例: MOV CX, [AX]
    问题: AX 不能用于内存寻址。
    修正: 只能在 [] 中使用 BXBPSIDI 等寄存器。

4. 同一组内的寄存器不能同时出现在一个 []

  • 错误示例: MOV AX, [BX + BP]
    问题: BXBP 同属基址寄存器,不能同时用于地址计算。
    修正: 使用一个基址寄存器和一个变址寄存器,如 MOV AX, [BX + SI]

5. 两个存储单元之间不能直接操作

  • 错误示例: MOV [BX], [SI]
    问题: 汇编中不能直接操作两个内存地址。
    修正: 需要通过寄存器进行中转,如 MOV AX, [SI],然后 MOV [BX], AX

6. CS、IP、立即数不能作为目的操作数

  • 错误示例: MOV CS, AX
    问题: CSIP 是特殊寄存器,不能直接作为目的操作数。
    修正: 不能直接修改 CSIP,通常通过段寄存器指令或跳转指令来间接影响它们。

7. 当 DS、ES、SS 作为目的操作数时,不能使用立即数作为源操作数

  • 错误示例: MOV DS, [1500H]
    问题: DSESSS 不能直接从立即数加载。
    修正: 需要通过 AX 或其他寄存器中转,如 MOV AX, 1500H 然后 MOV DS, AX

8. 使用段超越前缀修改默认段

  • 正确示例: MOV AX, ES:[BX]
    解释: 通过段超越前缀 ES: 指定用 ES 段寄存器访问内存地址,物理地址计算为 ES × 16H + BX

  • 正确示例: MOV AX, ES:[2000H]
    解释: 通过段超越前缀访问内存,物理地址为 ES × 16H + 2000H


http://www.kler.cn/a/287853.html

相关文章:

  • ONLYOFFICE8.2版本测评,团队协作的办公软件
  • Neo4j Desktop 和 Neo4j Community Edition 区别
  • v-html 富文本中图片使用element-ui image-viewer组件实现预览,并且阻止滚动条
  • TypeORM在Node.js中的高级应用
  • 一文说清C++类型转换操作符(cast operator)
  • 从北美火到中国,大数据洞察品牌“STANLEY”的突围之路
  • 设计模式--享元模式
  • 春秋云镜(ZZCMS 2023)·CVE-2023-50104
  • 【GPT】Coze使用开放平台接口-【7】Dify 比较篇
  • Git —— 2、配置本地与远程免密仓库免密访问、实操创建本地仓库与上github新仓库关联
  • 龙芯+FreeRTOS+LVGL实战笔记(新)——01准备开发环境
  • 使用Python+docx+sqlite3将Word表格内容写入sqlite表中
  • 洛谷8.30
  • 算法笔记|Day38动态规划XI
  • 【化学方程式配平 / 3】
  • 网络:IPv6
  • C++:结构体变量可以被多个cpp文件共同使用
  • 大数据系统测试——大数据系统解析(上)
  • 秒级日期空间如何查询整天数据而不是截止到00:00:00到23:59:59?
  • Fabric.js中fabric.Image的深入解析
  • 深入理解Redis(一)----Redis简介+Redis为什么这么快
  • 从中国制造到全球领先,星坤连接器的全球化之路
  • huggingface.co 无法访问问题换源解决
  • Idea中修改Jsp文件的头部注释模版
  • 【LabVIEW学习篇(补充) - 15】:常用快捷键和Quick Drop
  • 版本控制工具git