指令对标志寄存器的影响总结

合集下载

常用汇编指令对标志位的影响

常用汇编指令对标志位的影响

常用汇编指令对标志位的影响1000字汇编语言中,标志位用来表示CPU运算过程中的一些状态。

不同的指令对标志位有不同的影响,下面列举一些常用汇编指令对标志位的影响:1. ADD指令:加法运算指令,将两个操作数相加,结果存储在目的操作数中。

如果结果为0,标志位ZF被设置为1,如果溢出,标志位OF被设置为1,如果结果是负数,标志位SF被设置为1。

2. SUB指令:减法运算指令,将两个操作数相减,结果存储在目的操作数中。

如果结果为0,标志位ZF被设置为1,如果溢出,标志位OF被设置为1,如果结果是负数,标志位SF被设置为1。

3. MOV指令:将源操作数的值赋值给目的操作数。

MOV指令不影响标志位。

4. CMP指令:比较两个操作数的大小关系。

如果源操作数小于目的操作数,则标志位CF被设置为1,如果相等,则标志位ZF被设置为1,如果源操作数大于目的操作数,则标志位SF被设置为1。

5. INC指令:将操作数加1。

如果结果为0,标志位ZF被设置为1,如果溢出,标志位OF被设置为1,如果结果是负数,标志位SF被设置为1。

6. DEC指令:将操作数减1。

如果结果为0,标志位ZF被设置为1,如果溢出,标志位OF被设置为1,如果结果是负数,标志位SF被设置为1。

7. AND指令:按位与操作。

如果结果为0,标志位ZF被设置为1,如果结果为负数,标志位SF被设置为1。

8. OR指令:按位或操作。

如果结果为0,标志位ZF被设置为1,如果结果为负数,标志位SF被设置为1。

9. XOR指令:按位异或操作。

如果结果为0,标志位ZF被设置为1,如果结果为负数,标志位SF被设置为1。

10. SHR指令:逻辑右移指令。

如果结果的最低位是1,标志位CF被设置为1,如果结果为0,标志位ZF被设置为1,如果结果为负数,标志位SF被设置为1。

11. SHL指令:逻辑左移指令。

如果溢出,标志位OF被设置为1,如果结果为0,标志位ZF被设置为1,如果结果为负数,标志位SF 被设置为1。

汇编语言与接口技术习题答案

汇编语言与接口技术习题答案

第3章 80X86的指令系统和寻址方式本章主要讲授:本章主要讲授:80X8680X86的数据类型、寻址方式、指令格式、指令系统(数据传送指令、算术运算指令、逻辑运算指令、串操作数指令、控制转移指令、处理机指令和高级语言指令)和80486指令等。

通过本章的学习,注意下面几方面的内容:一、掌握80X86的数据类型;二、掌握80X86的寻址方式;三、掌握80X86的指令系统及它们的一些使用实例。

四、了解保护属性检查指令、高级语言指令以及Cache 管理指令等。

习题精解1.已知DS DS==2000H 2000H,,BX BX==0100H 0100H,,SI SI==0002H 0002H,存储单元,存储单元,存储单元[20100H][20100H][20100H]~~[20103H][20103H]依次存放依次存放12 34 56 78H 56 78H,,[21200H][21200H]~~[21203H][21203H]依次存放依次存放2A 4C B7 65H 2A 4C B7 65H,说明下列每条指令执行后,说明下列每条指令执行后AX 寄存器的内容。

(1)MOV AX AX,,1200H (2)MOV AX AX,,BX (3)MOV AX AX,,[1200H] (4)MOV AX AX,,[BX] (5)MOV AX AX,,[BX+1100H] (6)MOV AX AX,,[BX + SI] (7)MOV AX AX,,[BX][SI+1100H]参考答案:根据物理地址形成公式:物理地址=段基址×根据物理地址形成公式:物理地址=段基址×161616+有效地址,得:+有效地址,得:(1)1200H(2)0100H(3)4C2AH(4)3412H(5)4C2AH(6)7856H(7) 65B7H分析:本题主要考查点是数据寻址方式,寻址方式就是指令中用于说明操作数所在地址的方法,或者是寻找操作数有效地址的方法。

