03-第3-4-章-YJ-第1部分-到加减乘除指令介绍

合集下载

算术运算类指令

算术运算类指令
算术运算类指令
(3)乘法运算指令
MUL(unsigned MULtiple) 无符号数乘法。
IMUL(sIgned MULtiple) 带符号数乘法。
① MUL无符号数乘法指令
指令格式:MUL SRC
指令功能:
字节操作数 AX (AL)*(SRC)
字操作数
DX:AX (AX)*(SRC)
其中(SRC)是乘法运算的一个操作数,它只能在通用寄存 器或存储单元中(不能是立即数),而另一个操作数隐含在 AL(字节乘)、AX(字乘)或EAX(双字乘)寄存器中。
MUL指令只影响标志寄存器中CF、OF标志位。MUL指令 执行后,如果乘积的高一半为0,即AH(字节乘)、DX(字 乘法)或EAX(双字乘)全为0,则CF 0和OF 0;否则CF 1,OF 1(表示AH、DX或算术E运D算类X指中令有乘积的有效数字)。
② IMUL带符号数乘法指令
指令格式:IMUL SRC 指令功能:与MUL相同,但操作数和乘积必须是带符号数且用 补码表示,而MUL的操作数和乘积均是无符号数。
CMP指令与SUB指令的不同之处是,运算结果不送回目的 地址中。因此CMP指令执行后,两个操作数都不变,只影响状 态标志位。CMP指令后往往跟着一个条件转移指令,根据比较 结果产生不同的程序分支。例如:
CMP AL,BL
JZ EQL
CMP指令可利用所设标志位的状态来反映两个操作数的大小。 CMP指令执行后,若ZF 1,表示(DEST)(SRC)。对于无 符号数,若CF 0,表示(DEST)≥(SRC);若CF 1,则 (DEST)<(SRC)。
② IDIV带符号数除法指令
指令格式:IDIV SRC 指令功能:与DIV相同,但操作数、商和余数必须是带符号数 且用补码表示,余数的符号与被除数的符号相同。

实验四加减乘除等算术运算指令

实验四加减乘除等算术运算指令

实验四加减乘除算术运算类指令一.实验目的1.学习掌握加减乘除等算术运算类指令的功能2.学习掌握加减乘除指令对FLAG的影响二。

实验工具软件MS-DOS DEBUG PC机三.实验过程及调试结果1.加法指令(1)实现无符号数相加例如 25+36结果:-r(AL)=3D CF=0 ZF=0 OF=0结果解释:(AL)=3D,该无符号数对应的真值是61。

由CF标志位0标明无符号数没有进位(超出目的操作数表示范围),“和”结果可用。

人工验算真值“和”结果:正确的。

没有发生溢出。

SP和CP无意义。

(2)实现有符号数相加例如(-25)+(-46)结果:-r(Al)=B9H=(-71)补 OF=0 SF=1 ZF=0结果解释:结果解释:(AL)=(A1)=B9H,对应的真值是-71,OF=0,表明结果没有出错,SF=1,表明运算结果为负数。

人工验算真值“和”结果:正确的,没有发生溢出。

2.减法指令(1)实现无符号数减。

例如 36-15观察 al,OF,CF,ZF,SF结果解释:(AL)=15,对应的真值是21,CF=0,表明结果是正确的,没有溢出。

人工验算和计算机结果解释比较,结论是结果是正确的,没有溢出。

(2)实现有符号数(-25(e7)补)-(-46(d2)补)观察 al,OF,CF,ZF,SF,分析结果是否正确,并加以算术验证结果解释:(AL)=FF15,对应的真值是21,OF=1,表明结果是正确的,没有溢出,SF=0,表明结果是正的。

NZ表明结果非零。

3。

乘法指令(1)实现无符号数。

例如 36*15结果:(AX)=021CH=540 CF=1 OF=1结果解释:(AX)=021C,对应的真值是540,CF=1,OF=1,表明结果是?乘积超过了八位,需要从16为寄存器Of=0,cf=0,乘积没有超过八位若用16位寄存器计算,0f。

cf=1,则乘积超过了十六位,需要32为寄存器(2)实现有符号数(-25)*(-6)结果:(AX)=0096H=(+150)补 CF=OF=1结果解释:(AX)=0096,对应的真值150,是CF=0,OF=0,表明结果是乘积是8位8位乘法,CF=1,OF=1,乘积超出了8位,需要从16位寄存器中获取完整的乘积。

加减乘除操作过程描述

加减乘除操作过程描述

加减乘除操作过程描述加减乘除是数学中最基本的四则运算,它们在我们日常生活中随处可见。

下面我们将分别介绍加减乘除的操作过程。

一、加法操作过程:加法是指将两个或多个数值相加得到一个总和的操作。

比如,我们有两个数值2和3,要求它们的和。

我们将第一个数2写在一条横线上,然后在下方写上加号“+”,再写上第二个数3,最后在下方写上等号“=”。

接下来,我们从个位开始对齐两个数的对应位数,即将个位上的2与个位上的3相加,得到5。

将结果5写在等号下方的个位上。

然后,我们继续对齐十位上的0和百位上的0,因为它们相加的结果都是0。

所以,在等号下方的十位和百位上都写上0。

我们得到了两个数2和3的和,即5。

所以,2+3=5。

二、减法操作过程:减法是指将一个数值从另一个数值中减去,得到一个差的操作。

