汇编语言1. 基础知识

Posted yznnnn

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了汇编语言1. 基础知识相关的知识,希望对你有一定的参考价值。

1. 计算机系统的硬件组成

  1. 运算器:算数运算和逻辑运算核心
  2. 控制器:发出控制信号,协调工作秩序
  3. 存储器:存放程序和数据
  4. I/O设备:负责输入输出,接受和表示信息

2. Intel 8086 微处理器寄存器组

?? 学习汇编语言,其实就是学习寄存器的运用!Intel 8086 共 14 个 16 位可编程寄存器。

graph LR; 寄存器-->通用寄存器组 寄存器-->控制寄存器组 寄存器-->段寄存器组 通用寄存器组-->数据寄存器组 通用寄存器组-->指针和变址寄存器组 数据寄存器组-->累加器 数据寄存器组-->基址寄存器 数据寄存器组-->计数寄存器 数据寄存器组-->数据寄存器 累加器-->AH,AL 基址寄存器-->BH,BL 计数寄存器-->CH,CL 数据寄存器-->DH,DL 指针和变址寄存器组-->堆栈指针寄存器 指针和变址寄存器组-->基址指针寄存器 指针和变址寄存器组-->源变址寄存器 指针和变址寄存器组-->目的变址寄存器 堆栈指针寄存器-->SP 基址指针寄存器-->BP 源变址寄存器-->SI 目的变址寄存器-->DI 控制寄存器组-->指令指针寄存器 控制寄存器组-->标志寄存器 指令指针寄存器-->IP 标志寄存器-->FLAGS 段寄存器组-->代码段寄存器 段寄存器组-->数据段寄存器 段寄存器组-->堆栈段寄存器 段寄存器组-->附加段寄存器 代码段寄存器-->CS 数据段寄存器-->DS 堆栈段寄存器-->SS 附加段寄存器-->ES

数据寄存器组

?? 既可以作为16位寄存器使用,也可以分为两个8位寄存器使用。这些寄存器既可以作为算数逻辑运算的源操作数,向ALU(算数逻辑单元)提供参与运算的原始数据;也可以作为目标操作数,保存运算的中间结果或最后结果。

指针和变址寄存器组

  1. 指针寄存器:(1)SP 用于在堆栈操作过程中指示堆栈栈顶的偏移地址,称为 堆栈指针 。(2)BP 用来存放位于堆栈段中的一个数据区的“基址”的偏移量,称为 基址指针
  2. 变址寄存器:在串操作指令中,SI 用来存放源操作数地址的偏移量,DI 用来存放目标操作数地址的偏移量

段寄存器组

?? 这些寄存器指明了一个特定的现行段,用来存放各段的段基址。

  1. CS:存放当前使用的代码段的段基址,用户编写的程序必须存放在代码段中,CPU将会依次从代码段中取出指令代码并执行。
  2. DS:存放当前使用的数据段的段基址,程序运行所需的原始数据以及运算的结果应存放在数据段中。
  3. ES:存放当前使用的附加段的段基址,它通常也用来存放数据。
  4. SS:存放当前使用的 堆栈段 的段基址,所有堆栈操作的数据均存放在这个段中。

指令指针寄存器

?? 其内容总是指向BIU将要取的下一条指令代码的16位偏移地址。

标志寄存器

?? 这是最重要的寄存器!它有16位,但只使用了9位。

  • 6位:状态标志位,用来反映算术运算或逻辑运算的结果的状态,CPU自动决定。(OF,SF,ZF,CF,AF,PF)
  • 3位:控制位,用来控制CPU的操作,由人主动决定。(DF,IF,TF)
[egin{matrix} 15&14&13&12&11&10&9&8&7&6&5&4&3&2&1&0 ×&×&×&×&OF&DF&IF&TF&SF&ZF&×&AF&3&PF&×&CF end{matrix} ]
  • 控制位
  1. DF (方向标志,Direction Flag):设定和控制字符串操作指令的步进方向。(DF=1) 时串操作过程中的地址自动递减 1,(DF=0) 时自动递增 1。
  2. IF (中断允许标志,Interrupt Enable Flag):用来控制可屏蔽的中断的标志位。(IF=1) ,开中断,CPU可以接收可屏蔽中断请求;(IF=0) ,关中断,CPU不能接收可屏蔽中断请求。
  3. TF (单步标志,Trap Flag):用来控制CPU进入单步工作方式。(TF=1) 时,8086 CPU 处于单步工作方式,每执行完一条指令就自动产生一次内部中断;(TF=0) 时,CPU不能以单步工作方式工作。主要用于程序调试
  • 状态标志位
  1. OF (溢出标志,OverFlow Flag):表示运算中的溢出情况。(OF=1) 表示当前正在进行的补码运算有溢出;(OF=0) 则无溢出。
  2. SF (符号标志,Sign Flag):表示运算结果的正负情况。(SF=1) 为负;(SF=0) 为正。
  3. ZF (零标志,Zero Flag):表示当前的运算结果是否为零。(ZF=1) 为零;(ZF=0) 则为非零。
  4. AF (辅助进位标志,Auxiliary Carry Flag):表示加法或减法中运算结果中 3位 向 4位 产生进位或借位的情况。(AF=1) 表示有进位借位;(AF=0) 表示无进位借位。
  5. PF (奇偶校验标志,Patity Flag):表示本次运算结果中包含“1”的个数。(PF=1) 则表示有偶数个“1”;(PF=0) 则表示有奇数个“1”。
  6. CF (进位标志,Carry Flag):表示本次加法或减法运算中 最高位 产生进位或借位的情况。(CF=1) 表示有进位或借位;(CF=0) 表示无进位或借位。

3. 存储方式

以上是关于汇编语言1. 基础知识的主要内容,如果未能解决你的问题,请参考以下文章

汇编语言基础知识的理解

汇编语言第1章 基础知识

汇编语言课堂总结1——第一章 基础知识

汇编语言 第一章 基础知识

IA-32汇编语言笔记—— 基础知识

1.基础知识