汇编之寄存器
Posted coder_up
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了汇编之寄存器相关的知识,希望对你有一定的参考价值。
8086寄存器组
数据寄存器
这些寄存器可以字(16位)或字节(8位)单位形式访问
数据寄存器中每个寄存器又可以分为2个8位的寄存器。分别为AH、AL,BH、BL,CH、CL,DH、DL。H表示高字节(高8位)寄存器、L表示低字节(低8位)寄存器。例如 用AX寄存器存放一个字1234H,表示为(AX)=1234H,即高字节12放在AH,低字节34放在AL中
1. AX accumulator
2. BX base
3. CX count
4. DX data
段寄存器
- CS
code segment
- DS
data segment
- ES
extra segment
- SS
stack segment
地址寄存器
这些寄存器只能以字(16位)单位形式访问
地址寄存器包括指针和变址寄存器SP、BP、SI、DI四个16位寄存器。顾名思义,它们可用来存放存储器操作数的偏移地址。另外,它们也可以作为通用寄存器用
1. SI source index
2. DI destination index
3. SP stack pointer
4. BP base pointer
控制寄存器
IP
instruction pointer
指令指针IP 指令指针寄存器,用来存放代码段中的偏移地址,指出当前正在执行指令的下一条指令所在单元的偏移地址
SP
stack pointer
栈指针- FLAGS
(又称为PSW程序状态字)
标志位寄存器,两个16位寄存器。用于控制程序的执行
FLAGS 标志位寄存器单独介绍
FLAGS标志寄存器中的某位代表CPU的1个标志,表示出CPU的某种执行状态。最低位为D0,最高位为D15。8086CPU的标志寄存器共有9个标志,分别为6个条件码标志和3个控制标志。如图:
条件码标志
- 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。
控制标志
- DF方向标志。执行串处理指令时,若设置DF=0,存储单元的地址寄存器的值自动增加,若设置DF=1,存储单元的地址寄存器的值自动减小。
- IF中断标志。设置IF=1,允许CPU响应可屏蔽中断,IF=0则不响应。
- TF陷阱标志。在DEBUG调试时,TF=1,采用单步执行方式,即进入陷阱;TF=0,正常执行程序。
例: 两个二进制数相加运算,有关标志位自动发生变化。
根据计算结果可知CPU会自动地把标志位设为:CF=0,SF=1,ZF=0,OF=0,PF=0,即无进位,结果为负数,结果不为0,没有溢出,奇数个1
DEBUG下的标志位表示
标志名 | 标志 | 值为1 | 值为0 |
---|---|---|---|
进位标志 | CF | CY | NC |
符号标志 | SF | NG | PL |
零标志 | ZF | ZR | NZ |
溢出标志 | OF | OV | NV |
辅助进位标志 | AF | AC | NA |
奇偶标志 | PF | PE | PO |
方向标志 | DF | DN | UP |
中断标志 | IF | EI | DI |
数的补码表示
在计算机中,对带符号数可用真值和机器数两个概念表示。真值,就是带有“+”、“-”号的实际数值;所谓机器数,则是把“+”、“-”符号数值化(0、1)后所得到的计算机实际能表示的数。
机器数有三种码表示,分别是原码、反码和补码。汇编语言中,数都是以补码的形式表示的
,因此必须掌握数的补码表示和补码的运算。这三种码的定义如下:
1. 原码。原码将最高位作为符号位,正数为0,负数为1,其余7位作为数值位。
2. 反码。正数的反码与正数的原码一样。而求负数的反码时,符号位为1,数值位在原码的基础上求反。
3. 补码。正数的补码与正数的原码一样。求负数的补码时,符号位为1,数值位在原码的基础上求反加1。
例 十进制数+5和-5分别表示成二进制数原码、反码和补码。
[+5] 原=[+5] 反=[+5] 补=00000101B
[-5] 原=10000101B
[-5] 反=11111010B
[-5] 补=11111011B
以上是关于汇编之寄存器的主要内容,如果未能解决你的问题,请参考以下文章