算术运算及对标志位的影响和逻辑运算及对标志位的影响

合集下载

第11-12讲

第11-12讲

第11讲3.3.2算术运算指令89C51的指令系统提供了加、减、乘、除法指令,数据运算功能较强。

指令的执行结果将使PSW中的CY、AC和OV置1或清0,加1和减1指令不影响这些标志,乘除指令不影响AC。

1加法指令(1)不带进位的加法指令ADD A,Rn ;A←A+RnADD A,direct ;A←A+(direct)ADD A,@Ri ;A←A+((@Ri))ADD A,#data ;A←A+data指令功能:源操作数与A的内容相加,和送入A。

相加的结果如果D7有进位则CY=1;如果D3有进位则AC=1;如果D6和D7只有一位产生进位则OV=1;相加和中有奇数个1则P=1,否则为0。

例3-5设A=46H,R1=5AH,试分析执行指令ADD A,R1后的执行结果以及对标志位的影响。

A=0 1 0 0 0 1 1 0 结果为偶数个1,P=0 +)R1=0 1 0 1 1 0 1 0 D3有进位,AC=10 1 1 D6、D7只有一位产生进位,OV=1A+R1=1 0 1 0 0 0 0 0 D7无进位,CY=0结果:A=A0H,R1=5AH(不变)(2)带进位的加法指令ADDC A,Rn ;A←A+Rn+CYADDC A,direct ;A←A+(direct)+CYADDC A,@Ri ;A←A+((@Ri))+CYADDC A,#data ;A←A+data+CY指令功能:源操作数与A的内容相加在与CY相加,和送入A。

注意:所加的CY是执行本指令时已经存在的CY。

本组指令对标志位的影响与ADD指令相同。

例3-6设A=85H,(20H)=FFH,CY=1,试分析执行指令ADD A,20H 后的执行结果以及对标志位的影响。

A=1 0 0 0 0 1 0 1 结果为奇数个1,P=1 (20H)=1 1 1 1 1 1 1 1 D3有进位,AC=1+) CY= 1 D6、D7都产生进位,OV=01 1 1 D7有进位,CY=1A+(20H)+CY=1 0 0 0 0 1 0 1结果:A=85H,(20H)=FFH(不变)两个16位数相加,应先进行低8位相加,为避免CY的影响,应使用ADD指令,或在使用ADDC指令之前,将CY清0;再进行高8位相加,必须使用ADDC指令。

反汇编语言常用指令

反汇编语言常用指令

内容目录计算机寄存器分类简介计算机寄存器常用指令一、常用指令二、算术运算指令三、逻辑运算指令四、串指令五、程序跳转指令计算机寄存器分类简介:32位CPU所含有的寄存器有:4个数据寄存器(EAX、EBX、ECX和EDX)2个变址和指针寄存器(ESI和EDI) 2个指针寄存器(ESP和EBP)6 个段寄存器(ES、CS、SS、DS、FS 和GS)1个指令指针寄存器(EIP) 1个标志寄存器(EFlags)1、数据寄存器数据寄存器主要用来保存操作数和运算结果等信息,从而节省读取操作数所需占用总线和访问存储器的时间。

32位CPU有4个32位的通用寄存器EAX、EBX、ECX和EDX。

对低16位数据的存取,不会影响高16位的数据。

这些低16位寄存器分别命名为:AX、BX、CX和DX,它和先前的CPU 中的寄存器相一致。

.4个16位寄存器又可分割成8个独立的8位寄存器(AX: AH-AL、BX:BH-BL、CX: CH-CL、DX: DH-DL),每个寄存器都有自己的名称,可独立存取。

程序员可利用数据寄存器的这种“可分可合”的特性,灵活地处理字 /字节的信息。

寄存器EAX通常称为累加器(Accumulator),用累加器进行的操作可能需要更少时间。

可用于乘、除、输入/输出等操作,使用频率很高;寄存器EBX称为基地址寄存器(Base Register) o它可作为存储器指针来使用;寄存器ECX称为计数寄存器(Count Register)。

在循环和字符串操作时,要用它来控制循环次数;在位操作中,当移多位时,要用CL来指明移位的位数;寄存器EDX称为数据寄存器(Data Register)。

在进行乘、除运算时,它可作为默认的操作数参与运算,也可用于存放I/O的端口地址。

