tceic.com
学霸学习网 这下你爽了
相关文章
当前位置:首页 >> 数学 >>

指令系统(算术运算类)_图文

算术运算指令
● 1. 加法指令

(1)不带进位加法指令ADD ●指令格式: ADD DST,SRC;

执行操作: DST←(SRC)+(DST)
(2)带进位加法指令ADC ●指令格式: ADC DST,SRC; 执行操作: DST ←(SRC)+(DST)+CF 注意: (1)目的操作数不能为立即数。 (2)不允许两个操作数都为存储器操作数。 (3)段寄存器不能参与加法操作。 (4)指令执行结果影响CF、OF、PF、SF、ZF和AF标志位。OF位可以用来表 示带符号数的运算是否溢出,而CF位则可用来表示无符号的运算是否有进位。

例:ADD ADD ADD ADD ADD ADC ADC ADC ADC ADC

AX,BX AL,[2000H[ [BX],AL BL,6H BYTE PTR [SI],5H AX,BX AL,[2000H] [BX],AL BL,6H WORD PTR [DI],89H

例:有两个4字节的无符号数相加: 2C 56 F8 AC + 30 9E 47 BE = ? 设被加数、加数分别存放在BUFFER1及BUFFER2开始的两个存储区内,结果 放回BUFFER1存储区,如下页图所示。 因CPU只能进行8位或16位的加法运算,为此可将加法分4次进行。
BUFFER1

ACH F8H 56H 2CH

被 加 数

BUFFER2

数 据 段 BEH 47H 9EH 30H
... 加 数

多字节加法示意图

程序段如下: MOV CX,4 MOV SI,0 CLC LL: MOV AL,BUFFER2[SI] ADC BUFFER1[SI],AL INC SI DEC CX JNZ LL

;置循环次数 ;置SI初值为零 ;清进位标志CF ;带进位加 ;(SI)+1 ;(CX)-1 ;若(CX)?0,则转LL

思考:若最高位有进位,如何改?

● 1. 加法指令

(3)加1指令INC
●指令格式: INC OPR

执行操作: OPR←(OPR)+1 例:INC INC AX BYTE

PTR[BX]

使用INC指令应注意:

(1)目的操作数不能为立即数和段寄存器。
(2)目的操作数为存储器操作数时,应指明按字类型还是字节类型操作。 (3)本指令影响标志OF、PF、SF、ZF和AF,但不影响CF标志位。 例:INC AL 前:AL=7FH,AF=0,CF=1,OF=0,SF=1,PF=0,ZF=1 后:AL=80H, AF=1,CF=1,OF=1,SF=1,PF=0,ZF=0

● 2. 减法指令

(1) SUB指令 ●指令格式: SUB DST, SRC

执行操作: DST ←(DST)-(SRC)
(2)带借位减法指令SBB ●指令格式: SBB DST, SRC

执行操作: DST ←(DST)-(SRC)-CF
(3)减1指令DEC ●指令格式: DEC OPR 注意 以上三种减法运算 影响各标志位,情 况同对应加法运算

执行操作: OPR ←(OPR)-1

● 2. 减法指令

(4)求补指令NEG
●指令格式: NEG OPR

执行操作: OPR← 0 -(OPR) 注意 (1)目的操作数可以是通用寄存器寻址或存储器寻址方式,若是存储器操作 数,应指明按字类型还是字节类型操作。 (2)指令执行结果影响标志AF、OF、PF、SF、ZF和CF。仅当目的操作数为零 时,CF=0;否则CF=1。 (3)对一个操作数求补相当于用0减去此操作数,故利用NEG指令可得到负数 的绝对值。 例: 若(AL)=0FCH,则执行 NEG AL 后, (AL)=04H,CF=1 本例中,0FCH为-4的补码,执行求补指令后,即得到4(-4的绝对值)。

(5)比较指令CMP
●指令格式: CMP dest, src

执行操作:(dest)-(src)

注意
(1)目的操作数减源操作数,结果只影响标志位,不送入目的地址。 (2)根据ZF判断两个数是否相等。若ZF=1,则两数相等。 若ZF=0,则两个数不相等,则分两种情况考虑: ①比较的是两个无符号数 若CF=0,则dest>src; 若CF=1,则dest<src。 ②比较的是两个有符号数 若OF⊕SF=0,则dest>src; 若OF⊕SF=1,则dest<src。

例:在内存中有从BUF开始的10个无符号字数据,求出最大值存放到MAX 单元中。
MOV LEA MOV CX,9 BX,BUF AX,[BX] ;9送CX,控制循环次数 ;取BUF的有效地址送BX ;从BX指向的一个字信息送AX

ADD
AGAIN: CMP JA MOV NEXT: ADD DEC JNZ

BX,2
AX,[BX] NEXT AX,[BX] BX,2 CX AGAIN

;(BX)+2→BX,指向下一个字
;AX的内容与BX指向字比较 ;若(AX)>((BX)),跳到NEXT ;否则,BX指向字的内容送AX ;(BX)+2→BX,指向下一个字 ;(CX)-1→CX ;若(CX)≠0,跳到AGAIN

MOV
HLT

MAX,AX

;执行循环完后,把最大值送MAX

● 3.乘法指令

(1)无符号数乘法指令MUL
●指令格式: MUL SRC

指令操作:AX←(AL)*(SRC);字节操作数

DX,AX ←(AX)*(SRC);字操作数
例:MUL BL 前:AL=00000011B,BL=00000010B 后:AH=00000000B,AL=00000110B,OF=CF=0 源操作数可以采用寄存器寻址或存储器寻址方式,若是存储器操作 数,应指明按字类型还是字节类型操作。 MUL WORD PTR [SI]

(2)带符号数乘法指令IMUL
●指令格式与操作同MUL指令。 注意
1) 乘法指令中源操作数不能为立即数; 2) AL(AX)为隐含的乘数寄存器; 3) AX(DX,AX)为隐含的乘积寄存器。 4) MUL指令,影响CF和OF标志位;当结果的高一半等于0时(即AH或DX的 内容),CF、OF都为0,否则CF、OF都为1; 5)IMUL指令,同样影响CF和OF标志位;当结果的高一半是低一 半的符号扩展时,CF、OF都为0,否则CF、OF都为1;

