汇编语言--寄存器
一,如何理解通用寄存器?
1,通用寄存器是用来存放数据的,也称为数据寄存器
2,一个通用寄存器可以分割为两个8位寄存器(之所以内存最小的单元是8位)
AX = AH + AL AX的高8位构成AH寄存器(H=high),AX的低8位构成AL寄存器(L=low)
BX = BH + BL
CX = CH + CL
DX = DH + DL
为什么要分割呢?
为了兼容:之前的cpu都是是8位寄存器,之后的寄存器为了保证以前编写的程序稍加修改就可以运行在8086cpu中
3,8086cpu一次性可以处理两种数据
字节型数据:8位(一个字节)
字型数据:16位(两个字节)
注意:一个字节是这个字型数据的高位字节,一个字节是这个字型数据的低位字节
4,数据与寄存器之间要保证一致性:8位寄存器数据只能转移到8位寄存器,8位数据给8位寄存器,16位数据给16位寄存器
8位寄存器进行8位运算,保存8位数据(当数据超出范围,进位会保存到标志位寄存器中)
二,内存编号的意义?
意义: 段地址寄存器:偏移地址寄存器
段地址寄存器:ds,es,ss,cs
偏移地址寄存器:sp,bp,si,di,ip,bx
三,8086cpu中什么是物理地址,基础地址?
段地址 * 10H + 偏移地址 = 物理地址
段地址 * 10H = 基础地址
基础地址 + 偏移地址 = 物理地址
这么划分的理由是什么呢?
在8086cpu中有20跟地址线,但是寄存器只有16位,为了提高寻址能力,设计者们引用了“地址加法器”的概念。通过对段地址和偏移地址进行运算来充分利用20根地址线
四,cpu如何区分指令和数据?
1,在内存中指令和数据是没有任何区别的,都是二进制信息
2,cpu在工作的时候,会将cs段地址寄存器和ip这个偏移地址寄存器组合起来(cs:ip),从它指向的内存单元中读取内容当作指令来执行