《汇编语言》学习笔记3——寄存器
8086寄存器
1.CPU有14个寄存器:AX、BX、CX、DX、SI、DI、SP、BP、IP、CS、SS、DS、ES、PSW
1.通用寄存器(数据寄存器):AX、BX、CX、DX。用于存放一般性的数据
AX:作累加器用,是算术运算符的主要寄存器
BX:基址寄存器
CX:计数器
DX:在做双精度运算时,用来与AX一起存放一个双字节操作数
2.地址寄存器:指针、变址寄存器。(SI、DI、SP、BP)
SI:源地址寄存器,用于存放源缓冲区的偏移地址
DI:目的变址寄存器,用于存放目的缓冲区的偏移地址
SP:堆栈指针寄存器,用于指出堆栈区的偏移地址
BP:基址指针寄存器,用于指出堆栈去某个单元的偏移地址
3.段寄存器:CS、DS、ES、SS
CS:代码段寄存器,用于指出存放程序的代码段的段地址 CS:IP可标识其指向的内存单元里存放的数据是执行指令
DS:数据段寄存器,用于指出存放数据的数据段的段地址 DS可标识其指向的内存单元里存放的数据是数据
ES:附加段寄存器,用于指出存放附加数据的附加段的段地址
SS:堆栈寄存器,用于指出堆栈去的堆栈段的段地址 SS::SP可标识其指向的内存单元为栈,可进行栈的操作 SS存放栈顶的段地址,SP存放栈顶的偏移地址。任意时刻SS:SP都指向栈顶
4.控制寄存器:IP、FLAGS(PSW程序状态字)。控制程序的执行
IP:指令寄存器,存放代码段的偏移地址、指出当前正在执行指令的下一条指令所在单元的偏移地址
FLAGS标志寄存器的某位代表CPU的1个标志,表示CPU数为某种执行状态,最低位为D0,最高位为D15。
8086CPU的标志寄存器有9个标志,分别为6个条件标志和3个控制标志
1.条件码标志:
CF 进位标志 当指令执行结果的最高位向前有进位时, CF=1,否则CF=0
SF 符号标志 当指令执行结果的最高位(符号位)为负时,SF=1,否则SF=0
ZF 零标志 当前指令执行结果为0时,ZF=1,结果不为0时,ZF=0
OF 溢出标志 当指令执行结果有溢出(超出了数的表示范围)时,OF=1,否则OF=0
AF 辅助进位标志 当指令执行结果的第3位(半字节)向前有进位时,AF=1,否则AF=0
PF 奇偶标志 当指令执行结果中1的个数为偶数个时,PF=1,否则PF=0
2.控制标志
DF 方向标志 在执行串处理指令时,若设置DF=0,存储单元的地址寄存器的值自动增加,若设置DF=1,存储单元的地址寄存器的值自动减小
IF 中断标志 设置IF=1,允许CPU响应可屏蔽中断,IF=0则不响应
TF 陷阱标志 在DEBUG调试时,TF=1,采用单步执行方式,即进入陷阱 ,TF=0,正常执行程序
一个16位的寄存器可以存储一个16位的数据(即数据最大值为2的16次方减1,65535)
其中又可分为两个8位寄存器:H、L。后缀为H的是高8位寄存器(AH),L是低8位寄存器(AL)
一个8位寄存器存数据最大为2的8次方减1,255
8086CPU可一次性处理两种尺寸的数据:
字节(byte):一个字节由8个比特(bit)(即二进制位)组成,可存在8位寄存器中
字(word):一个字由两个字节组成,两个字节分别为这个字的高位字节和低位字节【字的存储和值相反,如:字值为1234H,在存储单元中先存34H(高字节),再存12H(低字节)】
2.16位结构的CPU特性:
1.运算器一次最多处理16位的数据
2.寄存器的最大宽度为16位
3.寄存器和运算符之间的通路为16位
3.CPU中只能用指令读写的部件只有寄存器,MOV指令被称为传送指令可改变大部分寄存器的值,但不能用于设置CS、IP的值。
4.能改变CS、IP的内容的指令被统称为转移指令,最简单的修改CS、IP的指令:JMP指令
JMP 段位移 :偏移地址 用指令中给出的段地址改CS,偏移地址修改IP
只修改IP则可用:JMP 寄存器(合法) 用寄存器的值修改IP
5.CPU只认被CS:IP指向的内存单元的内容为指令6.DS寄存器用来存放段地址,用[内容]表示一个内存单元