在16位CPU中,AX、BX、CX和DX不能作为基址和变址寄存器来存放存储单元的地址,在32位CPU中,其32位寄存器EAX、EBX、ECX和EDX不仅可传送数据、暂存数据保存算术逻辑运算结果,而且也可作为指针寄存器,所以,这些32位寄存器更具有通用性。

关于标志位影响

关于标志位影响

关于标志位影响各标志位的含义如下:所有ARM数据处理指令的乘法指令均可选择使用S后缀,并影响状态标志位。

而其它指令一般不允许加S后缀,如B 、LDR、SWI、MRS等。

N 运算结果的最高位反映在该标志位。

对于有符号二进制补码,结果为负数时N=1,结果为正数或零时N=0;例如:执行movs r0,#0x7FFFFFFF后N=0;因为R0最高位为0 执行movs r0,#0x80000000后N=1;因为R0最高位为1执行CMP r0,r0后N=0;因为R0-R0=0x00000000;故N一般看目标寄存器的最高位,即N = Rd[31]。

Z 指令结果为0时Z=1(通常表示比较结果“相等”),否则Z=0;例如:执行CMP r0,r0后Z=1执行MOVS R0,#0后Z=1故Z一般看目标寄存器的值是否为0,Rd=0时Z=1,否则Z=0。

C 当进行加法运算(包括CMN指令),并且最高位产生进位时C=1,否则C=0。

当进行减法运算(包括CMP 指令),并且最高位产生借位时C=0,否则C=1。

对于结合移位操作的非加法/减法指令,C为从最高位最后移出的值,其它指令C通常不变;例如:执行 mov r0,#0xF0000000ADDS R0,R0,R0后C=1;执行 SUBS R2,R2,R2后C=1,因为R2-R2=0不需要借位。

执行 CMP R3,R3后C=1;执行 MOV R1,0x80000000movs r0,r1 ,lsr #32后C=1;执行 mov r0,#0x10mov r1,#0x7FFFFFFFsubs r3,R0,r1 ,lsr #1后C=0;总之,一般情况下加法进位,减法无借位时C=1;对于结合移位操作的非加/减法指令,C为最后移出的值。

V 当进行加法/减法运算,并且发生有符号溢出时V=1,否则V=0,其它指令V通常不变。

例如:执行 mov r1,#0x80000000adds r1,r1,r1 后V=1;执行 mov r1,#0x70000000adds r1,r1,r1 或 CMN R1,R1 后V=1;执行 LDR R0,=0x8000000LDR R1,=0x7FFFFFFFCMP R0,R1 后V=1 ;总之,两个负数运算结果第31位为0,则V=1两个正数运算结果第31位为1,则V=1。

算术运算及对标志位的影响和逻辑运算及对标志位的影响

算术运算及对标志位的影响和逻辑运算及对标志位的影响

大连东软信息学院学生实验报告课程名称:_ _____________专业班级: __________________姓名: _______________学号_________________2011-- 2012 学年第 2 学期实验报告注意事项1. 课前必须认真预习实验,认真书写预习报告,了解实验步骤,未预习或预习达不到要求的学生不准参加实验;2. 实验完毕,必须将结果交实验指导教师进行检查,并将计算机正常关机、将仪器设备、用具及椅子等整理好,方可离开实验室;3. 按照实验要求书写实验报告,条理清晰,数据准确;4. 当实验报告写错后,不能撕毁,请在相连的实验报告纸上重写;5.实验报告严禁抄袭,如发现抄袭实验报告的情况,则抄袭者与被抄袭者该次实验以0分计;6. 无故缺实验者,按学院学籍管理制度进行处理;7. 课程结束后实验报告册上交实验指导教师,并进行考核与存档。

实验项目( ) —预习报告项目名称算术运算及对标志位的影响和逻辑运算及对标志位的影响实验目的及要求1、熟悉debug程序提供的常用命令;(1)掌握机器指令的编写与执行过程;(2)掌握算术运算指令的执行过程;(3)掌握标志位的作用。

2、(1)掌握逻辑运算指令的执行过程。

(2)掌握标志位的作用。

实验内容及原理1、编程进行相应的算术运算,并记录标志位的状态(以下内存单元均在数据段)。

(1)41H+3BH,结果放在2000H单元中;(2)AFH+7EH,结果放在2001H单元中;2、编程进行相应的逻辑运算,并记录标志位的状态(以下内存单元均在数据段)。