比如,我们有两个数值5和2,要求5减去2的差。

我们将被减数5写在一条横线上,然后在下方写上减号“-”,再写上减数2,最后在下方写上等号“=”。

接下来,我们从个位开始对齐两个数的对应位数,即将个位上的5减去个位上的2,得到3。

将结果3写在等号下方的个位上。

然后,我们继续对齐十位上的0和百位上的0,因为它们相减的结果都是0。

所以,在等号下方的十位和百位上都写上0。

我们得到了5减去2的差,即3。

所以,5-2=3。

三、乘法操作过程:乘法是指将两个数值相乘得到一个积的操作。

比如,我们有两个数值2和3,要求它们的积。

我们将第一个数2写在一条横线上,然后在下方写上乘号“×”,再写上第二个数3,最后在下方写上等号“=”。

接下来,我们将第一个数2的个位上的数值2与第二个数3相乘,得到6。

将结果6写在等号下方的个位上。

然后,我们将第一个数2的十位上的数值2与第二个数3相乘,得到6。

将结果6写在等号下方的十位上。

我们得到了两个数2和3的积,即6。

所以,2×3=6。

四、除法操作过程:除法是指将一个数值除以另一个数值得到一个商的操作。

加减乘除的基本运算

加减乘除的基本运算

加减乘除的基本运算在数学中,加减乘除是我们经常进行的基本运算。

无论是在日常生活中还是在学习和工作中,我们都需要运用这些基本运算来解决各种问题。

本文将介绍加减乘除的概念、运算规律以及常见的应用场景。

一、加法(Addition)加法是将两个或多个数值相加的运算。

在加法运算中,被加数加上加数等于和数。

加法的运算符号为"+",例如2 + 3 = 5。

加法运算满足交换律,即a + b = b + a。

二、减法(Subtraction)减法是从一个数中减去另一个数的运算。

在减法运算中,被减数减去减数等于差数。

减法的运算符号为"-",例如5 - 2 = 3。

减法运算不满足交换律,即a - b ≠ b - a。

三、乘法(Multiplication)乘法是将两个数相乘的运算。

在乘法运算中,被乘数乘以乘数等于积数。

乘法的运算符号为"*"或者"×",例如2 × 3 = 6。

乘法运算满足交换律,即a × b = b × a。

四、除法(Division)除法是将一个数除以另一个数的运算。

在除法运算中,被除数除以除数等于商数。

除法的运算符号为"÷"或者"/",例如6 ÷ 3 = 2。

除法运算不满足交换律,即a ÷ b ≠ b ÷ a。

在加减乘除的基本运算中,还有一些重要的规律和特点需要注意:1. 加法和乘法满足结合律,即a + (b + c) = (a + b) + c和a × (b × c) =(a × b) × c。

2. 减法和除法不满足结合律,即a - (b - c) ≠ (a - b) - c和a ÷ (b ÷ c) ≠(a ÷ b) ÷ c。

单片机课件——算术运算类指令

单片机课件——算术运算类指令


DA A ; A=23H,按十进制规律加


2020年3月5日9时21分
第三章 MCS-51指令系统
调整要完成的任务是:
成 都 理
(1)当累加器A中的低4位数出现了非 BCD码(1010~1111)或低4位产生进位
工 (AC=1),则应在低4位加6调整,以产
大 生低4位正确的BCD结果。

工 (2)当累加器A中的高4位数出现了非BCD

院 内部RAM(30H)=?;外部RAM(30H)=?
2020年3月5日9时21分
第三章 MCS-51指令系统
3、判断题

下面指令是否正确,并将错误指令改正之。

MOV #30H , A
理 工
MOV @DPTR , A

DA R1

DIV A , R0
工 程
MOV 30H , 40H

PUSH #30H
第三章 MCS-51指令系统

都 理
例:
SUBB
A,R2
工 设: A=C9H,R2=55H,CY=1,
大 学
执行指令之后,A中的值为73H。






2020年3月5日9时21分
第三章 MCS-51指令系统

都 说明:没有不带借位的减法指令,如果需 理工要做不带位的减法指令(在做第一次相减 大时),只要将CY清零即可。 学 对带符号数,要注意OV标志。OV=1,出 工程错。
都 理
ANL A,Rn
工 ANL A,direct
大 ANL A,@Ri
;A∧Rn→A ;A∧(direct)→A ;A∧(Ri)→A

算术及逻辑运算类指令

算术及逻辑运算类指令
调整后,辅助进位位AC表示十进数中个位向十位的进位,进位标志Cy表示十位向百位的进位。
DA指令不影响溢出标志OV,MCS-51指令系统中没有给出十进制的减法调整指令,不能用DA指令 对十进制减法操作的结果进行调整。借助Cy可实现多位BCD数的加法运算。
一.加减指令
2.减法指令
SUBB A,源操作数;带借位减法指令
逻辑与指令
• ANL A,Rn ;A与Rn中的值按位'与',结果送入A中。 • ANL A,direct ;A与direct中的值按位'与',结果送入A中。 • ANL A,@Ri ;A与间址寻址单元@Ri中的值按位'与',结果送入A中。 • ANL A,#data ;A与立即数data按位'与',结果送入A中。 • ANL direct,A ;direct中值与A中的值按位'与',结果送入direct中。 • ANL direct,#data ;direct中的值与立即数data按位'与',结果送入direct中。
在知道了逻辑与指令的功能后,逻辑或和逻辑异或的功能就很简单了。 逻辑或是按位“或”,即有“1”为1,全“0”为0。