汇编基本指令对标志位的影响

汇编基本指令对标志位的影响

汇编基本指令对标志位的影响算术运算指令1、加法指令1)、普通加法指令ADD ADD reg/mem,reg/mem/imm受影响标志位:AF/CF/OF/PF/SF/ZF 2)、带进位的加法ADC ADCreg/mem,reg/mem/imm受影响标志位:AF/CF/OF/PF/SF/ZF该指令和1)中唯一不同的是除了执行1)中加法外还要加上CF。

3)、加1指令INC INC reg/mem受影响标志位:AF/OF/PF/SF/ZF 4)、交换加法指令XADD XADDreg/mem,reg该指令首先交换两个操作数的值,然再做加法,相当于以下两条指令:XCHG reg/mem,reg ADD reg.mem,reg 2、减法指令[和加法指令相反]1)、普通减法SUB 2)、带借位的减法SBB除了1)中减法还有减去CF 3)、减1指令DEC 4)、求补指令NEG NEG reg/mem受影响标志位:AF/CF/OF/PF/SF/ZF执行结果:操作数=0-操作数3、乘法指令分为带符号乘法和无符号乘法,区别在于:数据的最高位是作为符号还是数值参与运算。

1)、无符号乘法MUL MUL reg/mem受影响标志位:CF/OF我们知道乘法要有乘数和被乘数,指令中只有一个操作数,所以我们必须知道第二个操作数在哪里。

Intel处理的方式是,被乘数提前存在EAX中,然后与给出的乘数相乘,结果放在规定的寄存器中:乘数位数隐含的被乘数乘积存放位置[高-低]举例8 AL AX MUL CL 16 AX DX-AX NUL CX 32 EAX EDX-EAX MUL ECX 2)、有符号乘法IMUL IMUL reg/mem受影响标志位:CF/OF其操作数都作为有符号数相乘。

4、除法指令1)无符号除法DIV reg/mem不影响标志位被除数默认存放规则如下:除数位数隐含的被除数商余数8 AX AL AH 16 DX-AX AX DX 32 EDX-EAX EAX EDX 2)有符号除法IDIV reg/mem受影响标志位:AF/CF/OF/PF/SF/ZF三、逻辑运算指令1、逻辑与AND指令AND reg/mem,reg/mem/imm受影响的标志位:CF(0)/OF(0)/SF/PF/ZF执行过程:源操作数和目的操作数进行逻辑与运算,结果存放在目的操作数。

FLAGS标志寄存器讲解

FLAGS标志寄存器讲解

微机原理整理江苏大学非计算机专业使用,本人私人资料;微机原理97FLAGS标志寄存器:6个状态标志位和3个控制标志CF:进位标志位。

当进行加减法运算时,若最高位向前有进借位CF=1,无CF=0。

PF:奇偶标志位。

当运算结果的低8位中1的个数为偶数时PF=1,为奇数时PF=0。

AF:辅助进位标志。

D3向D4有借进位发生时AF=1,无借进位发生AF=0。

ZF:零位标志。

当运算结果为零时ZF=1,运算结果不为零时ZF=0。

SF:符号标志位。

当运算结果的最高位为1时SF=1,最高位为0时SF=0。

OP:溢出标志位。

当运算结果超出了带符号数的范围,即溢出时OF=1,未溢出时OF=0。

(D7为符号位,说明:D7,D6,D5,D4,D3,D2,D1,D0)3.3.2算数运算指令算数运算指令;加,减,乘,除有符号数的溢出:OF无符号数的溢出:CF指令对操作数的要求:单操作数指令中的操作数不允许使用立即数双操作数指令中,立即数只能作为源操作数,不允许源操作数和目的操作数都是存储器。

