8086汇编语言:主程序与子程序中的逻辑运算指令
需积分: 0 26 浏览量
更新于2024-08-22
收藏 985KB PPT 举报
"主程序与子程序的调用与返回,以及8086汇编语言中的位操作指令"
在8086汇编语言编程中,主程序与子程序是程序设计中的基本构造块。主程序通常是程序的主要流程,而子程序则是可以被主程序多次调用的独立代码段,用于完成特定功能。调用子程序通常使用`CALL`指令,该指令会将返回地址压入堆栈,然后跳转到子程序的入口。子程序执行完毕后,使用`RET`指令可以从堆栈中弹出返回地址,恢复程序的执行流程,回到`CALL`指令之后的地址。
关于8086的指令系统,其中涉及的寄存器组、寻址方式、数据传送、算术运算、位操作、串操作、控制转移和处理机控制类指令是汇编语言编程的基础。特别是位操作类指令,它们是以二进制位为基本单位进行数据操作的,对于理解和编写低级别程序至关重要。
1. 逻辑运算指令包括:
- `AND`(逻辑与):执行两个操作数的逐位逻辑与运算,只有对应位都为1时,结果位才为1。例如:`MOVAL, 45h` 后 `ANDAL, 31h` 会使得 `AL` 寄存器中的值变为 `01h`。
- `OR`(逻辑或):执行两个操作数的逐位逻辑或运算,只要对应位有一个为1,结果位就为1。如:`MOVAL, 45h` 后 `ORAL, 31h` 会使得 `AL` 寄存器中的值变为 `75h`。
- `XOR`(逻辑异或):执行两个操作数的逐位逻辑异或运算,只有对应位不同时,结果位才为1。例如:`MOVAL, 45h` 后 `XORAL, 31h` 会使得 `AL` 寄存器中的值变为 `74h`。
- `NOT`(逻辑非):对一个操作数进行逐位逻辑非运算,即0变1,1变0。如:`MOVAL, 45h` 后 `NOTAL` 会使得 `AL` 寄存器中的值变为 `BAh`。
2. 移位指令包括:
- `SHL`(左移):将操作数的位向左移动指定的次数,空出的位由符号位填充。
- `SHR`(右移):将操作数的位向右移动指定的次数,空出的位由符号位填充。
- `SAR`(算术右移):类似 `SHR`,但空出的位由原数值的符号位填充,保持了数值的算术性质。
- `ROL`(循环左移)和 `ROR`(循环右移):循环移动位,最左边的位移入最右边,最右边的位移入最左边。
这些位操作指令常用于设置或清除特定位,位测试,以及实现复杂的逻辑操作。比如,`AND` 指令可以用来复位某些位(将位设为0),而 `OR` 可以用来置位某些位(将位设为1)。在编写高效的汇编代码时,熟练掌握这些指令是至关重要的。
2010-06-26 上传
2009-12-26 上传
380 浏览量
2022-12-02 上传
2012-08-26 上传
2021-05-23 上传
2011-09-11 上传
点击了解资源详情
点击了解资源详情
受尽冷风
- 粉丝: 29
- 资源: 2万+
最新资源
- 火炬连体网络在MNIST的2D嵌入实现示例
- Angular插件增强Application Insights JavaScript SDK功能
- 实时三维重建:InfiniTAM的ros驱动应用
- Spring与Mybatis整合的配置与实践
- Vozy前端技术测试深入体验与模板参考
- React应用实现语音转文字功能介绍
- PHPMailer-6.6.4: PHP邮件收发类库的详细介绍
- Felineboard:为猫主人设计的交互式仪表板
- PGRFileManager:功能强大的开源Ajax文件管理器
- Pytest-Html定制测试报告与源代码封装教程
- Angular开发与部署指南:从创建到测试
- BASIC-BINARY-IPC系统:进程间通信的非阻塞接口
- LTK3D: Common Lisp中的基础3D图形实现
- Timer-Counter-Lister:官方源代码及更新发布
- Galaxia REST API:面向地球问题的解决方案
- Node.js模块:随机动物实例教程与源码解析