码迷,mamicode.com
首页 > 编程语言 > 详细

【汇编语言】1. 基础知识

时间:2019-03-17 13:41:11      阅读:254      评论:0      收藏:0      [点我收藏+]

标签:基础知识   car   begin   指针   参与   指示   intel   信息   程序   

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)
\[\begin{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. 基础知识

标签:基础知识   car   begin   指针   参与   指示   intel   信息   程序   

原文地址:https://www.cnblogs.com/yznnnn/p/10546237.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!