汇编语言 第二章 —— 80x86微处理器

汇编语言 第二章 —— 80x86微处理器

回头看第二章其实就两点比较重要。一个是寄存器的一些基本概念,另一个是状态标志位。

寄存器

在这里插入图片描述
我们按顺序了解一下这些寄存器。

数据寄存器
在这里插入图片描述

  • 一个寄存器有16位(2字节,1字),在内存中占两个存储单元的位置所以可以对半拆分成高八位和低八位。
  • 8086的基址寄存器为BX,BP。这个知识点在第三章中用于识别基址加变址寻址有用。
  • CX用作计数器。之后的移位运算中当移动位数超过1时就会用CL来存。
  • 经常用DX:AX来表示两个字的数据。

指针寄存器
在这里插入图片描述
变址寄存器
在这里插入图片描述
这里要跟前面的基址一起组成基址加变址寻址。

段寄存器
在这里插入图片描述
在这里插入图片描述
专用寄存器
在这里插入图片描述练习题:
在这里插入图片描述

状态标志位(Flag)

  1. 进位标志(CF)
    若 结果的最高位上产生一个进位或借位则CF=1,否则为0.
  2. 溢出标志(OF)
    运算过程中产生溢出则OF=1。
    eg:正数 + 正数 = 负数,负数 + 负数 = 正数,正数 - 负数 = 负数 ,负数 - 正数 = 正数……即为溢出。
  3. 零标志(ZF)
    若运算结果为0则ZF = 1,否则为0.
  4. 符号标志(SF)
    SF与结果的最高位相同,即正数SF = 0,负数SF = 1.
  5. 奇偶标志(PF)
    若结果低8位中所含1的个数为偶数则PF = 1,否则PF = 0
  6. 辅助进位标志(AF)
    若结果的低4位产生一个进位或借位则AF = 1,否则为0

这些标志位前四个比较重要,是第二章考察的核心要点。

来看个例题:
在这里插入图片描述

  • 虽然这里最高位从0变到1,但这是第二高位产生的进位而不是最高位产生的进位。所以这里CF = 0
  • 最高位为1,显然SF = 1
  • 结果不为0,故ZF = 0
  • 我们发现这里两个正数相加结果却是一个负数说明溢出了。判断16进制有符号数是正数还是负数我们不用麻烦的转化成二进制去看最高位,当16进位数最高位的数字>8时说明转化成二进制后必然是一个以1打头的数,即为负数。相反,当16进制数最高位<8时为正数。