(1)5AH&A5H,结果放在2001H单元中;(2)5AH⊗00H,结果放在2003H单元中;(3)!00H,结果放在2000H单元中;预习过程中的疑问如何使用算术运算以及逻辑运算指令,在使用这些命令的过程中应该注意哪些问题实验项目( ) —实验报告项目名称算术运算及对标志位的影响和逻辑运算及对标志位的影响指导教师实验室A6-302 实验日期2012/5/15分组情况成绩实验步骤(算法、代码、方法)1、写出指令代码:例如41H+3BH;MOV AH, 41ADD AH, 3BMOV [2000], AH(1)在DEBUG下输入指令;(2)运行程序,记录运行结果及标志位状态。

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

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

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时,正常执行程序。

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

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

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

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

1、上机输入以下‎程序:code segmen‎tmain proc farassume‎cs:codestart:push dsxor ax,axpush axmov ax,0dec axadd ax,7FFFHadd ax,2neg axsub ax,0FFFFH‎retmain endpcode endsend2、写出上面汇编‎程序中字体为‎红色的指令执‎行后,AX寄存器及‎标志位CF,SF,ZF和OF 的‎内容是什么?3、编程实现Z (W*X)/(Y+6),R 余数(其中X,Y,Z,R和W均为存‎放16位带符‎号数单元的地‎址。

实验结果及分析:2、由以上运行结‎果可知执行程‎序1的指令后‎,A X寄存器及‎标志位CF,SF,ZF和OF的‎内容如表格所‎示:neg影响C‎F,SF,ZF和OF;sub影响标‎志位CF,SF,ZF和OF。

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

附录:。

第9章 单片机的指令系统说明

第9章 单片机的指令系统说明

计算机总是把操作数当作有符号数(补码形式)看待 并影响PSW的相关标志位。影响情况如下: 进位/借位标志CY: 两数和的D7位有进位时,(CY)=1,否则,(CY)=0。 半进位/借位标志AC: 两数和的D3位有进位时,(AC)=1,否则,(AC)=0。 溢出标志OV: 两数和的D7,D6位只有一位有进位时,(OV)=1;否则, (OV)=0,即OV=C6⊕C7。 奇偶标志P: 当累加器A中“1”的个数为奇数时,(P)=1;为偶数 时(P)=0。
例2 把片外RAM的36H单元中的数据送到片外RAM的 1200H单元。 〈分析〉(36H)→(1200H) 程序如下: MOV R1,#36H MOVX A ,@R1 MOV DPTR,#1200H MOVX @DPTR, A <想一想>下面的程序可以实现吗? MOV DPTR, #1200H MOV R1,#36H MOV @DPTR,@R1 注意:片外RAM之间不能直接传送数据,必须经过累加器 A
例5 试分析8051单片机执行下述指令后,累加器A和PSW各标 志位的变化。 MOV A,#0A5H ADD A,#0CFH 解: (A)=10100101B + Data=11001111B CY 01110100B C7 C6 AC (CY)=C7=1;(AC)=1;溢出标志(OV)=C7⊕C6=1⊕0=1,有 溢出;(P)=0。执行结果:(A)=74H。 若为无符号数运算, (CY)=1,表示结果超出(0~255) 范围。若为带符号数运算,因(-49)+(-91)=-140,超出了 (-128~+127)的范围,所以OV=1溢出。
半字节交换 XCHD A,@Ri SWAP A
;(A3~0)((Ri)3~0) ;(A3~0)(A7~4)

算术与逻辑运算指令PPT课件

算术与逻辑运算指令PPT课件

第2页/共45页
算术与逻辑运算指令
次高位进位 • 溢出O:当进行8位或16位数的加法或减法运算时,O = 最高位进位(借位) (借位)
• 49H + 6DH = 0100 1001B + 0110 1101B = 1011 0110B • 最高位(8th)无进位,次高位(7th)有进位 • O=1,有溢出
第9页/共45页
加法、减法与比较指令
• 带进位(借位)加法(减法)指令 • 指令形式:ADC/SBB REG/MEM, REG/MEM/imm • 目的操作数=目的操作数±源操作数±C(进位标志位) • 与ADD/SUB指令形式一致 • 实现位宽大于16位的加法/减法 • BX-AX+DX-CX
ADC
LEA SI, DATA2; 装载DATA2 MOV CX, [SI] MOV DX, [SI+2]
ADD AX, CX;计算BX-AX+DX-
CX|DATA1+DATA2
ADC BX, DX
• STACK SEGMENT • DW 128 DUP(0) • ENDS • CODE SEGMENT
LEA SI, RESULT;存储结果 MOV [SI], AX MOV [SI+2], BX ENDS END 代ST码ART
第8页/共45页
加法、减法与比较指令
• 寄存器加法/减法
• 操作数均为寄存器 • ADD/SUB AX, BX; AX = AX ± BX
• 立即数加法/减法
• 源操作数为立即数 • ADD/SUB AX, 100H • ADD/SUB WORD PTR[DI], 100H • 内存与寄存器加法/减法 • ADD/SUB AX, [DI] • ADD/SUB AX, NUM • ADD/SUB AX, [DI+2]

算术运算指令对条件标志位的影响

算术运算指令对条件标志位的影响

为偶 数 , P = , 则 F I 否则 P = 。 F 0 ( ) 发 生下列 情况 时 , 3在 辅助 进 位标 志 A = , F 1 否 则 AF 0: = 1 在 字 操 作 时 。 8位 向 8位 产 生 进 位 或借 ) 低 位:
条 件 标志 位 的含 义 如下 : f1 位 标 志位 C (ar l ) 1进 FC r Fa y g 主要 用来 反 映运 算 是否 产生 进位 或借 位 。 (1 偶 标 志位 P ( ai l ) 2奇 F P r yFa t g 用 于 反 映结果 中最后 8位数 中“ ” 1 的个 数 。
21 0 2年 第 4期

建 电

19 7
算 术运算指令对 条件标 志位 的影 响
张 岩 ( 水 市疾 病控 制 中心 河北 衡 水 03 0 衡 5 0 0)
【 摘 要 】 计 算机 在执 行 某个 程序 的 时候 ,实 际上是在 逐 条执行 指 令 ,有 些指令 的执 行 对 : C U 的状 态会 产 生 影 响 。C U 中 的状 态寄 存 器 用 来 指 示 C U 的 运行 状 态 。 下 面我 们 以 It P P P ne l 88 0 6系列 的处理 器为例 。 一 下算术 运 算指 令 对条件 标 志位 的 影响 。 说 【 关键 词 】 溢 出; : 程序 状 态字 ; 有符 号数 ; 无符 号 数
f) 助 进位 标 志 A ( u iayC r l ) 3辅 F A x i a yFa lr r g 用 来反 映 运算 进 行 到一 半 时 .是 否 产 生进 位 或借 位 。 f1 标 志位 Z (eoFa) 4零 FZ r lg 用 来 反映 运算 结 果 是否 为 0

