-
【汇编语言】1. 基础知识
1. 计算机系统的硬件组成
- 运算器:算数运算和逻辑运算核心
- 控制器:发出控制信号,协调工作秩序
- 存储器:存放程序和数据
- I/O设备:负责输入输出,接受和表示信息
2. Intel 8086 微处理器寄存器组
学习汇编语言,其实就是学习寄存器的运用!Intel 8086 共 14 个 16 位可编程寄存器。
数据寄存器组
既可以作为16位寄存器使用,也可以分为两个8位寄存器使用。这些寄存器既可以作为算数逻辑运算的源操作数,向ALU(算数逻辑单元)提供参与运算的原始数据;也可以作为目标操作数,保存运算的中间结果或最后结果。
指针和变址寄存器组
- 指针寄存器:(1)SP 用于在堆栈操作过程中指示堆栈栈顶的偏移地址,称为 堆栈指针 。(2)BP 用来存放位于堆栈段中的一个数据区的“基址”的偏移量,称为 基址指针。
- 变址寄存器:在串操作指令中,SI 用来存放源操作数地址的偏移量,DI 用来存放目标操作数地址的偏移量
段寄存器组
这些寄存器指明了一个特定的现行段,用来存放各段的段基址。
- CS:存放当前使用的代码段的段基址,用户编写的程序必须存放在代码段中,CPU将会依次从代码段中取出指令代码并执行。
- DS:存放当前使用的数据段的段基址,程序运行所需的原始数据以及运算的结果应存放在数据段中。
- ES:存放当前使用的附加段的段基址,它通常也用来存放数据。
- SS:存放当前使用的 堆栈段 的段基址,所有堆栈操作的数据均存放在这个段中。
指令指针寄存器 IP
其内容总是指向BIU将要取的下一条指令代码的16位偏移地址。
标志寄存器
这是最重要的寄存器!它有16位,但只使用了9位。
- 6位:状态标志位,用来反映算术运算或逻辑运算的结果的状态,CPU自动决定。(OF,SF,ZF,CF,AF,PF)
- 3位:控制位,用来控制CPU的操作,由人主动决定。(DF,IF,TF)
- 控制位
- DF (方向标志,Direction Flag):设定和控制字符串操作指令的步进方向。 时串操作过程中的地址自动递减 1, 时自动递增 1。
- IF (中断允许标志,Interrupt Enable Flag):用来控制可屏蔽的中断的标志位。 ,开中断,CPU可以接收可屏蔽中断请求; ,关中断,CPU不能接收可屏蔽中断请求。
- TF (单步标志,Trap Flag):用来控制CPU进入单步工作方式。 时,8086 CPU 处于单步工作方式,每执行完一条指令就自动产生一次内部中断; 时,CPU不能以单步工作方式工作。主要用于程序调试。
- 状态标志位
- OF (溢出标志,OverFlow Flag):表示运算中的溢出情况。 表示当前正在进行的补码运算有溢出; 则无溢出。
- SF (符号标志,Sign Flag):表示运算结果的正负情况。 为负; 为正。
- ZF (零标志,Zero Flag):表示当前的运算结果是否为零。 为零; 则为非零。
- AF (辅助进位标志,Auxiliary Carry Flag):表示加法或减法中运算结果中 3位 向 4位 产生进位或借位的情况。 表示有进位借位; 表示无进位借位。
- PF (奇偶校验标志,Patity Flag):表示本次运算结果中包含“1”的个数。 则表示有偶数个“1”; 则表示有奇数个“1”。
- CF (进位标志,Carry Flag):表示本次加法或减法运算中 最高位 产生进位或借位的情况。 表示有进位或借位; 表示无进位或借位。
3. 存储方式
8086 CPU 的地址总线有20根,可以直接寻址 的存储器空间。然而它的寄存器只有 16位 ,只能直接寻址 $ 2{16}=26×2^{10}=64\ KB $ 的空间。为了以小寻大,采用 存储器地址分段的方法。
这个方法的核心是间存储器的地址分段,段基址用16位表示,然后用两个寄存器指明在哪一段和段内的哪一部分,即可完成寻址,逻辑地址={段基址:段偏移地址}:
举个例子,现已知一个逻辑地址为 {B21H : 4567 H},现在将其转换为物理地址:
4. 进制转换
计算机只认识二进制的语言,但要人类去读二进制则显得冗长,故而一般将二进制转换为十六进制来进行阅读。转换的一般途径如下:
4.1. 十进制——>二进制
十进制转换为二进制主要使用取余法。比如求十进制数125的二进制数:
再比如求十进制数837的二进制数:
4.2. 二进制——>十进制
二进制转十进制就是一个加权求和的过程,比如将 转为十进制:
4.3. 二进制与八进制和十六进制的互相转换
二进制与八进制和十六进制的转换非常简单,4位二进制对应1位十六进制,3位二进制对应1位八进制。
比如将 转换为 十六进制 则为 ,转换为八进制则为 。
原文:https://www.cnblogs.com/yznnnn/p/10546237.html