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

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


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

算术运算类指令_化学_自然科学_专业资料。第三节 8086/8088的指令系统(续) 三. 算术运算指令 1 三. 算术运算指令 指令分类:二进制运算 加减乘除 ADD, ADC, ...


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

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


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

第3章 80868088的指令系统(算术运算)_工学_高等教育_教育专区。算术运算指令 ? 有5类指令: 类指令: 类指令加法指令 减法指令 乘法指令 除法指令 十进制调整指令...


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

第3章 指令系统算术运算指令 - 汇编语言程序设计 第3章 指令系统与寻址方式 3.1 3.2 3.3 寻址方式 程序占有的空间和执行时间 80x86的指令系统 汇编语言...


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

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


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

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


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

《 计算机组成原理 》第七章 指令系统 逻辑功能:计算 0 + 1 机器指令:001 ...7.4、指令的类型与功能设置 4)移位类指令 功能:实现逻辑移位,循环移位,算术...


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

第3章 指令系统算术运算指令 - 汇编语言程序设计 第3章 指令系统与寻址方式 章 3.1 3.2 3.3 寻址方式 程序占有的空间和执行时间 80x86的指令系统 汇编...


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

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


第3章_8086的指令系统3[1].2.2算术、逻辑运算指令_图文.ppt

第3章_8086的指令系统3[1].2.2算术、逻辑运算指令_工学_高等教育_教育专区。第3章 3.2.2 算术运算类指令 算术运算类指令用来执行二进制的算术运 算:...


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

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


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

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


80C51单片微机的指令系统(D)_图文.ppt

80C51单片微机的指令系统(D) - 第三章 80C51单片微机的指令系统 3.1 80C51指令系统概述 3.2 数据传送类指令 3.3 算术运算类指令 3.4 逻辑运算类指令 3.5...


51单片机指令系统及汇编语言程序设计_图文.ppt

MCS-51单片机指令系 统及汇编语言程序设计内容提要:§3-1 汇编语言与指令系统简介 §3-2 数据传送类指令§3-3 算术运算类指令 §3-4 逻辑运算类指令 §3-5...


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

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


lec07 逻辑运算类指令_图文.ppt

lec07 逻辑运算类指令 - 第 07 讲 8086指令系统 逻辑运算类&处理器控制等指令 8086的指令系统 1. 数据传送类指令 2. 算术运算类指令 3. 逻辑运算类指令...


第三章 指令系统_图文.ppt

3.1.2 指令系统 3.1.2 8086微处理器的指令系统 微处理器的指令系统指令系统可分为如下几类: 指令系统可分为如下几类: 1.数据传送类 . 2.算术运算类 . 3...


第四章汇编指令系统_图文.pdf

第四章汇编指令系统 - 第四章 80C51的指令系统 4.1 4.2 4.3 4.4 4.5 4.6 4.7 2010-3-17 指令系统简介 寻址方式 数据传送类指令 算术运算类指令 逻辑操...


第4章 算术运算指令(讲义)_图文.ppt

第4章 算术运算指令(讲义) - 第2章 寻址方式和指令系统 第2章 寻址方式和指令系统 2.1 寻址方式 2.2 数据传送类指令 2.3 算术运算类指令 2.4 位操作类...

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