● 4. 除法指令

(1)无符号数除法指令DIV ●指令格式: DIV ●指令操作: SRC

字节除法: AL(商)、AH(余数)←(AX)/(SRC) 字除法: AX(商)、DX(余数)←(DX,AX)/(SRC) 源操作数可以采用寄存器或存储器操作数寻址方式。 DIV CL DIV WORD PTR[BX]

(2)带符号数除法指令IDIV
●指令IDIV格式与操作同DIV指令。

注意

1)除法指令中源操作数不能为立即数;

2) AX(DX,AX)为隐含的被除数寄存器;
3)AL(AX)为隐含的商寄存器; 4)AH(DX)为隐含的余数寄存器; 5)除法指令对所有标志位无定义。

(3)字节转换为字指令CBW ●指令功能:将源操作数由字节转换为字

●指令格式:CBW
CBW指令默认(AL)为源操作数,若(AL)的最高有效位为0, 则执行CBW后,(AH)=00H,若(AL)最高有效位为1,则执 行CBW后,(AH)=0FFH。

(4)字转换为双字指令CWD
●指令功能:将源操作数由字转换为双字 ●指令格式:CWD CWD指令默认(AX)为源操作数,若(AX)的最高有效位为0, 则执行CWD后,(DX)=0000H,若(AX)最高有效位为1, 则执行CWD后,(DX)=0FFFFH 。

例: 写出两带符号数34H÷25H的程序段。 MOV AL,34H MOV BL,25H CBW ; AL的符号扩展到AH IDIV BL ; 0034H÷25H,结果为 ; (AH)=0FH, (AL)=01H

● 5. 十进制调整指令

8086提供了6种调整指令
?ASCII的加法调整指令AAA ?ASCII的减法调整指令AAS ?十进制的加法调整指令DAA ?十进制的减法调整指令DAS

?乘法的ASCII调整指令AAM
?除法的ASCII调整指令AAD

注意:加法、减法和乘法的调整指令都是紧跟在算术指令之后,将二进 制的运算结果调整为十进制数。而除法的调整指令必须放在除法指令之前进 行,以防止除法出现错误的结果。

例如:计算(X*Y+Z)/X,其中X、Y、Z均为16位带符号数,分别存 入存储单元BUFF1、BUFF2、BUFF3中。 MOV IMUL MOV MOV MOV CWD ADD ADC MOV MOV IDIV AX,BUFF1 BUFF2 CX,AX BX,DX AX,BUFF3 CX,AX BX,DX AX,CX DX,BX BUFF1 ;将BUFF1存入默认被乘数寄存器AX ;带符号乘法运算,结果在(DX,AX) ;中间结果转移,让出AX寄存器 ;中间结果转移,让出DX寄存器 ; ;将Z转换为双字放入(DX,AX) ; ;双字加法运算 ; ;将被除数存入默认寄存器(DX,AX) ;带符号除法运算,结果商(AX)余数(DX)


推荐相关:

指令系统(算术运算类)_图文.ppt

