标志寄存器

xiaoxiao2021-02-28  43

标志寄存器

8086的标志寄存器是16位寄存器,它是按位起作用的,也就是说,它的每一位都有专门的含义,记录特定的信息。 8086CPU中没有使用flag的1、3、5、12、13、14、15位,这些位不具有任何含义 标志寄存器的作用 1) 用来存储相关指令的某些执行结果 2) 用来为CPU执行相关指令提供行为依据 3) 用来控制CPU的相关工作方式

1. ZF-零标志 ZF标记相关指令的计算结果是否为0 ZF=1(ZR),表示“结果是0 ”,1表示“逻辑真” ZF=0 ( NZ ),表示“结果不是0”,0表示“逻辑假” 2. PF-奇偶标志 PF记录指令执行后,结果的所有二进制位中1的个数: PF = 1 (PE ),表示1的个数为偶数 PF = 0 (PO),表示1的个数为奇数 3. SF-符号标志 SF记录指令执行后,将结果视为有符号数 SF = 1 (NG), 表示结果为负 SF = 0(PL),表示结果为非负 SF 标志是CPU对有符号数运算结果的一种记录 。 将数据当作有符号数来运算的时候,通过SF可知结果的正负;将数据当作无符号数来运算,SF的值则没有意义,虽然相关的指令影响了它的值。 4. CF-进位标志 在进行无符号数运算的时候,CF记录了运算结果的最高有效位向更高位的进位值,或从更高位的借位值 CF=1(CY), 表示有进位或借位 CF=0(NC), 表示无进位或借位 5. OF-溢出标志 在进行有符号数运算的时候,如结果超过了机器所能表示的范围称为溢出 OF = 1(OV), 表示有溢出 OF = 0(NV), 表示无溢出 eg: mov al,0F0H add al,88H 执行结果:CF=1, OF=1 即当无符号数运算有进位,当有符号数运算有溢出

带进(借)位的加减法

adc-带进位加法指令 格式:adc 操作对象1,操作对象2 功能:操作对象1=操作对象1+操作对象2+CF sbb-带借位减法指令 格式:sbb 操作对象1,操作对象2 功能:操作对象1=操作对象1–操作对象2–CF

cmp与条件转移指令

cmp指令 格式:cmp 操作对象1,操作对象2 功能:比较两个操作对象 原理:相当于减法指令, 只是不保存结果,cmp 指令执行后, 将对标志寄存器产生影响,其他相关指令通过识别这些被影响的标志寄存器位来得知比较结果。 jxxx系列指令和cmp指令配合,构造条件转移指令

根据无符号数比较结果进行转移的指令:

根据有符号数比较结果进行转移的指令:

根据单个标志位转移的指令: j-Jump e-Equal n-Not b-Below a-Above L-less g-Greater s-Sign C-carry p-Parity o-Overflow z-Zero

DF标志和串传送指令

DF-方向标志位(Direction Flag) 功能: 在串处理指令中,控制每次操作后si,di的增减。 DF = 0:每次操作后si,di递增; DF = 1:每次操作后si,di递减。 对DF位进行设置的指令: cld指令:将标志寄存器的DF位设为0(clear) std指令:将标志寄存器的DF位设为1(setup) 串传送指令 1. movsb 功能:以字节为单位传送 (1) ((es)×16 + (di)) = ((ds) ×16 + (si)) (2) 如果DF = 0则: (si) = (si) + 1 (di) = (di) + 1 如果DF = 1则: (si) = (si) - 1 (di) = (di) - 1 2. movsw 功能:以字为单位传送 (1) ((es)×16 + (di)) = ((ds) ×16 + (si)) (2) 如果DF = 0则: (si) = (si) + 2 (di) = (di) + 2 如果DF = 1则: (si) = (si) - 2 (di) = (di) - 2 rep指令 rep指令常和串传送指令搭配使用 功能:根据cx的值,重复执行后面的指令

(1)rep movsb 相当于 s : movsb loop s

(2)rep movsw 相当于 s : movsw loop s

eg: 将data段中的第一个字符串复制到它后面的空间中。 data segment db ‘Welcome to masm!’ db 16 dup (0) data ends

assume cs:codesg,ds:datasg datasg segment db 'Welcome to masm!' db 16 dup (0) datasg ends codesg segment start: mov ax,data mov ds,ax mov si,0 mov es,ax mov di,16 cld ;DF设为0 mov cx,8 rep movsw ;串传送 mov ax,4c00h int 21h codesg ends end start
转载请注明原文地址: https://www.6miu.com/read-35927.html

最新回复(0)