汇编———标志(flag)寄存器

汇编———标志(flag )寄存器
⼀、概述
标志(flag)寄存器的作⽤:
1. ⽤来存储相关指令的某些执⾏结果
2. ⽤来为CPU执⾏相关指令提供⾏为依据
3. ⽤来控制CPU相关⼯作⽅式
8086CPU 的flag
寄存器的结构
⼆、debug ⾥看标志位
进⾏标志位学习和验证前,先看⼀下如何在debug⾥看标志位
使⽤命令
屏幕右下⾓打印出来 NV UP EI PL NZ NA PO NC 这些符号代表的就是标志寄存器⾥常⽤的标志位的值
三、标志位
3.1 ZF
ZF,零标志位,flag的第六位记录相关指令执⾏后,结果为0,则ZF=1;若结果不为0,ZF=0.执⾏-r
OF <-----> OV(1) ; NV(0)
DF <-----> DN(1) ; UP(0)
IF <-----> EI(1) ; DI(0)
SF <-----> NG(1) ; PL(0)
ZF <-----> ZR(1) ; NZ(0)
AF <-----> AC(1) ; NA(0)
PF <-----> PE(1) ; PO(0)
CF <-----> CY(1) ; NC(0)
mov  ax,1
sub  ax,1
mov  ax,2
sub  ax,1
可以看到 当计算ax结果为0时,ZF是ZR=1;结果为1(不为0)时,ZF是NZ=0.
3.2 PF
PF,奇偶标志位,flag的第2位记录相关指令执⾏后,其结果所有bit位中1的个数是否为偶数,若为偶数,则PF=1;若为奇数,PF=0.执⾏
验证:
3.3 SF
SF,符号标志位,flag的第7位,记录相关指令执⾏后,其结果是否为负,若为负,则SF=1;若为⾮负,SF=0.执⾏:
mov  al,00000000b
add  al,00000111b
mov  al,00000000b
add  al,00000011b
验证:
当SF=1即为NG,表⽰:若指令进⾏有符号数运算,则结果为负
当SF=0即为PL,表⽰: 若指令进⾏有符号数运算,则结果为⾮负
3.4 CF
CF,进位标志位,flag的第0位,在进⾏⽆符号数运算的时候,CF记录了运算结果的最⾼有效位向更⾼有效位向更⾼位的进位值/借位值执⾏:
mov  al,10000001b
add  al,1
mov  al,10000000b
add  al,01111111b
mov  al,11111111b
add  al,1
add  al,1
sub  al,11111111b
验证:
可以看到产⽣进位或向更⾼位借位都会使CF=1即CY
3.5 OF
OF,溢出标志位,flag的第11位,超出机器所能表⽰的范围称为溢出若发⽣了溢出OF=1,若没有则OF=0⽐如对于8位有符号数据,机器能表⽰范围是 -128~127;对于16位有符号数据,范围是 -32768~32767执⾏:
验证:
四、指令4.1 adc
mov  al,64
add  al,64
mov  al,63
add  al,64
adc是带进位加法指令 adc ax,bx实现(ax)=(ax)+(bx)+CF
利⽤adc指令计算 1EF000H + 201000H,结果放在ax(⾼16位)和bx(低16位)
执⾏结果:
4.2 sbb
sbb是带借位减法指令,sbb ax,bx实现(ax)=(ax)-(bx)-CF
4.3 cmp
cmp是⽐较指令,cmp的功能相当于减法指令,不保存结果,但对标志寄存器产⽣影响⽐如执⾏:
执⾏后:
(ax)=8, zf=0, pf=1, sf=0, cf=0, of=0
4.4 检测⽐较结果的条件转移指令
指令
含义检测的相关标志位je
等于则转移ZF=1jne
不等于则转移ZF=0jb
低于则转移CF=1jnb
不低于则转移CF=0ja
⾼于则转移CF=0且ZF=0jna 不⾼于则转移CF=1或ZF=1    mov  ax,001EH
mov  bx,0F000H
add  bx,1000H
adc  ax,0020H
mov  ax,8
mov  bx,3
cmp ax,bx

本文发布于:2024-09-20 10:23:50,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/2/87517.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:指令   标志   符号   结果   相关   范围   转移   记录
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议