常见的寄存器记录(转载)

通用寄存器

通用寄存器(General Register)共有8个,分为两类。

1 数据寄存器

数据寄存器包括:AX(Accumulator)、BX(Base)、CX(Counter)、DX(Data)四个通用寄存器。
数据寄存器可以以字节(8位)为单位,也可以以字(16位)为单位进行操作。
AX:AH,AL作为累加器,在算术、逻辑运算中,也在某些指令中隐含使用。
BX:BH,BL经常用作基址寄存器。
CX:CH,CL在循环指令和串操作指令中隐含作为计数器用。
DX:DH,DL经常用在乘法除法存放高位字,存放I/O端口地址。

例:AX:01001110 00100000B (4E20H)
AH:01001110B (4EH)
AL:00100000B (20H)
2) 指针寄存器及变址寄存器
指针寄存器包括SP和BP,变址寄存器包括SI和DI。这四个寄存器不能分为字节,只能以字为单位使用。
SP(Stack Pointer)为堆栈指针寄存器,用来指示栈顶的偏移地址,确定堆栈段中的某一存储单元的地址。
BP(Base Pointer)为基址指针寄存器,BP与段寄存器SS联用,可作为堆栈区中的一个基地址,以相对方式访问堆栈中的存储单元。
SI(Source Index)为源变址寄存器。SI与段寄存器DS联用,用来确定数据段中某一存储单元的地址。
DI(Destination Index)为目的变址寄存器。DI可与DS、ES联用,用来确定数据段或附加段中某一存储单元的地址。

2 段寄存器

CS(Code Segment)为代码段寄存器,只能存放程序段首地址。
DS(Data Segment)为数据段寄存器,只能存放数据段首地址。
ES(Extra Segment)为附加段寄存器,只能存放数据段首地址。
SS(Stack Segment)为堆栈段寄存器,只能存放堆栈段首地址。
主存划分成多少个存储段是任意的。但是把由段寄存器CS,DS,ES,SS指明的段称为当前段,在程序运行的任何时刻,主存最多只能有4个当前段。

3 控制寄存器

控制寄存器有两个,即指令指针IP和标志寄存器FR。
1) IP(Instruction Point)指令指针
IP是指令地址指针,用以指示程序运行至何处。程序运行时,IP的值自动修改,但始终存放即将执行指令的段内偏移地址。
IP不能用指令直接访问,即不能用指令去取出IP的值或者给IP设定值。
2) FR(Flags Register)标志寄存器
标志寄存器FR体现了处理器CPU的当前状态和某些控制。FR共有9个标志位。其中6个(CF,PF,AF,ZF,SF,OF)为标志位,反映算术或逻辑运指令执行后的某些状态;另外3个标志位(TF,IF,DF)为控制标志位,用以体现处理器CPU的控制。PSW机器状态字。
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
OF DF IF TF SF ZF AF PF CF
OF(Overflow Flag)溢出位:当运算的结果超过字长所能表示的范围时,产生“溢出”。此时,OF置1记为OV(Overflow)。否则,OF清0,记为NV(Non Overflow),溢出产生的原因是由于同号数相加或异号数相减。
CF(Carry Flag)进位位:当进行算术运算时,如最高位(对字操作是第15位,对字节是第7位)产生进位(加类运算)或借位(减类运算),则CF置1,记CY(Carry)否则清0记为NV(Non-Carry)。在移动位类指令中CF用以保存从最高位(左移时)或最低位(右移时)移出的位。
溢出与进位是两个不同的概念:进位产生的含义是无符号数的运算结果超过8位或16位。而溢出产生的含义是有符号数的运算结果超过7位或15位,数值占据了符号位。
SF(Sign Flag)符号位:当运算结果为负时,SF置1,记为NG(Negative)为正时清0记为PL(Plus)。
ZF(Zero Flag)零位:若运算结果各位全为0时,则ZF置1,记为ZR(Zero)。否则清0记为NZ(Non Zero)。
AF(Auxiliary Carry Flag)辅助进位位:算术运算时,若低字节中低4位(即第3位)产生进位(加法)或借位(减法)时,则AF置1记为AC(Auxiliary Carry)。否则清0记为NA(Non-Auxiliary Carry)。AF只反映运算结果的低4位向高位进位,它是十进制调整的依据。
PF(Parity Flag)奇偶位:若操作结果低8位中有偶数个1时,则PF置为1,记为PE(Parity Even)。否则PF清0记为PO(Parity Odd)。
TF(Trace Flag)单步跟踪位:当设定TF=1时,CPU每执行完一条指令将产生一个单步中断,用作调试程序的手段。进入单步中断处理程序时TF清0.
DF(Directions Flag)方向位:DF规定变址寄存器SI,DI中地址增减。当设定DF=1时记为DN(Down),进行串操作时,SI,DI中的地址自动递减。当DF=0时记为UP(UP),进行串操作时,SI,DI中的地址自动递增。
IF(Interrupt-enable Flag)中断允许位:当设定IF=1时,记为EI(Enable Interrupt),CPU将响应可屏蔽中断源的中断请求。设定IF=0时,记为DI(Disenable Interrupt),CPU则不理睬来自可屏蔽中断请求。

Debug的使用

Debug:是DOS、windows都提供的调试工具。使用它,可以查看CPU各种寄存器中的内容、内存的情况和机器级跟踪程序的运行。
Debug的功能:
R命令:查看、改变CPU寄存器的内容。
如:-r -r ax -r ip -r cs
D命令:查看内存中的内容。
-d -d 段地址:偏移地址 -d 段地址:起始偏移地址 结尾偏移地址
-d 0CA2:0100 -d 1000:0 9
E命令:修改内存中的内容。
-e 起始地址 数据 数据 数据…… -e起始地址 数据(如果数据为字符则加‘’)
-e 1000:0 0 1 2 3 4 5 6 7 8 9 -e 1000:0 1 ‘a’ 2 ‘b’ 3 ‘c’
U命令:将内容中的机器指令翻译成汇编指令。
-u -u 段地址:偏移地址
T命令:执行一条机器指令。
-t
A命令:以汇编指令格式在内存中写入一条机器指令。
-a -a段地址:偏移地址
g命令:执行

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值