二算术逻辑运算指令

二算术逻辑运算指令

三、逻辑运算指令
⑵移位指令
• 累加器A循环左移指令: • RL A ; • 累加器A连同进位位循环左移指令: • RLC A ; • 累加器A循环右移指令: • RR A ; • 累加器A连同进位位循环右移指令 • RRC A ;
三、逻辑运算指令
• 例3-18:若(A)=10111101B=BDH, Cy=0
• 注:执行结果只影响PSW的奇偶校验位P (以A为操 作数时 )
二、算术运算指令
3.乘、除法指令
• MUL AB ; (A)←[(A)×(B)]7-0

(B)←[(A)×(B)]15-8
• 如果积大于255(FFH),则溢出标志OV置1,否则清0。进
位标志位Cy总为0。
二、算术运算指令
• 例3-17:设(A)=50H(80),(B) =0AH(160) 执行指令:MUL AB;
• 执行“ RLC A”的结果为 • (A)=01111010B=7AH,Cy=1 • A的内容扩大2倍
三、逻辑运算指令
2 .双操作数的逻辑运算指令
• ⑴逻辑“与”指令
• ANL A,Rn ;(A) ←(A)∧(Rn) • ANL A,direct ;(A) ←(A)∧(direct) • ANL A,@Ri ;(A) ←(A)∧((Ri)) • ANL A,#data ;(A) ←(A)∧data • ANL direct, A ;(direct)←(direct)∧(A) ANL direct,#data;(direct)←(direct)∧data
• 本指令不能简单的把累加器A中的16进制数变换成 BCD码
二、算术运算指令
• 例3-13:设累加器A内容为压缩BCD码56 (即01010110B),寄存器R3的内容为 压缩BCD码67(即01100111B),Cy内 容为1。执行下列的指令:

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

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

