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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

命运之光

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值