80x86指令系统:逻辑运算与移位操作
需积分: 27 118 浏览量
更新于2024-07-11
收藏 1.2MB PPT 举报
"中山大学微机原理与接口汇编语言课程资料,重点讲解逻辑操作类指令和80x86指令系统的寻址方式"
在80x86指令系统中,逻辑操作类指令是编程中不可或缺的部分,它们主要用于处理二进制数据的逻辑运算。这些指令包括:
1. **AND** - 逻辑与运算,将两个操作数按位进行与运算,结果中1的位置只有当两个操作数相应位置都是1时才保留。
2. **TEST** - 逻辑测试,它类似于AND但不改变目标寄存器的值,常用于检查位掩码。
3. **OR** - 逻辑或运算,将两个操作数按位进行或运算,只要对应位有一个操作数为1,则结果位就是1。
4. **XOR** - 逻辑异或运算,两个操作数按位进行异或运算,结果位为1的位置是两个操作数相应位不同的位置。
5. **NOT** - 逻辑取反,对操作数进行逐位取反,0变为1,1变为0。
移位运算指令则用于将数据位向左或向右移动:
6. **SHL** - 左移位,将操作数的位向左移动指定的次数,右边用0填充。
7. **SHR** - 右逻辑移位,将操作数的位向右移动,左边用0填充,相当于除以2的幂次。
8. **SAL** - 左算术移位,与SHL相同,但在16位或32位处理器中,左移相当于乘以2的幂次。
9. **SAR** - 右算术移位,保持符号位不变,右边用符号位填充,相当于有符号数除以2的幂次。
10. **ROL** - 左循环移位,位向左移动,最左边的位移至最右边。
11. **ROR** - 右循环移位,位向右移动,最右边的位移至最左边。
12. **RCL** - 左环带进位移位,类似ROL,但会根据CF标志位决定最左边的位。
13. **RCR** - 右环带进位移位,类似ROR,但会根据CF标志位决定最右边的位。
14. **SHLD** 和 **SHRD** - 双字左右移位,用于32位及以上处理器,对双字数据进行移位操作。
位测试并修改指令允许检查和修改存储在内存或寄存器中的特定位:
15. **BT** - 位测试,检查指定位是否设置为1。
16. **BTS** - 位设置,设置指定位,并更新标志位。
17. **BTR** - 位清除,清除指定位,并更新标志位。
18. **BTC** - 位翻转,翻转指定位,并更新标志位。
位扫描指令用于查找第一个设置位或清除位:
19. **BSF** - 找到第一个设置位,返回其位置。
20. **BSR** - 找到第一个清除位,返回其位置。
在80x86处理器的寻址方式中,有以下几种主要类型:
1. **立即寻址** - 操作数直接包含在指令中,如`MOV AX, 1234H`。
2. **寄存器寻址** - 操作数位于寄存器中,如`MOV AX, BX`。
3. **存储器寻址** - 操作数位于存储器中,寻址方式复杂,包括直接寻址、寄存器间接寻址、寄存器相对寻址、基址变址寻址、相对基址变址寻址、比例变址寻址、基址比例变址寻址以及相对基址比例变址寻址等。
理解这些指令和寻址方式对于编写汇编语言程序至关重要,因为它们决定了如何访问和操作数据。
246 浏览量
297 浏览量
点击了解资源详情
120 浏览量
184 浏览量
110 浏览量
2011-04-13 上传
2011-07-23 上传
117 浏览量
杜浩明
- 粉丝: 16
- 资源: 2万+
最新资源
- GameProjectOne
- OpenHU:Android Auto的开源主机应用程序的延续,该应用程序最初由已故的Mike Reid创建。 在使用或提交代码之前,请查阅许可文档,并访问控制台Wiki以获取完整的文档。-Android application source code
- es6-walkthroughs:ECMAscript 6 中新功能的演练
- PHP实例开发源码—php盾灵广告联盟系统.zip
- go-nix
- VisionFaceDetection:在iOS 11中使用Vision框架进行人脸标志检测的示例
- Quiz-application:测验申请包括5个问题
- prometheus-alert-rules:普罗米修斯警报规则的收集
- 秒
- 基于STM32的智能逆变电源设计.zip
- 21世纪信息经济增长的主体效应
- do_something_express_part4:[表示]
- gatsby-conf-main
- leetcode答案-Leetcode:力码
- 清华大学ADAMS基础教程.zip
- 记录:可能永远不应该跟踪的可疑事物的记录