在这里插入图片描述

  • 这里最高位产生进位故CF = 1
  • 结果显然不为0故ZF = 0
  • 进位而产生的1被舍去,所以最高位是0故SF = 0
  • 这里虽然产生了进位但这并不代表溢出了。因为这里是负数 + 正数 = 正数。故并没有溢出即OF = 0
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
第1章 预备知识 1.1 机器语言与汇编语言 1.1.1 机器语言 1.1.2 汇编语言 1.1.3 书中使用符号的说明 1.2 Intel系列机简介 1.2.1 Intel 80X86微处理器简介 1.2.2 Intel 80X86微处理器结构 1.2.3 80X86的3种工作方式 1.3 主存储器和物理地址的形成 1.3.1 主存储器 1.3.2 堆栈 1.3.3 物理地址的形成 1.4 数据在计算机内的表示形式 1.4.1 数值数据在计算机内的表示形式 1.4.2 BCD码 1.4.3 字符数据在机内的表示形式 1.5 标志寄存器 1.5.1 标志位 1.5.2 标志寄存器操作指令 1.6 汇编源程序举例 第2章 寻址方式 2.1 寄存器寻址 2.2 寄存器间接寻址 2.3 变址寻址 2.4 基址加变址寻址 2.5 立即寻址 2.6 直接寻址 2.7 寻址方式的有关问题 2.8 寻址方式综合举例 第3章 宏汇编语言 3.1 宏汇编语言中的表达式 3.1.1 常量与数值表达式 3.1.2 变量、标号与地址表达式 3.2 常用的机器指令语句 3.2.1 数据传送指令 3.2.2 算术运算指令 3.2.3 位操作指令 3.3 伪指令语句 3.3.1 处理器选择伪指令 3.3.2 数据定义伪指令 3.3.3 符号定义伪指令 3.3.4 段定义伪指令 3.3.5 源程序结束伪指令 3.4 常用的DOS系统功能调用 3.4.1 概述 3.4.2 常用的输入/输出系统功能调用 3.5 MASM的功能 3.5.1 MASM的功能 3.5.2 汇编过程 3.5.3 汇编列表文件 3.5.4 符号交叉列表文件 第4章 程序设计的基本方法 4.1 概述 4.2 顺序程序设计 4.3 分支程序设计 4.3.1 转移指令 4.3.2 分支程序设计举例 4.4 循环程序设计 4.4.1 循环程序的结构和控制方法 4.4.2 单重循环程序设计 4.4.3 多重循环程序设计 4.5 子程序设计 4.5.1 子程序的概念 4.5.2 子程序的定义 4.5.3 子程序的调用与返回 4.5.4 子程序调用现场的保护方法 4.5.5 主程序与子程序之间传递参数的方式 4.5.6 子程序及其调用举例 4.5.7 子程序的嵌套 4.6 程序设计中的注意事项 第5章 程序设计的其他方法和技术 5.1 字符串操作 5.1.1 串操作指令简介 5.1.2 串操作指令 5.2 宏功能程序设计 5.2.1 宏定义 5.2.2 宏调用 5.2.3 宏定义与宏调用中的参数 5.2.4 重复汇编伪指令 5.2.5 条件汇编伪指令 5.2.6 宏库的使用 5.2.7 宏指令与子程序的比较 5.3 模块化程序设计 5.3.1 组合方式 5.3.2 通信方式 5.3.3 连接程序(LINK)的功能 5.3.4 地址分配文件举例 5.4 源程序综合举例 5.4.1 模块程序设计中的注意事项 5.4.2 模块程序设计举例 第6章 输入/输出和WIN32编程 6.1 输入/输出指令和数据的传送方式 6.1.1 输入/输出指令 6.1.2 数据的传送方式 6.2 中断与异常 6.2.1 中断的概念 6.2.2 中断矢量表 6.2.3 软中断及有关的中断指令 6.2.4 中断处理程序的设计 6.3 浮点运算 6.3.1 浮点数据格式 6.3.2 FPU中的寄存器 6.3.3 浮点指令与程序设计 6.4 WIN32编程 6.4.1 WIN32编程基础 6.4.2 WIN32程序的结构 6.4.3 Windows API函数简介 6.4.4 编程实例 第7章 上机操作 7.1 在DOS环境下运行汇编源程序的方法 7.1.1 在DOS环境下运行汇编源程序的必备软件 7.1.2 DOS环境下运行汇编源程序的流程 7.1.3 DOS环境下运行汇编源程序的命令(MASM 6.0及以下版本) 7.2 多模块程序的运行及子程序库的使用 7.2.1 多模块程序的运行 7.2.2 子程序库的使用 7.3 在Windows环境下运行汇编源程序的方法 7.3.1 在Windows环境下运行32位汇编源程序的必备软件 7.3.2 在Windows环境下运行汇编源程序的特点 7.3.3 在Windows环境下32位汇编源程序的运行命令 7.4 调试程序Turbo Debugger的使用 7.4.1 TD的启动和退出 7.4.2 利用TD调试汇编语言程序 7.4.3 调试举例 附录 附录Ⅰ ASCII码字符表 附录Ⅱ 80X86指令系统简表 附录Ⅲ 伪指令表 附录Ⅳ DOS的软中断与系统功能调用 附录Ⅴ 常用BIOS子程序的功能及其调用参数 附录Ⅵ 汇编连接程序错误信息

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值