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

​【经验分享】微机原理、指令判断、判断指令是否正确判断指令是否正确​

目录

微机原理判断指令是否正确【见的多了,你就懂了~】

1. 立即数不能作为目标操作数

2. 操作数位数必须匹配

3. 需要指定存储器操作数的字节或字

4. 两个操作数不能同时为存储器操作数

5. 循环次数超过1必须使用CL寄存器

6. 段寄存器限制(特别是CS寄存器)

7. 基址变址相对寻址中的寄存器使用

8. 立即数不能直接赋值给段寄存器

9. 端口直接寻址范围

10. ES和SS段寄存器结合的正确用法

11. 明确指定存储器操作数的类型

12. 堆栈指令不能使用立即数

13. 堆栈操作数类型限制

14. 端口间接寻址的寄存器限制

15. 交换指令中的寄存器限制

16. ADD 指令要求两操作数等字长

17. 寄存器操作数不能有段重设符

18. 转移地址的字长要求

19. 输出指令的端口地址要求

20. MUL 指令不允许使用立即数

21. 操作数类型的指定要求

总结:


🌟 嗨,我是命运之光!

🌍 2024,每日百字,记录时光,感谢有你一路同行。

🚀 携手启航,探索未知,激发潜能,每一步都意义非凡。


微机原理判断指令是否正确【见的多了,你就懂了~】

1. 立即数不能作为目标操作数

  • 错误示例MOV 1000H, BX
  • 规则:立即数只能作为源操作数,不能直接赋值给寄存器或存储器。

2. 操作数位数必须匹配

  • 错误示例MOV BX, CL
  • 规则:两个操作数的位数必须一致,不能将16位寄存器与8位寄存器混用。

3. 需要指定存储器操作数的字节或字

  • 错误示例INC [BX]
  • 规则:在操作存储器时,必须明确指定操作数是字节还是字(BYTE PTRWORD PTR)。

4. 两个操作数不能同时为存储器操作数

  • 错误示例MOV [BX], [6014H]
  • 规则:在一条指令中,两个操作数不能同时为存储器地址。

5. 循环次数超过1必须使用CL寄存器

  • 错误示例ROL AL, 2
  • 规则:当循环次数超过1时,必须使用 CL 寄存器指定次数。

6. 段寄存器限制(特别是CS寄存器)

  • 错误示例MOV CS, AX
  • 规则:段寄存器(尤其是 CS)通常只能作为源操作数,不能直接修改。

7. 基址变址相对寻址中的寄存器使用

  • 错误示例MOV AL, [SI+DI]
  • 规则:基址寄存器只能是 BX/BP,变址寄存器只能是 SI/DI,不能同时使用两个变址寄存器。

8. 立即数不能直接赋值给段寄存器

  • 错误示例MOV DS, 0100H
  • 规则:立即数不能直接赋值给段寄存器,需要通过中间寄存器实现。

9. 端口直接寻址范围

  • 错误示例OUT 310H, AL
  • 规则:端口直接寻址的范围应在 0~FFH 之间,超过此范围时必须使用 DX 间接寻址。

10. ES和SS段寄存器结合的正确用法

  • 正确示例MOV ES:[BX+DI], AXMOV SS:[BX+SI+100H], BX
  • 规则:在进行段寄存器和偏移地址结合时,确保使用合法的寄存器组合。

11. 明确指定存储器操作数的类型

  • 错误示例ADD [SI], 20H
  • 规则:必须指定操作数是 BYTE PTRWORD PTR

12. 堆栈指令不能使用立即数

  • 错误示例PUSH 2000H
  • 规则:堆栈指令(如 PUSHPOP)的操作数不能是立即数。

13. 堆栈操作数类型限制

  • 错误示例POP AL
  • 规则:堆栈操作数必须是16位,不能是8位寄存器。

14. 端口间接寻址的寄存器限制

  • 错误示例OUT BX, AL
  • 规则:端口间接寻址的寄存器只能是 DX

15. 交换指令中的寄存器限制

  • 错误示例XCHG CX, DS
  • 规则:交换指令中不能涉及段寄存器。

16. ADD 指令要求两操作数等字长

  • 错误示例ADD BYTE PTR [BP], 256
  • 规则:在 ADD 指令中,操作数必须有相同的字长。

17. 寄存器操作数不能有段重设符

  • 错误示例MOV DATA[SI], ES:AX
  • 规则:寄存器操作数不能加段重设符,只能对存储器操作数使用段重设符。

18. 转移地址的字长要求

  • 错误示例JMP BYTE PTR [BX]
  • 规则:转移地址的字长至少应是16位,不能使用8位地址。

19. 输出指令的端口地址要求

  • 错误示例OUT 230H, AX
  • 规则:端口地址超出8位范围时,必须用 DX 间接寻址。