1,加法运算指令(不允许段寄存器作为操作数和两个都是存储器)1)ADD普通加法指令(对全部6个状态标志位都会产生影响)ADD OPRD1,OPRD2 ;OPRD1+OPRD2送到OPRD1中去ADD [SI],[BX]是错误的;不允许两个操作数都是存储器操作数例:MOV AL,7EHADD AL,5BH程序执行后,AL=D9H,即11011001B, D9H>7FH(8位带符号数的最大值) OF=1D9H<FFH(8位无符号数的最大值) CF=0 所有状态标志位AF=0,CF=0,OF=1,PF=0,SF=1,ZF=02)ADC带进位(CF)位的加法指令(对全部6个状态标志位都会产生影响)ADC OPRD1,OPRD2 ;OPRD1+OPRD2+CF送到OPRD1中去不允许两个操作数都是存储器操作数例:设CF=1,写出以下指令执行后的结果MOV AL,7EHADC AL,0ABH指令执行后:AL=7EH+0ABH+1=2AH,且CF=13)INC加1指令(不影响CF,影响其它5个状态标志)INC OPRD ;OPRD+1送到OPRD中去OPRD不能是立即数通常用于在循环程序中修改地址指针及循环次数2,减法指令(不允许段寄存器作为操作数和两个都是存储器)1)SUB不考虑借位的减法指令(对全部6个状态标志位都会产生影响)SUB OPRD1,OPRD2不允许两个操作数都是存储器操作数例:SUB AL,[BP+SI] ;将SS:[BP+SI]单元的内容送到AL中去基址变址寻址:基址:BX或BP 变址:SI或DIDS☺[BX][变址]SS ☺[BP][变址]2)SBB考虑借位的减法指令(对全部6个状态标志位都会产生影响)SUB OPRD1,OPRD2 ;将OPRD1-OPRD2-CF送到OPRD1中不允许两个操作数都是存储器操作数3)DEC减1指令(不影响CF,影响其它5个状态标志)DEC OPRDOPRD不能是立即数4)NEG求补指令(对全部6个状态标志位都会产生影响)NEG OPRD (求负数的绝对值);用0-OPRD CF通常为1,除非OPRD为0OF通常为0,除非OPRD为80H(-128)或8000H(-32768),执行后操作数不变,但是OF为1。

掌握ADD,SUB等汇编指令及其对标志位的影响

掌握ADD,SUB等汇编指令及其对标志位的影响

电子信息工程学系实验报告 ——适用于计算机课程课程名称:汇编语言程序设计实验项目名称:掌握ADD,SUB 等汇编指令及其对标志位的影响实验时间:班级: 姓名: 学号:实 验 目 的:掌握ADD,SUB,MUL,IMUL,DIV,IDIV 汇编算术指令以及它们对标志位的影响。

