tceic.com
学霸学习网 这下你爽了
相关标签
当前位置:首页 >> 信息与通信 >>

单片机 算术运算类 指令


第六课
复习 3.4 MCS-51指令系统的分类介绍
3.4.2 算术运算类指令

3.4.3 逻辑运算类指令

3.4

MCS-51指令系统分类介绍

3.4.2 算术运算类指令(24条)
算术运算指令可以完成加、减、乘、除及加加1和减1等 运算。这类指令多数以A为源操作数之一,同时又使A为目 的操作数。 1 .不带进位加法指令(4条) 2 .带进位加法指令(4条) 3 .带借位减法指令(4条) 4 . 乘法指令(1条) 5. 除法指令(1条) 6. 加1指令(5条) 7. 减1指令(4条) 8. 十进制调整指令(1条)

3.4.2

算术运算类指令(24条)

?

标志位的作 用

进位(借位)标志CY为无符号整数的多字节加法、 减法、移位等操作提供了方便; 溢出标志OV可方便的控制补码运算; 辅助进位标志AC用于BCD码运算。 算术运算操作将影响PSW中的OV、CY、AC和P等。

3.4.2
? ? ? ADD A,? ? ? ? Rn

算术运算类指令(24条)
;A ? A) Rn) ( ? ( ;A ? A) direct) ( ? ( ;A ? A) ( ? Ri)) (( ;A ? A) data ( ?

1. 加法指令(不带进位加)
direct @Ri #data

CY:和的D7位有进位时,(CY)=1;否则,(CY)=0。 AC:和的D3位有进位时,(AC)=1;否则,(AC)=0。 OV:和的D7、D6位只有一个有进位时,(OV)=1;溢出表 示运算的结果超出了数值所允许的范围。如:两个正数相加 结果为负数或两个负数相加结果为正数时属于错误结果,此 时(OV)=1。 P:累加器ACC中“1”的个数为奇数时,(P)=1;为偶数时, (P)=0。

3.4.2

算术运算类指令(24条)

例如:

若: (A)=78H , (R0)=64H 执行 ADD A,R0 后,结果及 PSW=? (A) :78H= 01111000 B + (R0) :64H= 01100100 B (A) :DCH= 11011100 B 标志位: CY=0, AC=0, OV=1, 即 PSW=05H 结果: (A)=DCH (R0)=64H

P=1,

3.4.2

算术运算类指令(24条)
;A? A) Rn) CY) ( ? ( ? ( ;A? A) direct) CY) ( ? ( ? ( ;A? A) ( ? Ri)) CY) (( ? ( ;A? A) data ? CY) ( ? (

2.带进位加法指令
? ? ? ADDC A,? ? ? ? Rn direct @Ri #data

指令的功能是把源操作数与累加器A的内容相加再与进 位标志CY的值相加,结果送入目的操作数A中。 加的进位标志CY的值是在该指令执行之前已经存在的进 位标志的值,而不是执行该指令过程中产生的进位 。

3.4.2

算术运算类指令(24条)

例1:设(A)=0C3H,(R0)=0AAH, (CY)=1。 执行指令“ADDC A,R0”后的结果及标志位如何?

解: (A) C3H=1100 0011 : + (CY) : 1=0000 0001 1100 0100 + (R0) AAH=1010 1010 : (A) 6EH=0110 1110 : 标志位:CY=1,OV=1,AC=0, 结果: (A)=6EH, (R0)=0AAH。

3.4.2

算术运算类指令(24条)

例2:编程,将(30H),(31H)单元中的数与(40H)、 (41H) 单元中的数相加,结果存于(30H),(31H)单元中。

解:MOV ADD MOV MOV ADDC MOV

A, 30H A, 40H 30H, A A, 31H A, 41H 31H, A

(31H)(30H) +(41H)(40H)
?

(31H)(30H)

3.4.2

算术运算类指令(24条)

例3:写指令,完成RAM中(30H)、(31H)、(32H) 连加,结果送33H?

用ADD还是用ADDC ?
ABC: MOV ADD ADD MOV RET A, A, A, 33H, 30H 31H 32H A

当几十个数连加时,怎么办?

3.4.2 3.增1指令
? ? ? ? ? ? ? ? ? A Rn direct @ Ri DP TR

算术运算类指令(24条)

;A ? A) 1 ( ? ;Rn ? Rn) 1 ( ? ;direct ? direct ? 1 ( ) ;(Ri) ((Ri)) 1 ? ? ;DP TR ? DP TR) 1 ( ?

INC

指令的功能是把源操作数的内容加 1 ,结果再送回原 单元。这些指令仅 INC A 影响P标志。其余指令都不影响 标志位的状态。

3.4.2

算术运算类指令(24条)

该组指令的操作不影响 PSW。若原单元内容 为 FFH,加 1 后溢出为 00H,也不影响 PSW 标志。

例:比较指令“INC A”和“ADD A,#01H” 的结果。 解: “INC A”指令只将 A 的内容加 1,标志 位没有变化。而“ADD A,#01H”指令不仅 将 A 的内容加 1,还影响标志位变化。

3.4.2

算术运算类指令(24条)

4.十进制调整指令
DA A 指令的功能是对累加器A中刚进行的两个BCD码的加法的 结果进行十进制调整。 两个压缩的BCD码按二进制相加后,必须经过调整方能 得到正确的压缩BCD码的和。
A中一加数 另一加数 要求:BCD码

ADD或ADDC DA A

A中结果一定是BCD 码,实现了十进制 的加法

3.4.2

算术运算类指令(24条)

调整完成的途径是:
(1)当累加器A中的低4位数出现了非BCD码(1010~1111) 或低4位产生进位(AC=1),则应在低4位加6调整,以产 生低4位正确的BCD结果。

(2)当累加器A中的高4位数出现了非BCD码(1010~1111) 或高4位产生进位(CY=1),则应在高4位加6调整,以产生 高4位正确的BCD结果。 十进制调整指令执行后,PSW中的CY表示结果的百位值。

3.4.2

算术运算类指令(24条)

例 若(A)=0101 0110B,表示的BCD码为,(R2) =0110 0111B,表示的BCD码为,(CY)=0。执行以下 指令: ADD A,R2 DA A 由于(A)=0010 0011B,即,且(CY)=1,即

结果为BCD数123。 应该注意,DA指令不能对减法进行十进制调整。

3.4.2

算术运算类指令(24条)

5.带借位减法指令
? ? ? SUBB A,? ? ? ? Rn direct @Ri #data ;A ? A) Rn) CY) ( ? ( ? ( ;A ? A) direct) CY) ( ? ( ? ( ;A ? A) ( ? Ri)) CY) (( ? ( ;A ? A) data ? CY) ( ? (

这组指令的功能是从累加器A中减去源操作数所指出的 CY:差的位7需借位时,(CY)=1;否则,(CY)=0。 数及进位位CY的值,差保留在累加器A中。 AC:差的位3需借位时,(AC)=1;否则,(AC)=0。 由于89C51指令系统中没有不带借位的减法指令,如需 OV:若位6有借位而位7无借位或位7有借位而位6无借位 要的话,可以在“SUBB”指令前用“CLR C”指令将Cy清0, 时,(OV)=1。 这一点必须注意。 如要用此组指令完成不带借位减法,只需先清CY为 0。

3.4.2

算术运算类指令(24条)

例 若(A)=C9H,(R2)=54H,(CY)=1,执行指令 SUBB A,R2 之后,由于:

即:(A)=74H,(CY)=0,(AC)=1, (OV)=1(位6有借位,位7无借位),(P)=0。

3.4.2

算术运算类指令(24条)

6.减1指令
? ? ? ? ? ? ? A Rn direct @Ri ;A ? A) 1 ( ? ;Rn ? Rn ) 1 ( ? ;direct ? direct) 1 ( ? ;( Ri ) (( Ri )) 1 ? ?
1 ,结果再送回

DEC

?这组指令的功能是把操作数的内容减

原单元。 ?这组指令仅 DEC A 影响P标志。其余指令都不影响标 志位的状态。 ?与INC比较,少了一种寻址方式。

3.4.2

算术运算类指令(24条)

关于PSW的自动置位,关于CY、OV的解读:
?

1. 数电中的加法器:





进位

? ? ? ?

2. OV的自动置位 OV=C6⊕C7 当同号相加时,若结果异号,则溢出。报OV=1 当异号相减时,减数与差同号,则溢出。报OV=1

?

当进行无符号运算时,CY有意义。 当进行有符号运算时,OV有意义。 CPU的运算器并不区分是有、无符号运算,它进行 的是补码运算,由编程者自己解读。
有符号数 ALU OV?

有符号数

无符号数
ALU

无符号数
CY?

有符号数 无符号数
CY=0
CY=1 OV=0 OV=1

√ ? √ ×

3.4.2 7.乘法指令 MUL AB

算术运算类指令(24条)

;累加器A与B寄存器相乘

该指令的功能是将累加器A与寄存器B中的无符号8位 二进制数相乘 ,乘积的低8位留在累加器A中,高8位存放 在寄存器B中。 ? 当乘积大于FFH时,溢出标志位(OV)=1。而标志CY总 是被清0。
例 若(A)=50H,(B)=A0H, 执行指令 MUL AB ;(A)=00H,(B)=32H, (OV)=1, (CY)=0。

3.4.2

算术运算类指令(24条)

8.除法指令
DIV AB ;累加器A除以寄存器B

该指令的功能是将累加器A中的无符号8位二进制数除 以寄存器B中的无符号8位二进制数 ,商的整数部分存放在 累加器A中,余数部分存放在寄存器B中。 ? 当除数为0时,则结果的A和B的内容不定,且溢出标志 位(OV)=1。而标志CY总是被清0。

例 若(A)=FBH(251),(B)=12H(18),
执行指令 DIV AB ; (OV)=0,(CY)=0。 (A)=0DH,(B)=11H,

3.4.3 逻辑运算类指令(25条) 3.4.3 逻辑运算类指令(25条)
1.逻辑运算:与、或、异或(18条)

2.累加器清0和取反(2条)
3.累加器循环移位 (5条) 逻辑运算指令可以完成与、或、异或、清0和取反操作, 当以累加器A为目的操作数时,对P标志有影响; 循环指令是对累加器A的循环移位操作,包括左、右方 向以及带与不带进位位等移位方式,移位操作时,带进位的 循环移位对CY和P标志有影响; 累加器清0操作对P标志有影响。

3.4.3 逻辑运算类指令(25条)

3.4.3 逻辑运算类指令(25条)

3.4.3 逻辑运算类指令(25条)
1.逻辑运算:与、或、异或
? A ANL direct , ? ? # data
? ? ? ANL A , ? ? ? ? Rn direct @Ri # data

;direct? direct ? A) ( )( ;direct? direct ? data ( )
;A ? A)(Rn ) ( ? ;A ? A)(direct) ( ? ;A ? A)(( Ri )) ( ? ;A ? A) data ( ?

前2条指令的功能是把源操作数与直接地址指示的 单元内容相与,结果送入直接地址指示的单元。 后4条指令的功能是把源操作数与累加器A的内容相 与,结果送入累加器A中。 例 若(A)=C3H,(R0)=AAH,执行指令 ANL A, R0 之后,(A)=82H。

3.4.3 逻辑运算类指令(25条)
1.逻辑运算:与、或、异或
? A ORL direct , ? ? # data
? ? ? A , ? ? ? ? Rn direct @Ri # data

;direct? direct ? A) ( )( ;direct? direct ? data ( )
;A ? A)(Rn ) ( ? ;A ? A)(direct) ( ? ;A ? A)(( Ri )) ( ? ;A ? A) data ( ?

ORL

前2条指令的功能是把源操作数与直接地址指示的单元 内容相或,结果送入直接地址指示的单元。 后4条指令的功能是把源操作数与累加器A的内容相或, 结果送入累加器A中。
例 若(A)=C3H,(R0)=55H,执行指令ORL A, R0 之后,(A)=D7H。

3.4.3 逻辑运算类指令(25条)
1.逻辑运算:与、或、异或
? A XRL direct , ? ? # data
? ? ? A , ? ? ? ? Rn direct @Ri # data

;direct? direct ? A) ( )( ;direct? direct ? data ( )
;A ? A)(Rn ) ( ? ;A ? A)(direct) ( ? ;A ? A)(( Ri )) ( ? ;A ? A) data ( ?

XRL

前2条指令的功能是把源操作数与直接地址指示的单元内 容异或,结果送入直接地址指示的单元。 后4条指令的功能是把源操作数与累加器A的内容异或,结 果送入累加器A中。 例 若(A)=C3H,(R0)=AAH,执行指令 XRL A, R0 之后,(A)=69H。

3.4.3 逻辑运算类指令(25条)
2.累加器清0和取反

CLR ? ? CPL ?

A

;A ← 0 ;A ← A

这两条指令的功能分别是把累加器A的内容清 0 和取反, 结果仍在A中。数据也只有在A中时,才能进行字节操作的清 零和取反。 例 若(A)=A5H, 执行指令 CLR A 之后,(A)=00H 执行指令 CPL A 之后,(A)=5AH 但: 若 (30H)=A5H, 执行指令 CLR 30H 之后,(30H)≠00H 执行指令 CPL 30H 之后,(30H)≠5AH

3.4.3 逻辑运算类指令(25条)
3.累加器循环移位
? RRC ? ? ? RL ? RLC ? ? RR
SFR

A

所有的移位都是循环 移位。有八位的移位, 也有九位的移位。唯 一的操作数是A.

SFR

SFR

SFR

PSW CY A A7 A0

PSW CY A7 A0 A

PSW CY A A7 A0

PSW CY A7 A0 A

RR A

RRC A

RL A

RLC A

3.4.3 逻辑运算类指令(25条)
SWAP A SWAP指令的功能是累加器 的高低4位互换。 若(A)=30H,执行指令SWAP A后,(A)=03H。

有时“累加器A内容乘2”的任务可以利用指令RLC A方便地完成。 例:若(A)= 06H = 00000110B=06H, (CY)=0。 执行指令RLC A后,(A)= 00001100B = 0CH ,(CY)=0 。 结果为:0CH=2×06H

3.4.3 逻辑运算类指令(25条)

练习: 用移位和加法指令实现R0的内容乘以10,并 把结果送R0。(数据较小,结果仍为一个字节)
ABC: MOV RL MOV RL RL ADD MOV RET A, R0 A B, A A A A, B R0, A

2010-03-25 作业
?

P36 12、16


推荐相关:

第5讲单片机运算指令

单片机24算术运算类指令分... 6页 免费 单片机运算指令 5页 免费 第1讲单片机...标题: 标题: MCS-51 单片机运算指令 教学目标与要求:熟练掌握算术运算及逻辑运算...


单片机指令大全

单片机指令大全- 能简述 一、数据传送类指令 MOV MOV MOV MOV MOV MOV MOV ...算术运算类指令 ADD ADD ADD A, Rn A, @Ri A, direct 累加器加寄存器 ...


8051单片机常用指令

CLR C MOV A,R0 ADD A,R2 DA A MOV R4,A MOV A,R1 ADDC A,R3 DA A MOV R5,A SjMP $在 MCS-51 系列单片机算术运算类指令中, 乘除法指令是...


单片机5

单片机5_电子/电路_工程科技_专业资料。教案首页 课程名称 授课时间 授课班级 授课...算术运算类指令(重点难点) (详细讲解,结合实例进行说明,强调体会汇编语言和高级...


单片机运算指令

单片机运算指令例 1 R0 中有常数 30H,而 30H 地址中有常数 50H 执行 MOV ...第5讲单片机运算指令 6页 免费 单片机24算术运算类指令... 6页 免费 单片机3...


第八讲 算术运算类指令

第三讲 MCS-51单片机结构原... 第六讲 MCS-51指令系统及汇... 第七讲 数据...算术运算类指令算术运算类指令隐藏>> 第八讲 算术运算类指令 教学方法: 教学方...


51单片机算术运算指令

51单片机算术运算指令_信息与通信_工程科技_专业资料。1.程序状态字 PSW . MCS-51有一个程序状态字寄存器 PSW,用来保存指令执行结果的标志,供程序查讯和判 别。...


MCS51单片机汇编指令

MCS51单片机汇编指令_计算机软件及应用_IT/计算机_专业资料。MCS51 单片机汇编指令...(Pop from Stack) 出栈; 二、算术运算类指令(8 种助记符) ADD(Addition) ...


常见51单片机指令及详解

常见51 单片机指令及详解数据传递类指令(1) 以累加器为目的操作数的指令 MOV ...算术运算类指令 1.不带进位位的加法指令 ADD A,#DATA ;例:ADD A,#10H ...


单片机指令(自己整理的)

单片机指令,80C51单片机指令,80C51隐藏>> 单片机指令 单片机指令分为 5 类:数据传送类 算术运算类 逻辑运算及移位类 控制转移类 位操作类 数据传送类指令:(...

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