10011000 或 01100001 结果 11111001
而异或则是按位“异或”,相同为“0”,相异为“1”。
10011000 异或 01100001 结果 11111001 而所有的或指令,就是将与指仿中的ANL 换成ORL,
谢谢观看!
单片机原理及应用
除法一般会出现小数,但计算机中可没法直接表达小数,它用的是我们小学生还没接触到小数 时用的商和余数的概念,如13/5,其商是2,余数是3。除了以后,商放在A中,余数放在B中。 CY和OV都是0。如果在做除法前B中的值是00H,也就是除数为0,那么0指令 (A累加器为操作数)

第03章5算术运算指令

第03章5算术运算指令

(1)
(2)
MUL BX
; (DX, AX) (AX) * (BX) ; 16A5*0611=0089 5EF5 ; (DX)=0089H (AX)=5EF5H CF=OF=1
26
4、除法指令(
DIV 、 IDIV )
1)、无符号数除法指令
DIV SRC
字节操作 : (AL) (AX) / (SRC) 的商
8
加、减法指令对标志位 (CF/OF/ZF/SF/AF/PF)的影响
1 运算使最高有进位或者借位 CF= 0 否则 意义:表示看作无符号数运算结果是否产生溢出。
9
OF= C ← F⊕ C ← S C ← F:最高位进/借位 C ← S:次高位进/借位
意义:表示看作带符号数运算结果是否产生溢出。
10
34
AX DX Z
AX DX
6、十进制调整指令(
AAS 、 AAM 、 AAD )
DAA 、 DAS、 AAA 、
BCD码
用二进制编码的十进制数,又称二--十进制数
35
压缩的BCD码
用 4 位二进制数表示 1 位十进制数
例:(12)10 =(0001 0010)BCD =(1100)2
非压缩的BCD码
§ 3.4.2 算术运算指令
加法指令 减法指令 乘法指令 ADD、ADC、INC SUB、SBB、DEC、NEG、CMP MUL、IMUL
除法指令
DIV、IDIV
DAA、DAS、 AAA、AAS、AAM、
十进制调整指令 AAD
1
1、加法指令(ADD、ADC、INC)
1)、 加法指令(Addition) ADD DST , SRC ; (DST) (SRC) + (DST)

算术运算指令

算术运算指令

算术运算指令摘要:本文介绍了算术运算指令,首先对其功能和特点进行了概述;接着介绍了具体的指令和它们的功能;随后介绍了如何使用它们;最后总结了它们的有点和缺点。

关键词:算术运算;指令;功能;使用1. Introduction算术运算指令是一类用于快速执行算术运算操作的指令。

它们可以快速而准确地从计算机存储器中取出数据,并在执行算术运算时将数据与指令指示结合起来。

依据实际应用,算术运算指令可分为加法、减法、乘法、除法、移位、取模、取反、转换等指令。

它们的优点在于快速运算,精确度高,节省存储空间,指令少,可混合使用,易于编程。

2. Specific Instructions(1)加法运算指令:加法运算指令是一种最常用的算术运算指令,用于完成两个操作数的加法运算,其形式为“add a,b”,即a+b,其中,a是被加数,b是加数,运算后的结果存放在a中。

(2)减法运算指令:减法运算指令用于实现两个操作数的减法计算,其形式为“sub a,b”,即a-b,其中,a是被减数,b是减数,计算结果存放在a中。

(3)乘法运算指令:乘法运算指令用于实现两个操作数的乘法计算,其形式为“mul a,b”,即a×b,其中,a是被乘数,b是乘数,计算结果存放在a中。

(4)除法运算指令:除法运算指令用于实现两个操作数的除法计算,其形式为“div a,b”,即a÷b,其中,a是被除数,b是除数,计算结果存放在a中。

(5)移位运算指令:移位运算指令用于将一个操作数中的二进制位进行左移或右移操作,其形式为“shl a,b”或“shr a,b”,即将a向左移或向右移b位,可以用来快速乘以或除以2的N次方,计算结果存放在a中。

(6)取模运算指令:取模运算指令用于实现两个操作数的取模计算,其形式为“mod a,b”,即取a对b的余数,计算结果存放在a中。

(7)取反运算指令:取反运算指令用于实现一个操作数的取反计算,其形式为“neg a”,即将a按照求补原理取反,计算结果存放在a中。

算术指令解读

算术指令解读

• 实现两个双精度数的加法 • 8086、80286上 将两个数先放到寄存器对中:DX,AX 对和BX,CX对。(DX)=0002H,(AX)=0F365H • (BX)=0005H,(CX)=0E024H • 指令序列:ADD AX,CX • ADC DX,BX • 第一条指令执行后 (AX)=0D389,CF=1,SF=1, ZF=0,OF=0 • 第二条指令执行后 (DX)=0008H,(AX)=0D389H • SF=0,ZF=0,CF=0,OF=0 • 最后结果在DX,AX对中,结果没有溢出,正确的。
2. 减法指令
• • • • • • • SUB(subtract) 减法 SBB(subtract with borrow) 带进位减法 DEC(decrement) 减一 NEG(negate) 求补 CMP(compare) 比较 CMPXCHG(compare and exchange) 比较并交换 CMPXCHG8B(compare and exchange 8 byte) 比较并交 换8字节 • (1)SUB减法指令 • 格式:SUB DST,SRC • 操作(DST)(DST)–(SRC)且影响标志位
• 分两类机型:16位机8086和80286一种,另外32位机 80386以上的机型。
• 操作数:寄存器对(DX,AX) • 存储器:双精度数X,Y,Z,W • 立即数:24
• • • • • • • • • • • • • • • X X+1 X+2 X+3 Y Y+1 Y+2 Y+3 Z Z+1 Z+2 Z+3 W W+1 W+2
• • • • • •
4. 除法指令 DIV 无符号除法 IDIV 带符号除法 (1) DIV 格式: DIV SRC 字节操作:16位被除数在AX中,源操作数SRC可以是8位寄存 器数或存储器数,结果8位商在AL中,8位余数在AH中, • (AL) (AX)/(SRC)的商