实 验 环 境:微机一台,操作系统:WINXP2,轻松汇编实 验 内 容 及 过 程:输入给出程序,通过对程序的调试掌握ADD,SUB 等汇编指令的操作及其对标志位的影响;编程实现Z (W*X )/(Y+6) ,R 余数(其中X ,Y ,Z ,R 和W 均为存放16为带符号数单元的地址。

1、上机输入以下程序: code segment main proc far assume cs:code start:push ds xor ax,ax push axmov ax,0 dec axadd ax,7FFFH add ax,2 neg axsub ax,0FFFFHret main endp code ends end2、 写出上面汇编程序中字体为红色的指令执行后,AX 寄存器及标志位CF ,SF ,ZF 和OF 的内容是什么?3、编程实现Z (W*X )/(Y+6),R 余数(其中X ,Y ,Z ,R 和W 均为存放16位带符号数单元的地址。

实 验 结 果 及 分 析:2、由以上运行结果可知执行程序1的指令后,AX寄存器及标志位CF,SF,ZF和OF的内容如表格所示:Mov为传送指令不影响标志位;dec不影响CF,影响SF、ZF、OF;add影响标志位CF,SF,ZF和OF;neg影响CF,SF,ZF和OF;sub影响标志位CF,SF,ZF和OF。

在本程序中(程序2)AX(商)的值也即Z(商)的值,DX(余数)的值也即R(余数)的值。

实验心得:。

8086-8088 CPU的指令系统算术运算指令

8086-8088 CPU的指令系统算术运算指令

微机原理
OP1 OP2
运算器
F
(a)
OP1 OP2
运算器
F
(b)
微机原理
⑵ ADC 带进位加法指令 指令格式:ADC DST,SRC 执行操作:(DST)←(SRC)+(DST)+CF 影响的标志位:OF、SF、ZF、AF、PF、CF ⑶ INC 加1指令 指令格式:INC OPR 执行操作:(OPR)←(OPR)+1。 影响的标志位:OF、SF、ZF、AF、PF。
⑵ IDIV 带符号数除法指令
指令格式:IDIV SRC 执行操作:与DIV相同,但操作数必须是带符号数,商 和余数也均为带符号数,用补码表示
⑶ CBW 字节转换为字指令 格式:CBW 执行操作:将AL的符号位扩展到整个AH 若AL的符号位为0,则AH←00H 若AL的符号位为1,则AH←0FFH 对标志位的影响:不影响标志位
微机原理
3.乘法指令 ⑴ MUL 无符号数乘法指令 指令格式:MUL SRC 执行操作: 字节操作数 AX←AL×(SRC)。 字操作数 DX,AX←AX×(SRC)。 对标志位的影响:OF、CF ⑵ IMUL 有符号数乘法指令 指令格式:IMUL SRC 执行操作:字节操作数AX←AL×(SRC)
微机原理
5.十进制调整指令 ⑴压缩的BCD码调整指令 ① DAA 加法的十进制调整指令 指令格式:DAA 执行操作:AL←加法结果AL的内容调整到压 缩的BCD码格式 标志位的影响:SF、ZF、AF、PF、CF
例:MOV AL, 28H MOV BL, 68H ADD AL, BL DAA
微机原理
MOV AL,08H
AAD
AL= 44H
AH=0
微型计算机基本原理与接口技术

8086标志寄存器

8086标志寄存器

8086标志寄存器CPU内部的寄存器中,有⼀种特殊的寄存器(对于不同的机器,个数和结构都有可能不同)具有以下三个功能:⽤来存储某些相关指令的执⾏结果⽤来为CPU执⾏相关的指令提供⾏为依据⽤来控制CPU的相关⼯作⽅式这种特殊的寄存器在8086CPU中称为标志寄存器。

8086的标志寄存器有16位,其中存储的信息通常被称为程序状态字(PSW)。

标志寄存器与其他寄存器不⼀样,其他寄存器是⽤来放数据的,都是整个寄存器具有⼀个含义,⽽标志寄存器是按位起作⽤的。

8086中的标志寄存器的结构如下图所⽰:其中1、3、4、12、13、14、15位在8086中没有使⽤。

另外对于有确切含义的每⼀位,我们称为标志位ZF标志标志寄存器的第六位是ZF,零标志位。

他是记录相关指令执⾏后,其结果是否位零。

如果为零,那么zf=1,如果不为零,那么zf=0⽐如指令:mov ax, 1sub ax, 1执⾏后,ax的结果为0,所以zf=1再⽐如:mov ax, 2sub ax, 1执⾏后,ax的结果不为0,所以zf=0在这⾥,有⼀点需要注意:在8086的指令集中,有的指令的执⾏是影响标志位的,⽐如add、sub、mul、div、inc、or、and等,它们⼤都是运算指令(进⾏逻辑或算数运算);有的指令的执⾏对标志寄存器没有影响,⽐如mov、push、pop等,它们⼤都是传送指令。

PF标志标志寄存器的第⼆位是PF,奇偶标志位。

它记录相关指令执⾏后,其结果的所有bit位中1的个数是否位偶数。

如果是偶数,pf=1,如果位奇数,pf=0⽐如指令:mov al, 1add al, 10执⾏后,al为00001011B,其中有3个1,所以pf=0再⽐如:mov al, 1or al, 2执⾏后结果为00000011B,其中有2个1,所以pf=1SF标志标志寄存器的第七位是SF,符号标志位。

它记录相关指令执⾏后,其结果是否为负。

如果为负,sf=1,如果⾮负,sf=0这⾥要明确⼀点,在计算机中,通常⽤补码来表⽰有符号的数据,计算机中的⼀个数据既可以看作有符号数,也可以看作⽆符号数。

8086汇编cmp指令

8086汇编cmp指令

8086汇编cmp指令8086汇编 cmp 指令cmp 是⽐较指令,功能相当于减法指令,只是不保存结果。

cmp 指令执⾏后,将对标志寄存器产⽣影响。

格式:cmp 操作对象1,操作对象2功能:计算操作对象1–操作对象2原理:通过做减法运算影响标志寄存器,标志寄存器的相关位的取值,体现⽐较的结果。

cmp 指令说明⼀、应⽤使⽤其他相关指令通过识别这些被影响的标志寄存器位来得知⽐较结果。

应⽤⽅法:⽤标志寄存器值,确定⽐较结果。

⼆、⽆符号数⽐较与标志位取值思路:通过cmp 指令执⾏后相关标志位的值,可以看出⽐较的结果指令:cmp ax,bx三、有符号数⽐较与标志位取值问题:⽤cmp来进⾏有符号数⽐较时,CPU⽤哪些标志位对⽐较结果进⾏记录仅凭结果正负(SF)⽆法得出结论,需要配合是否溢出(OF)得到结论。

⽰例指令:cmp ah,bh条件转移指令;或者其他影响标志寄存器的指令cmp oper1, oper2jxxx 标号⼀、根据单个标志位转移的指令⼆、根据⽆符号数⽐较结果进⾏转移的指令三、根据有符号数⽐较结果进⾏转移的指令四、转移指令全写j-Jump e-Equal n-Not b-Below a-Above L-less g-Greater s-Sign C-carry p-Parity o-Overflow z-Zero 条件准转移指令使⽤jxxx系列指令和cmp指令配合,构造条件转移指令不必再考虑cmp指令对相关标志位的影响和jxxx指令对相关标志位的检测可以直接考虑cmp和jxxx指令配合使⽤时表现出来的逻辑含义。

jxxx系列指令和cmp指令配合实现⾼级语⾔中if语句的功能例1:如果(ah)=(bh),则(ah)=(ah)+(ah),否则(ah)=(ah)+(bh)例2:如果(ax)=0,则(ax)=(ax)+1。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

CF(Carry Flag):进位标志。

当指令执行的结果(8位或16位)在最高位上产生了一个进位或借位时,CF =1。

AF(Auxiliary Carry Flag):辅助进位标志。

当一个8位数(或16位数)的低四位向高四位(即
b3向b4)有进位或借位时,AF=1。

常用于十进制算术运算指令。

OF(Overflow Flag): 溢出标志。

在算术运算中,带符号数的运算结果超出了8位或16位符号数所能表示的范围时,OF=1。

ZF(Zero Flag): 零标志。

当运算结果为全零时,ZF=1。

SF(Sign Flag): 符号标志。

当运算结果为正数,即结果的最高位为0时,SF=1。

PF(Parity Flag):奇偶标志。

当算术逻辑运算的结果中1的个数为偶数时,PF=1,为奇数时,PF=0。

DF(Direction Flag):方向标志。

用于控制数据串操作指令的步进方向,当DF=1时,表示从高地址向低地址以递减的顺序对数据串中的数据进行处理。

IF(Interrupt-enable Flag):中断允许标志。

当IF=1时,CPU可以响应外部可屏蔽中断请求。

该标志可以用指令设置为1或0。

TF(Trap Flag):陷阱标志。

当TF=1时,CPU进入单步工作方式,每执行完一条指令就自动产生一个内部中断,以便进行程序调试。

当TF=0时,正常执行程序。

相关文档
最新文档