汇编基本指令对标志位的影响算术运算指令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执行过程:源操作数和目的操作数进行逻辑与运算,结果存放在目的操作数。

003_微机原理-指令系统_2

003_微机原理-指令系统_2

MOV DS, AX
不影响标志位
3.3 指令系统—换码指令
指令书写格式: XLAT
指令执行的操作:
(AL)←((DS:BX+AL)) 查表操作,将BX指定的缓冲区中、AL指定的位移处的一个字节数 据取出赋给AL
指令说明
操作数隐含使用基地址寄存器BX与AL寄存器 换码指令执行前,在主存建立一个字节量表格,内含要转换的目 的码字,表格首地址存放于BX,AL存放相对表格首地址的位移量 换码指令执行后,指令将AL寄存器的内容转换为目标码字,因为 偏移量AL为8位,表格长度≤256字节 不影响标志位
数据传送指令 算术运算指令 逻辑运算和移位指令 串操作指令
控制转移指令
处理器控制指令
3.3 指令系统-通用数据传送指令
指令书写格式: MOV dst, src
指令执行的操作:(dst)←(src) 指令说明
操作数类型:立即操作数,寄存器操作数,存储器操作数 立即操作数不能作为目的操作数DST 错误:MOV 30H, AL 两个操作数也不能同时为存储器操作数 错误: MOV [DI+100H], [SI+200H]
dst为目的操作数,操作数类型可为寄存器操 作数或存储器操作数 cnt为移位次数,可为立即数1,或由寄存器 CL指定 SHL、SHR和SAL指令影响标志位CF和OF, cnt=1时,SHL与SAL移位后的最高位和CF不 同,则OF=1;SHR,OF=移位前最高位 SAR指令影响标志位CF、OF、PF、SF、ZF, AF不确定;
; 测试AL中数据的奇、偶
3.3 指令系统-移位指令
逻辑左移指令: SHL dst, cnt 算术左移指令: SAL dst, cnt

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

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

常⽤汇编指令及其影响的标志位加法指令 ADD (addition)指令对标志位的影响:CF=1 最⾼有效位向⾼位有进位CF=0 最⾼有效位向⾼位⽆进位OF=1 两个同符号数相加(正数+正数或负数+负数),结果符号与其相反。

OF=0 两个不同符号数相加,或同符号数相加,结果符号与其相同。

带进位加法指令 ADC (add with carry)指令对标志位的影响:CF=1 最⾼有效位向⾼位有进位CF=0 最低有效位相⾼位⽆进位OF=1 两个同符号数相加,结果符号与其相反,OF=0 两个同符号数相加,或同符号相加,结果符号与其相同加1指令 INC (increament)指令对标志位的影响:对CF⽆影响OF=1 两个同符号数相加,结果符号与其相反,OF=0 两个同符号数相加,或同符号相加,结果符号与其相同。

减法指令 SUB (subtract)指令对标志位的影响:CF=1 ⼆进制减法运算中最⾼有效位向⾼位有借位(被减数⼩于减数,不够减的情况)CF=0 ⼆进制减法运算中最⾼有效为向⾼位⽆借位(被减数〉=减数,够减的情况)OF=1 两数符号相反(正数-负数,或负数-正数),⽽结果符号与减数相同。

OF=0 同符号数相减时,或不同符号数相减,其结果符号与减数不同。

带借位减法指令 SBB (subtract with borrow)指令对标志位的影响:CF=1 ⼆进制减法运算中最⾼有效位向⾼位有借位(被减数⼩于减数,不够减的情况)CF=0 ⼆进制减法运算中最⾼有效为向⾼位⽆借位(被减数〉=减数,够减的情况)OF=1 两数符号相反(正数-负数,或负数-正数),⽽结果符号与减数相同。

OF=0 同符号数相减时,或不同符号数相减,其结果符号与减数不同。

减1指令 DEC (decrement)指令对标志位的影响:对CF⽆影响OF=1 两数符号相反(正数-负数,或负数-正数),⽽结果符号与减数相同。

OF=0 同符号数相减时,或不同符号数相减,其结果符号与减数不同。

关于标志位影响

