汇编语言标志位(CF)及一些常用指令
- 格式:doc
- 大小:32.50 KB
- 文档页数:7
汇编语言标志位(CF)及一些常用指令
英文翻译:
carry 进位 flag标志
NV: no overflow OV: overflow
UP: up DN:down
DI: disable interrupt EI: enable interrupt
PL: plus NG: negative
NZ: no zero ZR: zero
NA: no assistant carry AC: assistant carry
PO: parity odd PE: parity even 奇偶校验
NC: no carry CY: carry
汇编标志位:
标志名 标志 1 标志 0
OF (溢出标志) OV NV
DF (方向标志) UP DN
IF (中断标志) DI EI
SF (符号标志位) PL NG
ZF (零标志) NZ ZR
AF (辅助进位标志位) NA AC
PF (奇偶标志) PO PE
CF (进位标志 ) NC CY
OF 溢出(是/否) OV OVerflow NV Not oVerflow
DF 方向(减量/增量) DN DowN UP UP
IF 中断(允许/关闭) EI Enable Interrupt DI Disable Interrupt
SF 符号(负/正) NG NeGative PL PLus
ZF 零(是/否) ZR ZeRo NZ Not Zero
AF 辅助进位(是/否) AC Auxiliary Carry NA Not Auxiliary
PF 奇偶(是/否) PE Parity Even PO Parity Odd
CF 进位(是/否) CY CarrY NC Not Carry
英文解释:
NV: no overflow OV: overflow
UP: up DN:down
DI: disable interrupt EI: enable interrupt
PL: plus NG: negative
NZ: no zero ZR: zero
NA: no assistant carry AC: assistant carry
PO: parity odd PE: parity even
NC: no carry CY: carry
先熟悉一下FLAGS标志位:
OV、NV即溢出标志位OF=1或0,表示运算结果有无溢出。当算术运算的结果超出了带符号数的范围(8位带符号数的范围是-128——+127,16位的是-32728——+32767)。
DN、UP即方向标志位DF=1或0,表示串操作时按地址减或加的方式进行。
EI、DI即中断标志位IF=1或0,表示CPU可否响应可屏蔽中断请求。IF的状态对不可屏蔽中断及内部中断没有影响。
NG、PL即符号标志位SF=1或0,表示运算结果是负(最高位为1)或正(最高位为0)。
ZR、NZ即零标志位ZF=1或0,表示运算结果是0或非0。
AC、NA即辅助进位标志位AF=1或0,在8位加减法操作中表示低4位向高4位有无进借位。
PE、PO即奇偶标志位PF=1或0,表示逻辑运算结果中1的个数是否为偶数。
CY、NC即进位标志位CF=1或0,表示加减法操作中最高位有无进借位。
8086寄存器
通用寄存器
AH&AL=AX(accumulator):累加寄存器,常用于运算;在乘除等指令中指定用来存放操作数,另外,所有的I/O指令都使用这一寄存器与外界传送数据。
BH&BL=BX(base):基址寄存器,常用于地址索引。
CH&CL=CX:计数寄存器,常用于计数;常用于保存计算值,如在移位指令,循环(loop)和串处理指令中用作隐含的计数器。
DH&DL=DX:数据寄存器,常用于数据传递。
段寄存器
CS(Code Segment):代码段寄存器
DS(Data Segment):数据段寄存器
SS(Stack Segment):堆栈段寄存器
ES(Extra Segment):附加段寄存器
指针寄存器和变址寄存器
SP(Stack Pointer):堆栈指针,与SS配合使用,可指向目前的堆栈位置。
BP(Base Pointer):基址指针寄存器,可用作SS的一个相对基址位置。
SI(Source Index):源变址寄存器,可用来存放相对于DS段之源变址指针。
DI(Destination Index):目的变址寄存器,可用来存放相对于ES段之目的变址指针。
IP(Instruction Pointer):指令指针
PSW(Program Status Word):程序状态寄存器
ZF(Zero Flag):零标志位,用来反映运算结果是否为0。如果运算结果为0,则其值为1,否则其值为0。
PF(Parity Flag):奇偶标志位,用来反映运算结果中“1”的个数的奇偶性,如果“1”的个数为偶数,则PF的值为1,否则其值为0。
SF(Sign Flag):符号标志位,用来反映运算结果的符号位,它与运算结果的最高位相同。
CF(Carry Flag):进位标志位,用来反映运算结果是否产生进位或借位,如果运算结果的最高位产生了一个进位或借位,那么,其值为1,否则为0。
OF(Overflow Flag):溢出标志位,用来反映有符号数加减运算所得结果是否溢出。如果运算结果超出当前运算位数所能表示的范围,则称为溢出,OF的值被置为1,否则,OF的值被清为0。
DF(Direction Flag):方向标志位,用来决定在串操作指令执行时有关指针寄存器发生调整的方向。
IF(Interrupt Flag):中断标志位,IF=1处理可屏蔽中断,IF=0不出来可屏蔽中断。
TF(Trace Flag):跟踪标志位,该标志可用于程序调试,没有专门的指令来设置或清除。
AF(Auxiliary carry Flag):辅助进位标志位,在字操作时,发生低字节向高字节进位或借位时;在字节操作时,发生低4位向高4位进位或借位时。
相关指令
abc(c-carry):带进位加法指令。它利用了CF位上记录的进位值。
sbb(b-borrow):带借位减法指令。它利用了CF位上记录的借位值。
cmp(compare):比较指令。它的功能相当于减法指令,只是不保存结果。
je(e-equal):ZF=1则转移
jne(ne-not equal):ZF=0则转移
jb(b-below):CF=0则转移
jnb(nb-not below):CF=0则转移
ja(a-above):CF=0且ZF=0则转移
jna(na-not above):CF=1或ZF=1则转移
movesb(b-byte):传送一个字节
movesw(w-word):传送一个字
rep movesb(rep-repeat):循环执行字节串传送指令
rep movesw(rep-repeat):循环执行字串传送指令
cld(clear DF):将DF置0
std(set DF):将DF置1
pushf(push flag):将标志寄存器的值压栈
popf(pop flag):从栈中弹出数据送入标志寄存器
Debug中标志位的表示:
标志位 值为1 值为0
OF(Overflow Flag) OV(overflow) NV(no overflow)
SF(Sign Flag) NG(negative) PL(plus)
ZF(Zero Flag) ZR(zero) NZ(no zero)
PF(Parity Flag) PE(parity even) PO(parity odd)
CF(Carry Flag) CY(carry) NC(no carry)
DF(Direction Flag) DN(down) UP(up)
AF(Auxiliary carry Flag) AC(assistant carry) NA(no assistant carry)
IF(Interrupt Flag) EI(enable interrupt) DI(disable interrupt)
TF(Trace Flag)
AX BX CX DX是CPU内部的通用寄存器中的数据寄存器,数据寄存器一般用于存放参与运算的数据或运算的结果,每一个数据寄存器都是16位的(即16个二进制位),但又可以将高,低8位分别作为两个独立的8位寄存器使用.它们的高8位记作AH,BH,CH,DH,低8位记作
AL,BL,CL,DL.这种灵活的使用方法给编程带来极大的方便,既可以处理16位数据,也能处理8位数据.
数据寄存器除了作为通用寄存器使用外,它们还有各自的习惯用法
AX 称为累加器,常用于存放算术逻辑运算中的操作数,另外所有的I/O指令都使用累加器与外设接口传送信息
BX 称为基址寄存器,常用来存放访问内在时的基地址,
CX 称为计数寄存器,在循环和串操作指令中用作计数器
DX 称为数据寄存器,在寄存器间接寻址中的I/O指令中存放I/O端口的地址