3-2算术运算指令

3-2算术运算指令
结果为( ) 结果为(A)=6CH,CY=1,AC=0,OV=1,P=0 , , , ,
带进位加法指令 将源操作数和累加器A的内容以及CY的内容相 加,其结果放在累加器中
ADDC A,Rn ADDC A , direct ADDC A , @Ri ADDC A , #data ;(A) ; (A) ;(A) ;(A) (A)+( Rn)+CY (A)+( direct)+CY (A)+((Ri))+CY (A)+ data+CY
注意: 指令结果影响PSW中的 OV CY P CY 总是被清零 OV 积超过0FFH时置1,否则为0 P 当1的个数为奇数个,P=1;否 则P=0。
3.除法指令 3.除法指令 DIV A B 功能: 功能:(B)(A) 余数 商 (A)/(B)
A中的被除数除以B中的除数,商存入 累加器A中,余数存入寄存器B中。
带进位左环移指令 :RLC CY A7 A0
例:(A)=35H,CY=1 :( ) , 执行指令后的结果: 执行指令后的结果: RL A 1 00110101 • RLC A 01101010 •(A)=6AH
5. 减1指令 将操作数减1 将操作数减1后送回操作数 DEC A ;(A) (A)-1 ) DEC Rn ;(Rn ) ( Rn )-1 DEC direct ;(direct ) (direct)-1 ) DEC @Ri ;(( Ri )) ((Ri))-1
!无 DEC
DPTR指令 指令
以上指令除第一条指令结果影响PSW中 以上指令除第一条指令结果影响PSW中 PSW 的P标志外,其他指令结果均不影响PSW 标志外,其他指令结果均不影响PSW 中的CY、AC、 标志。 中的CY、AC、 OV 、P标志。 CY

左程云 位运算 加减乘除

左程云 位运算 加减乘除

左程云位运算加减乘除位运算中的加法、减法、乘法和除法可以通过位运算符来实现。

1. 加法:通过位异或运算符实现。

将两个二进制数进行异或运算,得到的结果即为它们的和,同时记录进位的位置。

然后将进位左移一位,再与异或的结果进行相加,直到进位为0。

例如:5 + 35的二进制表示为101,3的二进制表示为011第一步:异或运算,101 ^ 011 = 110第二步:进位运算,(101 & 011) << 1 = 0010第三步:将异或的结果与进位相加,110 + 0010 = 1000结果为82. 减法:通过位补运算实现。

首先对减数取补码,然后进行加法运算,再加上1,得到的结果即为两个数的差。

例如:5 - 35的二进制表示为101,3的二进制表示为011对3取补码得到101 (-3的补码)第一步:加法运算,101 + 101 = 1010第二步:加1,1010 + 1 = 1011结果为113. 乘法:通过位与、位或和位异或运算实现。

使用位与操作获取进位,使用位异或操作获取不考虑进位的结果,然后将进位左移一位,与不考虑进位的结果进行相加,重复这个过程,直到进位为0。

例如:5 * 35的二进制表示为101,3的二进制表示为011第一步:进位运算,101 & 011 = 001第二步:不考虑进位的结果,101 ^ 011 = 110第三步:进位左移一位,001 << 1 = 010第四步:将不考虑进位的结果与进位相加,110 + 010 = 1000结果为84. 除法:通过位右移运算实现。

使用位右移操作将被除数逐步缩小至0,记录右移的次数作为商。

例如:5 / 35的二进制表示为101,3的二进制表示为011第一步:将5右移一位,5 >> 1 = 10,商为1第二步:将2右移一位,2 >> 1 = 1,商为2第三步:将1右移一位,1 >> 1 = 0,商为3结果为1需要注意的是,位运算只适用于整数运算。

二、算术逻辑运算指令