关于标志位影响
LDR R1,=0x7FFFFFFF
CMP R0,R1 后V=1 ;
总之,两个负数运算结果第31位为0,则V=1
C 当进行加法运算(包括CMN指令),并且最高位产生进位时C=1,否则C=0。当进行减法运算(包括CMP 指令),
并且最高位产生借位时C=0,否则C=1。对于结合移位操作的非加法/减法指令,C为从最高位最后移出的值,
其它指令C通常不变;
例如:执行 mov r0,#0xF0000000
mov r1,#0x7FFFFFFF
subs r3,R0,r1 ,lsr #1
后C=0;
总之,一般情况下加法进位,减法无借位时C=1; 对于结合移位操作的非加/减法指令,C为最后移出的值。
执行 mov r1,#0x70000000
adds r1,r1,r1 或 CMN R1,R1 后V=1;
执行 LDR R0,=0x8000000
也会按照Thumb方式来执行,BX是跳特殊指令,会根据目标寄存器地址来切换T标志。
ቤተ መጻሕፍቲ ባይዱ 两个正数运算结果第31位为1,则V=1。
另外THUMB指令一般不需要S后缀,便能影响状态标志位。
如 在THUMB状态下下面两条指令相同
movs r0,#0x00
mov r0,#0x00
ADDS R0,R0,R0
后C=1;
执行 SUBS R2,R2,R2后C=1,因为R2-R2=0不需要借位。
执行 CMP R3,R3后C=1;
各标志位的含义如下:
所有ARM数据处理指令的乘法指令均可选择使用S后缀,并影响状态标志位。而其它指令一般不允许加S后缀,如B 、LDR、SWI、MRS等。

指令影响标志位总结

指令影响标志位总结

传送类指令---只有SAHF、POPF影响⏹通用数据传送指令(都不影响标志位)❑MOV❑PUSH/POP❑XCHG⏹专用数据传送指令❑标志寄存器操作指令LAHF、SAHF;PUSHF、POPF(LAHF、PUSHF不影响;SAHF、POPF影响)因为SAHF POPF本身就是对标志寄存器做修改的,所以会影响;需要注意的是SAHF LAHF是字节操作,PUSHF POPF是字操作❑查表指令XLAT (不影响标志位)❑地址传送指令近LEA、远LDS (不影响标志位)❑符号扩展指令CBW、CWD (不影响标志位)❑输入/输出指令IN、OUT (不影响标志位)❑串传送类指令MOVSB、MOVSW、MOVS;LODSB、LODSW、LODS;STOSB、STOSW、STOS (不影响标志位,但是受到方向标志位DF的影响)运算类指令---这里面除了标志寄存器的位操作外,其他指令都不影响D、I、T三位⏹逻辑运算AND、OR、XOR、NOT、TEST(可以看到,DIT三位不受影响,O、C两个始终置零,A也不受影响,符号位S、零标志Z和奇偶标志P受影响,不难理解)⏹标志寄存器的位操作(Obviously,都影响)⏹移位,循环移位SAL、SHL、SAR、SHR(同样的,DIT三位不受影响,A也不受影响,其他的均受影响)循环ROL、ROR、RCL、RCR(只有进位标志C和溢出标志O受影响,因为循环移位时用了C)⏹二进制算术运算•加减基本的指令ADD/ADC/SUB/SBB/NEG/CMP/串比较系列CMPSB、CMPSW、CMPS/串扫描系列SCASB、SCASW、SCAS(以上的指令对于除DIT之外都影响)加一减一指令INC、DEC(以上两条指令对除了DIT三位和进位标志C外其他都影响)未组合BCD调整加AAA、减AAS(以上两条指令只影响辅助进位A和进位C,因为在调整过程中要用到这两位)组合BCD调整加DAA、减DAS(可以看到除了DIT三位和溢出位O不受影响)•乘除乘法MUL、IMUL(可以看到只影响溢出O与进位C)除法DIV、IDIV(可以看到都不受影响)BCD码调整AAD、AAM(符号位S、零标志Z、奇偶标志P受影响)转移指令⏹条件转移指令❑根据标志位的转移指令❑无符号数运算后的转移❑带符号数运算后的转移❑根据CX的值转移⏹循环次数控制⏹串操作次数控制前缀⏹无条件转移指令❑调用指令❑返回指令❑中断指令(这里面大部分不改变标志位,但受标志位影响,一般都是上一条是一个运算指令,经过运算标志位被改变了,跳转时就根据这时候的标志位来判断是否需要跳转)处理器控制指令---应该也不影响⏹空操作指令NOP❑格式:NOP❑一条指令耗时3T⏹CPU停等中断HLT❑格式:HLT⏹等待指令WAIT。