指令系统(算术运算类) - 河南理工大学微机原理与单片机考试课件(精华版)... 指令系统(算术运算类)_工学_高等教育_教育专区。河南理工大学微机原理与单片机考试课件(...

指令系统(算术运算类)3_图文.ppt

指令系统(算术运算类)3 - 算术运算指令 ● 1. 加法指令 (1)不带进位加

80868088的指令系统(算术运算)修改资料_图文.ppt

80868088的指令系统(算术运算)修改资料 - 算术运算指令 ? 有5类指令: ? 加法指令 ? 减法指令 ? 乘法指令 ? 除法指令 ? 十进制调整指令 算术运算指令 表2 ...

算术运算类指令_图文.ppt

算术运算类指令_化学_自然科学_专业资料。第三节 8086/8088的指令系统(续) 三. 算术运算指令 1 三. ...

80868088的指令系统(算术运算)修改_图文.ppt

80868088的指令系统(算术运算)修改 - 算术运算指令 ? 有5类指令:

[高等教育]第332 算术运算类指令_图文.ppt

[高等教育]第332 算术运算类指令 - 第 3章 80x86的指令系统和寻址方式 第三章 80x86的指令系统(二) 二、算术运算类指令 p36 返回目录 第 3章 80x86...

第3章 80868088指令系统3(算术运算指令)_图文.ppt

第3章 80868088指令系统3(算术运算指令) - 3.3.2 算术运算指令

第3章 8088指令系统3(算术运算指令)_图文.ppt

第3章 8088指令系统3(算术运算指令) - 3.3.2 算术运算指令 涉及两

ch3-3 8086指令系统(算术运算与逻辑运算)_图文.ppt

ch3-3 8086指令系统(算术运算与逻辑运算) - 授课教师:王磊 齐鲁工业

第2章_8088指令系统3(算术运算指令)_图文.ppt

? 需使用不同的标志位(CF,OF)来检查无符号数 和有符号数的运算结果是否溢出。 ? 这类指令一般都影响标志寄存器FLAGS。 1 表3 - 2 算术运算类指令表 2 ? ...

单片机课件算术运算类指令_图文.ppt

单片机课件算术运算类指令 - 第三章 MCS-51指令系统 2 算术运算类指令(24条) 成都理工大学工程技术学院 Arithmetic Operations 主...

第二章_3 8086指令系统(传送类)_图文.ppt

第二章_3 8086指令系统(传送类) - 3.2 指令系统 按功能分为: ?数据传送指令 ?算术运算指令 ?位处理指令(逻辑运算指令) ?串操作指令 ?控制转移指令 ?处理...

单片机 算术运算类 指令_图文.ppt

单片机 算术运算类 指令 - 第六课 复习 3.4 MCS-51指令系统的分类介绍 3.4.2 算术运算类指令 3.4.3 逻辑运算类指令 3.4 MCS-51指令系统分类介绍 3.4...

第4章3_算术运算类指令_图文.ppt

第4章3_算术运算类指令 - 第4章 80x86指令系统 数据传送指令总结 共1

第七章-指令系统03-指令的类型_图文.ppt

解的问题, 编制计算程序时,指令系统提供的指令足够...4)移位类指令 功能:实现逻辑移位,循环移位,算术移位...

单片机 算术运算类 指令ppt课件_图文.ppt

单片机 算术运算类 指令ppt课件 - 单片机 算术运 算类 指令 3.4 MCS-51指令系统分类介绍 3.4.2 算术运算类指令(24条) 算术运算指令可以完成加、减、乘、除...

第3章 8088指令系统3(算术运算指令)_图文.ppt

第3章 8088指令系统3(算术运算指令) - 3.3.2 算术运算指令 涉及两

第二章3 8086指令系统(传送类)_图文.ppt

第二章3 8086指令系统(传送类) - 3.2 指令系统 按功能分为: ?数据传送指令 ?算术运算指令 ?位处理指令(逻辑运算指令) ?串操作指令 ?控制转移指令 ?处理机...

3-4算术运算指令资料_图文.ppt

3-4算术运算指令资料 - 3.3 8086 CPU指令系统 4、指令系统分类 指令系统是CPU指令的集合,Intel 8086指令系统共有117条基 本指令,按功能分为六大类: (1)数据...

第4章 MCS-51指令系统、汇编语言程序设计基础_图文.ppt

第4章 MCS-51单片机指令系统 4.1 概述 4.2 数据传送类指令 4.3 算术运算类指令 4.4 逻辑运算类指令 4.5 控制转移类指令 4.6 位处理类指令 2.1 概述一、指令...

网站首页 | 网站地图
All rights reserved Powered by 学霸学习网 www.tceic.com
copyright ©right 2010-2021。
文档资料库内容来自网络,如有侵犯请联系客服。zhit325@126.com