二、算术逻辑运算指令
单操作数指令 双操作数指令
• 逻辑运算指令包括与、或、异或、循环、 累加器“清零”与“求反”指令,这些 指令的操作数都是8位。 • 逻辑运算指令不影响标志位。
三、逻辑运算指令
1. 单操作数逻辑运算指令
• ⑴累加器A的“清零”与“取反”指令 • CLR A ;(A)←#00H • CPL A ;(A)←( )
• 结 果 乘 积 为 3200H ( 12800 ) 则 ( A ) =00H,(B)=32H,OV=1,Cy=0
二、算术运算指令
⑵ 除法指令
• DIV AB ;(A)←(A)/ (B)的商
• (B)←(A)/(B)的余数
• 标志位Cy和OV清0(当除数为0时OV置1)
三、逻辑运算指令
• 共25条 • 按操作数个数分为两类:
二、算术运算指令
• 例3-13:设累加器A内容为压缩BCD码56 (即01010110B),寄存器R3的内容为 压缩BCD码67(即01100111B),Cy内 容为1。执行下列的指令: • ADDC A,R3 • DA A
二、算术运算指令
Hale Waihona Puke • 例3-14:设有4个压缩BCD码,分别放在 内部数据存储器50H~51H单元和60H~ 61H单元中,试编写求出两个数的和的 程序,结果存放到40H~41H单元中。
三、逻辑运算指令
⑶逻辑“异或”指令
• • • • • • XRL A,Rn ;(A)←(A) (Rn) XRL A,direct ;(A)←(A) (direct) XRL A,@Ri ;(A)←(A)(Ri)) XRL A,#data ;(A)←(A)data XRL direct,A;(A)←(A)(direct) XRL direct,#data;

数学运算指令

数学运算指令

减 整数减法指令
法 指
双整数减法指令
令 实数减法指令
BUCT
可编程控制器原理及应用
减法指令 整数减法指令的梯形图表示
指令标识符SUB_I
使能输入端EN
SUB_I EN ENO IN1 OUT IN2
构 使能输出端ENO 成 源操作数IN1
源操作数IN2
目的操作数地址OUT
BUCT
可编程控制器原理及应用
整数减法指令的语句表表示
操作码-I
构 成
源操作数IN1
目的操作数OUT
-I IN2,OUT
BUCT
可编程控制器原理及应用
整数减法指令的原理
当EN=1时,执行减法操作
SUB_I EN ENO IN1 OUT IN2
把两个单字长(16位)有符号整数IN1和IN2相
原 理
减结果送到输出端OUT指定的存储单元中去, 输出结果为16位
加法指令 整数加法指令的梯形图表示
指令标识符ADD_I
使能输入端EN
ADD_I EN ENO
IN1 OUT IN2
构 使能输出端ENO 成 源操作数IN1
源操作数IN2
目的操作数地址OUT
BUCT
可编程控制器原理及应用
整数加法指令的语句表表示
操作码+I
构 成
源操作数IN1
源操作数IN2
+I IN1,OUT
SM0.0 4000 , VW0 +6000,VW4 VW0,VW4
1 4000 +4000 +6000 +6000 +4000 +2000
可编程控制器原理及应用
整数乘法指令

汇编 算术运算指令

汇编 算术运算指令

4
如: 将22000H和23000H开始的4个字节相加,和送存24000H开始的 单元。(高位对应高地址,低位对应低地址)
MOV MOV MOV MOV MOV MOV MOV ADD MOV MOV ADC MOV MOV ADC MOV AX,2000H ;置段地址 DS,AX ES,AX SI,2000H ;置被加数首址 DI,3000H ;置加数首址 BX,4000H ;置和首址 AX,[SI] ;取被加数低16位 AX,[DI] ;低16位部分和 [BX],AX ;存低16位部分和 AX,[SI+2];高16位计算 AX,[DI+2] [BX+2],AX AX,0 ;取高位进位 AX,0 [BX+4],AX
10
例:双精度数的减法
DX= 0012H
AX= 0F365H
BX= 0005H
CX= 0E024H
指令序列 (1) SUB AX,CX
(2) SBB DX, BX
(1) 执行后,
AX=1341H
CF=0 OF=0
SF=0 ZF=0
(2) 执行后,
DX= 0006H
CF=0 OF=0
SF=0 ZF=0
(AX)为无符号数的1024D,带符号数的+1024D (BL)为无符号数的180D,带符号数的-76D 1、DIV BL 执行后: (AL)=05H=5D 商
(AH)=7CH=124D
2、IDIV BL 执行后: (AL)=0F3H=-13D (AH)=24H=36D
余数

18
例:算术运算综合计算: (V-(X*Y+Z-540))/X,其中X,Y,Z,V均为16位 带符号数,已分别装入X,Y,Z,V存储单元,要求计算上式结果的商存入AX, 余数存入DX。 MOV AX,X IMUL MOV MOV MOV CWD Y CX,AX BX,DX AX,Z

算术运算指令

算术运算指令

长立即数移位后与累加器相减
8 SUB #lk,16,src[,dst] dst=src-#lk<< 16
长立即数左移16位与累加器相减
9 SUB src,[,SHIFT][,dst] dst=dst-src<< SHIFT 目标累加器减去移位后的源累加器
10 SUB src,ASM[,dst]
dst=dst-src<< ASM
2023年10月24日6时32分
DSP原理及应用
12
(4)乘法-累加和乘法-减法指令
操作码 源操作数1 源操作数2 指令格式
MACA
Smem T
MACA Smem[,B] MACA T,src[,dst]
Smem MACAR
T
MACAR Smem[,B] MACAR T,src[,dst]
MACD Smem
20 MASAR T,src [,dst ] 21 SQURA Smem,src
22 SQURS Smem,src
2023年10月24日6时32分
dst=rnd(src-T*A(32-16))
累加器减去T与A高位的乘积 (带舍入)
src=src+Smem*Smem, T=Smem
操作数的平方与累加器相加
[,dst]
dst= src+ T=Smem
Smem*#lk
,
长立即数与操作数相乘加到累 加器
5 MACR Smem , src
src=rnd(src+T*Smem)
操作数与T相乘加到累加器(带舍入)
6
MACR
Xmem ,Ymem ,src[,dst]dTs=tX=mermnd(src+Xmem *Ymem),