《微机计算机原理与接口技术》(第三版)逻辑运算与移位类指令对标志位的影响

《微机计算机原理与接口技术》(第三版)逻辑运算与移位类指令对标志位的影响
类别
指令名称
指令书写格式(助记符)
状态标志
OF
SF
ZF
AF
PF
ZF
逻辑运算
“非”(字节/字)
NOT dst






“与”(字节/字)
AND dst,src
0
*
*
x
0
“或”(字节/字)
OR dst
0
*
*
x
0
“异或”(字节/字)
XOR dst,src
0
*
*
x
0
“测试”(字x
0
一般位移
逻辑左移(字节/字)
SHL dst,计数值
*
*
*
x
*
算术左移(字节/字)
SAL dst,计数值
*
*
*
x
*
逻辑右移(字节/字)
SHR dst,计数值
*
*
*
x
*
算术右移(字节/字)
SAR dst,计数值
*
*
*
x
*
循环指令
循环左移(字节/字)
ROL dst,计数值
*


x

*
循环右移(字节/字)
ROR dst,计数值
*


x

*
带进位循环左移(字节/字)
RCL dst,计数值
*


x

*
带进位循环右移(字节/字)
RCR dst,计数值
*


x

*
注解:表中“*”表示运算结果影响标志位:“—”表示运算结果影响标志位;“x”表示表示位为任意值;“0”表示将标志位置“0”

第三章基本指令系统

第三章基本指令系统

注:该指令用在多字节加法运算中。
28
例:两个4字节无符号数相加,两数分别在2000H、3000H开 始的内存单元,和放在2000H开始的4个内容单元。
MOV SI, 2000H MOV AX, [SI] MOV DI, 3000H ADD AX, [DI] MOV [SI], AX MOV AX, [SI+2] ADC AX, [DI+2] MOV [SI+2], AX ;SI指向一加数首址 2000H ;AX 8423H ;DI指向另一加数首址 ;AX 8423H+7F00H ;低16位和送[2000H][2001H] ;AX 1000H 3000H ;AX 1000H+2000H+CF ;高16位和送[2002H][2003H]
4)DST、SRC长度要一致。
MOV AL, BX ()
5) DST 不能是立即数 MOV 1000H, AX () 6)DST、SRC 不能同时为存储器寻址 MOV [1000H], [3000H] () 7)MOV指令不破坏源操作数
6
一、通用传送指令——XCHG
2、XCHG 格式:XCHG OPR1, OPR2 ; OPR1 OPR2 功能:两操作数内容相交换。 例: XCHG BL, AL ;两寄存器内容交换(字节交换)
第三章基本指令系统指令系统8086指令系统什么是指令系统cpu指令系统mcs51指令系统指令系统层指令系统的作用微处理器的指令系统指令系统就是指令吗
第三章 8086CPU基本指令系统
3.1 数据传送指令 3.2 算术运算指令
3.3 十进制调整指令
3.4 逻辑运算指令和移位指令 3.5 处理器控制指令
27
一、加法指令——ADC

算术运算指令

算术运算指令

一、算术运算指令算术运算中的溢出问题以8位二进制数的加法为例,两个8位数相加时有4种情况:二进制运算对应的十进制运算数据作为无符号数数据作为有符号数Case1:无符号数和有符号数均不溢出0000 1000+ 0001 11100010 0110结果: 26H(38)CF=0, OF=08+ 3038未超出8位无符号二进制数表示范围+8+ (+30)+38未超出8位有符号二进制数表示范围Case2:无符号数溢出,有符号数不溢出0000 1000+ 1111 11011 0000 0101结果:5CF=1, OF=08+ 253261超出8位无符号二进制数表示范围+8+(-3)+5未超出8位有符号二进制数表示范围Case3:无符号数不溢出,有符号数溢出0000 1000+ 0111 11011000 0101结果:-123(补码)CF=0, OF=18+ 125133未超出8位无符号二进制数表示范围+8+ (+125)+133超出8位有符号二进制数表示范围Case4:无符号数和有符号数均溢出1000 1000+ 1111 01111 0111 1111结果:127CF=1, OF=1136+ 247383超出8位无符号二进制数表示范围-120+ (-9)-129超出8位有符号二进制数表示范围上面四种情况说明,算术运算溢出的判别是比较复杂的,不能只用一个标志位来判别。

算术运算溢出是一种出错状态,在运算过程中应当避免。

1 加法运算指令【例1】ADD CL,20H ;CL←(CL)+ 20HADD AX,SI ;AX←(AX)+(SI)ADD [BX+2],AL ;(BX+2)←((BX)+2)+(AL)ADD DX,[BX+SI] ;DX←(DX)+((BX)+(SI))ADD AX,CL ;错误!操作数类型应一致ADD [SI],[BX] ;错误!不允许两个操作数都是存储器ADD DS,AX ;错误!不允许把段寄存器作为操作数加法指令对全部6个状态标志位都会产生影响。

汇编语言考试复习题及答案

汇编语言考试复习题及答案

一、单项选择题(从下列每题的四个选择中选择一个正确的,填入答题纸的相应位置。

每小题2分,共30分)1.下列指令有语法错误的是__________。

A) PUSH AL B) ADDC AX,50HC) MOV [SI],[DI] D) JMP WORD PTR[BX+5]见书:35页,PUSH2.执行下列程序段后,(AX)= ________。

TAB DW 1,2,3,4,5,6ENTRY EQU 3MOV BX, OFFSET TABADD BX,ENTRYMOV AX,[BX] A) 0003H B) 0300H C) 0400H D) 0004H3.NC 指令不影响 _________标志。

A) OF B) CF C) ZF D) SF4.执行下列指令后:STR1 DW ‘AB’STR2 DB 16 DUP(?)CNT EQU $ -STR1MOV CX,CNTMOV AX,STR1HLT寄存器CL的值是________,寄存器AX的值是________。

① A) 10H B) 12H C) 0EH D) 0FH② A) 00ABH B) 00BAH C) 4142H D) 4241H5.汇编语言源程序经汇编后不能直接生成文件。

A).OBJ B).LST C).EXE D).CRF6.8086 CPU在基址加变址的寻址方式中,已知BX=2000H,SI=1234H,则指令“MOV AX,[BX+SI+2]”的源操作在中。

(A)数据段中偏移量为3236H的字节(B)数据段中偏移量为3234H的字节(C)附加段中偏移量为3236H的字节(D)附加段中偏移量为3234H的字节(A)19,20 (B)20,无右孩子(C)无左孩子,20 (D)无左孩子,无右孩子7.执行下面的程序段后,DAT1单元的值是。

DAT1 DB 12H,34HDAT2 DB 56H,78HMOV AX,WORD PTR DAT1CMP AX,WORD PTR DAT2JA DONEMOV BX,WORD PTR DAT2MOV WORD PTR DAT2,AXMOV WORD PTR DAT1,BXDONE:HLTA)12H B)34H C)56H D)78H8.下列指令中,正确的一条是。

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

大连东软信息学院
学生实验报告
课程名称:_ _____________
专业班级: __________________
姓名: _______________
学号_________________
2011-- 2012 学年第 2 学期
实验报告注意事项
1. 课前必须认真预习实验,认真书写预习报告,了解实验步骤,未预习或预习
达不到要求的学生不准参加实验;
2. 实验完毕,必须将结果交实验指导教师进行检查,并将计算机正常关机、将
仪器设备、用具及椅子等整理好,方可离开实验室;
3. 按照实验要求书写实验报告,条理清晰,数据准确;
4. 当实验报告写错后,不能撕毁,请在相连的实验报告纸上重写;
5.实验报告严禁抄袭,如发现抄袭实验报告的情况,则抄袭者与被抄袭者该次
实验以0分计;
6. 无故缺实验者,按学院学籍管理制度进行处理;
7. 课程结束后实验报告册上交实验指导教师,并进行考核与存档。

(2)AFH+7EH,结果放在2001H单元
(3)1024H-50AFH,结果放在2006H和2007H单元中;
2、
写出指令代码:例如41H+3BH;
MOV AH, 41
ADD AH, 3B
MOV [2000], AH
(3)在DEBUG下输入指令;
(4)运行程序,记录运行结果及标志位状态。

(1)、5AH&A5H,结果放在2001H单元中;
(2)、5AH⊗00H,结果放在2003H单元中;
(4)!00H,结果放在2000H单元中;。

相关文档
最新文档