汇编语言1. 基础知识
Posted yznnnn
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了汇编语言1. 基础知识相关的知识,希望对你有一定的参考价值。
1. 计算机系统的硬件组成
- 运算器:算数运算和逻辑运算核心
- 控制器:发出控制信号,协调工作秩序
- 存储器:存放程序和数据
- 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)SP 用于在堆栈操作过程中指示堆栈栈顶的偏移地址,称为 堆栈指针 。(2)BP 用来存放位于堆栈段中的一个数据区的“基址”的偏移量,称为 基址指针。
- 变址寄存器:在串操作指令中,SI 用来存放源操作数地址的偏移量,DI 用来存放目标操作数地址的偏移量
段寄存器组
?? 这些寄存器指明了一个特定的现行段,用来存放各段的段基址。
- CS:存放当前使用的代码段的段基址,用户编写的程序必须存放在代码段中,CPU将会依次从代码段中取出指令代码并执行。
- DS:存放当前使用的数据段的段基址,程序运行所需的原始数据以及运算的结果应存放在数据段中。
- ES:存放当前使用的附加段的段基址,它通常也用来存放数据。
- 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}
]
- 控制位
- DF (方向标志,Direction Flag):设定和控制字符串操作指令的步进方向。(DF=1) 时串操作过程中的地址自动递减 1,(DF=0) 时自动递增 1。
- IF (中断允许标志,Interrupt Enable Flag):用来控制可屏蔽的中断的标志位。(IF=1) ,开中断,CPU可以接收可屏蔽中断请求;(IF=0) ,关中断,CPU不能接收可屏蔽中断请求。
- TF (单步标志,Trap Flag):用来控制CPU进入单步工作方式。(TF=1) 时,8086 CPU 处于单步工作方式,每执行完一条指令就自动产生一次内部中断;(TF=0) 时,CPU不能以单步工作方式工作。主要用于程序调试。
- 状态标志位
- OF (溢出标志,OverFlow Flag):表示运算中的溢出情况。(OF=1) 表示当前正在进行的补码运算有溢出;(OF=0) 则无溢出。
- SF (符号标志,Sign Flag):表示运算结果的正负情况。(SF=1) 为负;(SF=0) 为正。
- ZF (零标志,Zero Flag):表示当前的运算结果是否为零。(ZF=1) 为零;(ZF=0) 则为非零。
- AF (辅助进位标志,Auxiliary Carry Flag):表示加法或减法中运算结果中 3位 向 4位 产生进位或借位的情况。(AF=1) 表示有进位借位;(AF=0) 表示无进位借位。
- PF (奇偶校验标志,Patity Flag):表示本次运算结果中包含“1”的个数。(PF=1) 则表示有偶数个“1”;(PF=0) 则表示有奇数个“1”。
- CF (进位标志,Carry Flag):表示本次加法或减法运算中 最高位 产生进位或借位的情况。(CF=1) 表示有进位或借位;(CF=0) 表示无进位或借位。
3. 存储方式
以上是关于汇编语言1. 基础知识的主要内容,如果未能解决你的问题,请参考以下文章