加减乘除口诀大全

加减乘除口诀大全

学习好资料
欢迎下载
减法口诀表
1-1=0 2-1=1 2-2=0 3-1=2 3-2=1 3-3=0 4-1=3 4-2=2 4-3=1 4-4=0 5-1=4 5-2=3 5-3=2 5-4=1 5-5=0 6-1=5 6-2=4 6-3=3 6-4=2 6-5=1 6-6=0 7-1=6 7-2=5 7-3=4 7-4=3 7-5=2 7-6=1 7-7=0 8-1=7 8-2=6 8-3=5 8-4=4 8-5=3 8-6=2 8-7=1 8-8=0 9-1=8 9-2=7 9-3=6 9-4=5 9-5=4 9-6=3 9-7=2 9-8=1 9-9=0 10-1=9 10-2=8 10-3=7 10-4=6 10-5=5 10-6=4 10-7=3 10-8=2 10-9=1 10-10=0 11-1=10 11-2=9 11-3=8 11-4=7 11-5=6 11-6=5 11-7=4 11-8=3 11-9=2 11-10=1 11-11=0 12-1=11 12-2=10 12-3=9 12-4=8 12-5=7 12-6=6 12-7=5 12-8=4 12-9=3 12-10=2 12-11=1 12-12=0 13-1=12 13-2=11 13-3=10 13-4=9 13-5=8 13-6=7 13-7=6 13-8=5 13-9=4 13-10=3 13-11=2 13-12=1 13-13=0 14-1=13 14-2=12 14-3=11 14-4=10 14-5=9 14-6=8 14-7=7 14-8=6 14-9=5 14-10=4 14-11=3 14-12=2 14-13=1 14-14=0 15-1=14 15-2=13 15-3=12 15-4=11 15-5=10 15-6=9 15-7=8 15-8=7 15-9=6 15-10=5 15-11=4 15-12=3 15-13=2 15-14=1 15-15=0 16-1=15 16-2=14 16-3=13 16-4=12 16-5=11 16-6=10 16-7=9 16-8=8 16-9=7 16-10=6 16-11=5 16-12=4 16-13=3 16-14=2 16-15=1 16-16=0 17-1=16 17-2=15 17-3=14 17-4=13 17-5=12 17-6=11 17-7=10 17-8=9 17-9=8 17-10=7 17-11=6 17-12=5 17-13=4 17-14=3 17-15=2 17-16=1 17-17=0 18-1=17 18-2=16 18-3=15 18-4=14 18-5=13 18-6=12 18-7=11 18-8=10 18-9=9 18-10=8 18-11=7 18-12=6 18-13=5 18-14=4 18-15=3 18-16=2 18-17=1 18-18=0

汇编运算类指令

汇编运算类指令

算术运算类指令用来执行二进制及十进制的算术运算:加减乘除。

这类指令会根据运算结果影响状态标志,有时要利用某些标志才能得到正确的结果。

一、加法指令1、加法指令ADDADD reg,imm/reg/mem ;reg←reg+imm/reg/memADD mem,imm/reg ;mem←mem+imm/regADD指令按照状态标志的定义相应的设置这些标志的0或1状态。

2、带进位标志加法指令ADCADC reg,imm/reg/mem ;reg←reg+imm/reg/mem+CFADC me m,imm/reg ;mem←mem+imm/reg+CFADC指令除完成ADD加法指令运算外,还要加进位CF。

3、增量指令INCINC reg/mem ;reg/mem←reg/mem+1INC指令对操作数加1(增量)。

它是一个单操作数指令。

设计加1指令和后面介绍的减1指令的目的,主要是用于对计数器和地址指针的调整,所以他们不影响进位CF标志,对其他标志位的影响与ADD,ADC相同。

二、减法指令1、减法指令SUBSUB reg,imm/reg/mem ;reg←reg-imm/reg/memSUB mem,imm/reg ;mem←mem/reg2、带借位减法指令SBBSBB reg,imm/reg/mem ;reg←reg-imm/reg/mem-CFSBB mem,imm/reg ;mem←mem-imm/reg-CF3、减量指令DECDEC reg/mem ;reg/mem←reg/mem-1同样不影响CF标志。

4、求补指令NEGNEG reg/mem ;reg/mem←0-reg/memNEG指令也是一个单操作数指令,它对操作数执行求补运算,即用零减去操作数,然后结果返回操作数。

求补运算也可以表达成:将操作数按位求反后加1。

5、比较指令CMPCMP reg,imm/reg/mem ;reg-imm/reg/memCMP mem,imm/reg ;mem-imm/reg该指令将目的操作数减去源操作数,但结果不回送目的操作数。

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

第三章80486微处理器指令系统㈠教学目标介绍80486的寻址方式及指令系统。

㈡学习要求通过本章的学习,要求熟悉各种寻址方式的使用场合以及常用指令的使用方法。

㈢讲授内容指令指令是规定计算机进行某种操作的命令二进制代码形式的指令中应包含三方面的信息:执行什么操作操作数的位置结果存放的位置指令的一般格式[标号:]操作助记符[操作数],[操作数];[注释]3.180486微处理器的寻址方式寻找操作数所在地址的方法即为寻址方式(Addressing Mode)。

80X86的寻址方式可分为两类:1.操作数的寻址方式2.转移地址的寻址方式一、操作数寻址方式由于操作数作为指令的操作对象,可以存储在存储器中(称为存储器操作数)、存储在寄存器中(称为寄存器操作数)或直接包含在指令中(称为立即数),因此,与之对应有多种寻址方式。

80X86可粗略地划分为3类10种寻址方式,其中,访问存储器操作数有8种寻址方式。

(1)一、立即寻址操作数作为立即数直接存在指令中。

例:MOV AX, 1234HMOV BL, 0A7HMOV ECX, 12345678H以第一条指令为例的立即数寻址方式的执立即寻址示意图行过程如图。

机器码在内存单元中是由上至下按从低到高的地址顺序排列,即存放数据的特征是低前高后。

汇编语言规定立即数的表示方式:P54(2)二、寄存器寻址操作数存放在CPU某个8位、16位或32位寄存器中。

例:MOV EAX, EDXADD CL, 2该寻址方式指令码短,且无需从存储器取操作数,故执行速度快。

注意:指令中的DS不能省略。

为什么?(4)(三.2)寄存器间接寻址操作数所在存储单元的EA由规定的寄存器给出。

MOV SI,1000HMOV AX,[SI]16位寻址时,EA可以由SI,DI,BP或BX提供。

(其中BX、BP为基址寄存器,SI、DI为变址寄存器)若以SI,DI,BX间接寻址,则默认操作数在DS段中。

若以BP间接寻址,则默认操作数在SS段中。

例:MOV BL,[SI]; MOV AX,[SI];设(DS)=4200H,(SI)=5000H,且有存储器内容如图:求BL、AX。

答:物理地址=42000H+5000H=47000H当取一个字节时:BL=25H当取两个字节时:根据高前低后原则,AH=35H,AL=25H AX=3525H如果操作数不在上述规定的默认段,而在其他的段中,则必须在相应的操作数前加上段超越前缀。

例如:MOV AX,ES:[SI]MOV AX,DS:[BP]例:设(SS)=3000H,(DS)=3500H,(BP)=1340H,则以下该指令执行后,将哪个地址指向的单元的内容送给CH 和CL?MOV CH,[BP] MOV CL,DS:[BP] 地址为:31340H 地址为:36340H32位寻址时,8个32位通用寄存器均可作间址寄存器。

除ESP,EBP默认段寄存器为SS外,其余6个通用寄存器均默认段寄存器为DS。

MOV EDX,[EBX]此时默认段为DSMOV EAX,[ESP]此时默认段为SS当CPU工作在实地址模式的时候,段长度最大为64KB,不论采用16位寄存器寻址还是32为寄存器寻址都必须保证CPU 算出的EA不超过0FFFFH。

如下在实地址模式下,以下两个例子均为错误,为什么?MOV ESI,10000H MOV AL,[ESI]MOV DI,0FFFFH MOV AX,[DI];ESI中有EA大于FFFFH;[DI]寻址是双字节数,高字节EA为10000H(6)(三.4)基址变址寻址方式(由基址寄存器决定默认段寄存器)操作数所在内存单元EA=基址寄存器+ 变址寄存器(BX、BP)(DI、SI)如:MOV DX, [BX+SI]; MOV DX, [BP+DI];(7)(三.5)相对基址变址寻址方式操作数所在内存单元EA=基址寄存器+ 变址寄存器+ 常量如:MOV DX, [BX+SI+15H]32位寻址时,除ESP外的32位通用寄存器均可作间接寻址寄存器。

除EBP默认段寄存器为SS外,其余6个通用寄存器均默认段寄存器为DS。

以下3种寻址方式只适合于32位寻址(16位无比例因子)。

(8)(三.6)比例变址寻址方式MOV DX, [变址寄存器*比例因子+位移量]比例因子可以是1、2、4、8中的任一个数。

例:把双字数组COUNT(此时用COUNT代表该数组在数据段中数组的首地址)中的元素3送到EDX。

设有MOV EDI,3,求语句。

可得:MOV EDX,[COUNT+EDI*4]因此:MOV EDX,[EDI*4+COUNT]或MOV EDX, COUNT[EDI*4]只适合于32位寻址:(9)(三.7)基址比例变址寻址方式MOV DX, [基址寄存器+变址寄存器*比例因子](10)(三.8)相对基址比例变址寻址方式MOV DX, [基址寄存器+变址寄存器*比例因子+位移量]•例3-8假定80486工作在实模式下,请分别指出下列指令中两个操作数的寻址方式;如果是存储器操作数,请用表达式分别表示出对应的有效地址和物理地址。

•①MOV DI,3600H•②MOV[BP],BL•③MOV CX,[BP+DI]•④MOV DIS2[SI],EDX •⑤MOV CH,DIS3[BX+SI]•⑥MOV AX,ES:[BX]物理地址=(SS)×16+(BP)物理地址=(SS)×16+(BP)+(DI)物理地址=(DS)×16+(SI)+DIS2物理地址=(DS)×16+(BX)+(SI)+DIS3物理地址=(ES)×16+(BX)第4章汇编语言程序设计P100汇编语言的主要特点优势:程序员可直接使用存储器、寄存器、输入输出端口等,使其实时性能好、效率高、节省内存、运行速度快。

缺点:程序与所要解决问题的数学模型之间的关系不直观,编程难度增大。

且在不同机器间的可移植性较差。

