3

汇编语言入门-段寄存器和标志位

 1 year ago
source link: https://blog.51cto.com/apple0/5358600
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

汇编语言入门-段寄存器和标志位

原创

最爱大苹果 2022-06-05 11:20:10 博主文章分类:汇编语言学习 ©著作权

文章标签 段寄存器 文章分类 其他 编程语言 阅读数176

在汇编语言中,段寄存器很重要。

8086CPU有4个段寄存器,每个段寄存器用来确定一个逻辑段的起始位置,每种逻辑段均有各自的用途:

 CS(代码段):指明代码的起始地址

       利用CS:IP取得下一条要执行的指令

 SS(堆栈段):指明堆栈段的起始地址

       利用SS:SP操作堆栈顶的数据

 DS(数据段):指明数据的起始地址

      利用DS:EA存取数据段中的数据

 ES(附加段):指明附加段的起始地址

     利用ES:EA存取附加段中的数据

注意 : 没有指明段前缀时,一般的数据访问在 DS(数据)段

标志寄存器

标志寄存器一般记录运算结果的状态。

运算结果标志位:

ZF标志(ZeroFlag):

     零位标志位,它记录相关指令执行后的结果是否为0,如果是0,那么ZF=1,如果结果不为0,那么ZF=0。

PF标志(ParityFlag):

    奇偶标志位,它记录相关指令执行后,其结果的所有二进制位中1个个数是否为偶数,如果是偶数,PF=1,反之为0。

SF标志(SignFlag):

    符号标志位,它记录相关指令执行后,其结果是否为负,如果结果为负,SF=1,如果非负,SF=0。

CF标志(Carry进位,Flag标志):

     进位标志位,一般情况,进行无符号运算时,它记录运算结果的最高位向更高位的进位值,或从更高位的借位值,如果运算结果的最高位产生了一个进位或借位,那么其值为1,否则其值为0。

OF标志(Overflow溢出,Flag标志):

     溢出标志位,在进行有符号数运算的时候,如果结果超出了机器所能表示的范围称为溢出,OF的值被置为1,否则OF的值为0。

注意:这里所说的溢出,只是对有符号运算而言。

状态控制标志位:

TF标志(TrapFlag):

    追踪标志位,当追踪标志被置为1时,CPU进入单步执行方式,即每执行一条指令产生一个单步中断请求,这种方式主要用于程序的调试。

IF标志(Interrupt-enable Flag):

     中断允许标志位,用来决定CPU是否响应CPU外部的可屏蔽中断发出的中断请求,但不管该标志为何值,CPU都必须响应CPU外部的不可屏蔽中断所发出的中断请求,以及CPU内部产生的中断请求。

      当IF=1时,CPU可以相应CPU外部的可屏蔽中断发出的中断请求。

      当IF=0时,CPU不响应CPU外部的可屏蔽中断发出的中断请求。

      CPU的指令系统中也有专门的指令来改变标志位IF的值。

汇编语言入门-段寄存器和标志位_段寄存器

标志位的作用。

  • 收藏
  • 评论
  • 分享
  • 举报

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK