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


推荐相关:

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

单片机指令算术运算类指令资料 - 单片机指令算术运算类指令 ?不带进位位的加法指令 ?带进位位的加法指令 ?带借位的减法指令 ?乘法指令 ?除法指令 ?加1指令 1....

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

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

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

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

单片机指令(四)算术运算类指令.doc

单片机指令(四)算术运算类指令 - 单片机指令(四)算术运算类指令 1. 不带进位位的加法指令 ADD A,#DATA ;例:ADD A,#10H ADD A,direct ;例:ADD A,1...

常见51单片机指令及详解.doc

常见51单片机指令及详解 - 常见 51 单片机指令及详解 数据传递类指令 (1) 以累加器为目的操作数的指令 MOV A,Rn MOV A,direct MOV A,@Ri MOV A,#da...

第八讲 算术运算类指令.doc

第八讲 算术运算类指令 - 此文档是学习单片机技术的必备... 第八讲 算术运算类指令_工学_高等教育_教育专区。此文档是学习单片机技术的必备 第八讲 算术运算类指...

单片机指令_图文.ppt

算术运算类指令(24条) 逻辑运算与循环类指令(24条) 控制转移类指令(17条) 位操作类指令(17条) 第三章 80C51的指令系统 《单片机原理》 3.1 指令格式及常用...

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

单片机指令(自己整理的) - 单片机指令 单片机指令分为 5 类: 数据传送类 算术运算类 逻辑运算及移位类 控制转移类 位操作类 数据传送类指令:(29) 1、 内部 ...

单片机指令_图文.ppt

单片机指令 - 指令系统 1 2 3 4 5 3-2 数据传送类指令 数据传送操作是指把数据从源地址传送到目的 地址,源地址内容不变。 片内数据存储器传送指令MOV; 片...

内容一 51单片机汇编指令_图文.ppt

51单片机指令指令的功能,51指令系统可分为下列5类: 1)数据传送类指令(29条) 2)算术运算类指令(24条) 3)逻辑运算及移位类指令(24条) 4)位操作类指令(17...

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

单片机原理与应用》教学课件 二、算术运算类指令(6种/24条) 算术运算类指令( /24条加法运算: 加法运算: 带进位加法运算: 带进位加法运算: 带借位减法运算: ...

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

算术运算类指令主要内容: 1、PSW寄存器功能说明 2、加、减、乘、除算术运算指令 (8位无符号二进制数的算术运算) 3、算术运算指令对PSW寄存器的影响 《单片机原理...

单片机指令系统_图文.ppt

第3章 MCS-51单片机指令系统 3.1 MCS-51单片机指令系统简介 3.2 MCS-51...分为以下五类: (1) 数据传送类指令(29条) (2) 算术运算类指令(24条) (...

单片机原理_图文.ppt

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

MCS-51单片机汇编指令详解.doc

MCS-51 单片机汇编指令详解以累加器为目的操作数的指令 MOV A,Rn MOV A,...算术运算类指令 1.不带进位位的加法指令 ADD A,#DATA ;例:ADD A,#10H ...

002-单片机指令系统_图文.ppt

002-单片机指令系统 - 第2章 MCS-51单片机指令系统 §2.1 指令系统简介 MCS-51 的指令系统共有 111 条指令,按其 功能可分为五大类: ? 数据传送类指令(28...

单片机第三章(2)_图文.ppt

单片机第三章(2) - MCS-51单片机指令系统 数据传送类指令: 算术运算类指令: 逻辑运算及移位类指令: 控制转移类指令: (29条) (24条) (24条) (17条) ...

单片机指令系统第三讲_图文.ppt

单片机指令系统第三讲 - 第章 MCS 寻址方式 Single Chip Microcomputer 本章内容 数据传送类指令 算术运算类指令 逻辑操作类指令 控制转移类指令 位操作指令 ...

51单片机汇编指令表1.doc

51单片机汇编指令表1 - 助记符 指令说明 (数据传递类指令) 字节数 周期数

单片机第3章 指令系统.._图文.ppt

单片机第3章 指令系统.. - 第3章 AT89S51的指令系统 3.1指令格式 3.2寻址方式 3.3数据传送类指令(29条) 3.4算术运算类指令(24条) 3.5逻辑运算与循环类...

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