适用场合:对内存容量和速度要求较高的编程场合,如系统软件、实时控制软件、I/O接口驱动程序等设计中,也可以被高级语言所嵌用,在用高级语言编写的程序中,常可见到汇编语言的程序段。

第一节汇编语言指令指令是构成程序的基本单位,按其作用与编译情况分为:指令性语句(即符号指令)、指示性语句(即伪指令)和宏指令语句。

指令性语句是可执行语句,与机器指令相对应,它命令CPU进行某种操作,其功能由硬件(CPU)完成。

指示性语句(伪指令语句)是说明性语句,无对应的机器指令,它仅为汇编程序提供编译信息,为链接程序提供链接信息,其功能是由相应的软件完成。

宏指令语句由指令性语句和指示性语句构成,它属于用户自定义的新指令,其主要作用是替代源程序中具有独立功能的程序段,汇编时产生对应的目标代码,其功能由硬件(CPU)完成。

一、汇编语言的基本语法1.语句的一般格式指令性语句的一般格式为:[标识符:] 操作符[操作数] [;注释]伪指令语句的一般格式为:[标识符] 操作符[操作数] [;注释]标示符:分为标号和名字两种。

标号只能在代码段中,后面跟着冒号。

它是某条指令所存放单元的符号化地址。

操作符:专门用于指令性语句的操作性质(也叫助记符)和伪指令语句的伪操作功能(也叫定义符)。

操作数注释:一定要以分号“;”开始。

2.常量与变量(1).标号和变量名标号和变量名都是用来表示本语句的符号地址在程序执行过程中其值可以被改变的量称为变量。

使用某变量前,必须给它定义一个名字,即变量名。

变量名是存储器中一个数据或数据区的符号名称,与标号不同,变量名后不跟冒号,通常被定义在数据段、附加段或堆栈段,代表内存操作数的存储地址,或者说变量名就代表了某个存储单元。

过程中标号和变量均有3种属性,分别为:①段属性:即标号或变量所在段的段基址,利用SEG运算符可以得到。

②偏移属性:即相对于段首地址之间的地址偏移量,利用OFFSET运算符可以得到。

③类型属性标号的类型属性有FAR和NEAR两种。

在引用该标号时才可能会加上类型属性。

变量的类型属性是指变量对应数据区中数据项的存取长度。

如BYTE(1个字节)、WORD(2个字节)、DWORD(4个字节)等。

汇编语言规定:读写内存操作数时,其源操作数与目标操作数类型必须一致。

变量的类型可以用PTR运算符做临时性的修改。

(2).常量在程序的执行过程中,其值始终保持不变的量即为常量。

常量有立即数、字符串常数和符号常数三种形式。

立即数:立即数可以是二、八、十、十六进制数。

立即数的数制用后缀表示,后缀B表示二进制数,Q表示八进制数,D(或者缺省)表示十进制数,H表示十六进制数。

十六进制数中若以A~F开头则必须在前面加上0。

字符串常数:由单引号或双引号引起来的一个或多个字符称为字符串常数,经过汇编后,引号中的每个字符被转化成相应的ASCII码(如‘A1b’经汇编后为41H,31H,62H)依次存放在对应的存储单元中。

符号常数:符号常数用伪指令“EQU”或者“=”定义,不同的是用“EQU”伪指令定义符号常数时,其值在后继语句中不能改变,而用“=”伪指令定义的符号名可以重新定义。

3.运算符汇编语言中所使用的运算符有算术运算符、逻辑运算符、关系运算符以及汇编语言特定的操作符等。

(1)算术运算符P103算术运算符有:+(加)、-(减)、*(乘)、/(除)、MOD(模除)。

其中“模除”的概念是:做除法取其余数。

算术运算符可以用于数字表达式或地址表达式中。

NUM DB 12H,81H...MOV AL,NUM+1;在代码段中执行本条指令后(AL)=81H(2)逻辑与移位运算符逻辑运算符:AND、OR、XOR、NOT移位运算符:SHL、SHR逻辑与移位运算符的功能是在汇编时由汇编程序完成,逻辑与移位指令的功能则是由CPU完成。

MOV BL,NOT 0FFH ;经汇编后的结果为:MOV BL,0AND DX,89H AND 0F0H ;经汇编后的结果为:AND DX,80H(3)关系运算符EQ(等于)、NE(不等于)、GT(大于)、LT(小于)、GE(大于等于)、LE(小于等于)。

功能:将两个操作数进行比较,若关系式成立,所得结果每位均为1,否则每位均为0。

要求两个操作数必须同为数字或是同一段内的两个存储器地址。

MOV AL,2AH EQ 2BH ;经汇编后的结果为:MOV AL,0MOV BX,14H LT 30H ;经汇编后的结果为:MOV BX,0FFFFH (4)分离运算符分离运算符有:HIGH和LOW。

HIGH截取操作数的高8位,LOW截取操作数的低8位。

如:MOV BL, LOW 1234H ;BL=34HMOV AX,HIGH 1234H ;AX=0012H(5)属性操作符①PTR操作符功能:指定或改变变量的类型格式:类型说明符PTR 地址表达式DAT1 DW 1234H ;在数据段中定义DAT1为字型变量…MOV AL,BYTE PTR DAT1 ;指令执行后(AL)=34H若有指令如下:MOV [BX],2INC [SI]是否正确?如何修改?答:不正确。

相关文档
最新文档