20. MUL 指令不允许使用立即数

  • 错误示例MUL 39H
  • 规则:MUL 指令的操作数不能是立即数。

21. 操作数类型的指定要求

  • 错误示例INC [BP]
  • 规则:在某些指令中必须指定操作数的类型,如 INC [BP] 需要 BYTE PTRWORD PTR

总结:

  • 立即数限制:立即数不能作为目标操作数,且不能直接赋值给段寄存器。
  • 操作数位数匹配:操作数位数必须一致。
  • 存储器操作数限制:两个操作数不能同时为存储器地址。
  • 段寄存器限制:段寄存器通常只能作为源操作数。
  • 堆栈指令要求:堆栈操作数必须是16位,且不能是立即数。
  • 寻址模式限制:基址和变址寄存器的组合必须合法。
  • 端口操作限制:端口直接寻址必须在0~FFH范围内,超出需用DX间接寻址。
  • 操作数类型明确性:某些指令必须明确指定操作数的类型。
  • 特定指令限制:如 MUL 不允许立即数,XCHG 不能涉及段寄存器。

通过这些规则可以系统化地判断一条指令的正确性。


嗨,我是命运之光。如果你觉得我的分享有价值,不妨通过以下方式表达你的支持:👍 点赞来表达你的喜爱,📁 关注以获取我的最新消息,💬 评论与我交流你的见解。我会继续努力,为你带来更多精彩和实用的内容。

点击这里👉 ,获取最新动态,⚡️ 让信息传递更加迅速。

相关文章:

  • go语言源码解读之数据结构堆
  • Redis远程字典服务器(5) —— list类型详解
  • Cocos Creator倒计时
  • jenkins升级踩坑记录
  • service 管理 web 管理插件
  • 电子音乐制作软件有哪些 电音制作用什么软件 好用的能够创作音乐的软件推荐 电音基础新手入门
  • OpenCV--图像梯度处理,图片轮廓,边缘检测
  • 打印一个字符串全部子序列(没有重复字面值)
  • 刷题记录第108天-求一个数的平方根(精确到小数点后五位)
  • 使用 C/C++访问 MySQL
  • repo简介
  • CUDA C++ 编程指南学习(待更)
  • ubuntu16.04安装ibus拼音 输入法
  • 使用功率器件比如MOSFET瞬态热阻曲线计算参数
  • 【myz_tools】Python库 myz_tools:Python算法及文档自动化生成工具
  • [原]深入对比数据科学工具箱:Python和R 非结构化数据的结构化
  • 5、React组件事件详解
  • Android优雅地处理按钮重复点击
  • conda常用的命令
  • ECMAScript 6 学习之路 ( 四 ) String 字符串扩展
  • ES6简单总结(搭配简单的讲解和小案例)
  • ESLint简单操作
  • jquery cookie
  • Objective-C 中关联引用的概念
  • PhantomJS 安装
  • QQ浏览器x5内核的兼容性问题
  • vue从入门到进阶:计算属性computed与侦听器watch(三)
  • vue学习系列(二)vue-cli
  • 初识 webpack
  • 动手做个聊天室,前端工程师百无聊赖的人生
  • 翻译 | 老司机带你秒懂内存管理 - 第一部(共三部)
  • 分享几个不错的工具
  • 回顾2016
  • 基于Android乐音识别(2)
  • 首页查询功能的一次实现过程
  • 吐槽Javascript系列二:数组中的splice和slice方法
  • 想晋级高级工程师只知道表面是不够的!Git内部原理介绍
  • 正则表达式
  • 自动记录MySQL慢查询快照脚本
  • mysql 慢查询分析工具:pt-query-digest 在mac 上的安装使用 ...
  • mysql面试题分组并合并列
  • ​软考-高级-信息系统项目管理师教程 第四版【第23章-组织通用管理-思维导图】​
  • ### RabbitMQ五种工作模式:
  • #gStore-weekly | gStore最新版本1.0之三角形计数函数的使用
  • #NOIP 2014# day.2 T2 寻找道路
  • #VERDI# 关于如何查看FSM状态机的方法
  • (11)工业界推荐系统-小红书推荐场景及内部实践【粗排三塔模型】
  • (3) cmake编译多个cpp文件
  • (Python) SOAP Web Service (HTTP POST)
  • (第61天)多租户架构(CDB/PDB)
  • (二)JAVA使用POI操作excel
  • (附源码)springboot高校宿舍交电费系统 毕业设计031552
  • (附源码)springboot青少年公共卫生教育平台 毕业设计 643214
  • (十)【Jmeter】线程(Threads(Users))之jp@gc - Stepping Thread Group (deprecated)
  • (一) springboot详细介绍