计算机指令系统课件_第1页
计算机指令系统课件_第2页
计算机指令系统课件_第3页
计算机指令系统课件_第4页
计算机指令系统课件_第5页
已阅读5页,还剩93页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第三章计算机指令系统

PDF文件使用"pdfFactoryPro"试用版本创建www.fineprint.cn

主要内容

PDF文件使用"pdfFactoryPro"试用版本创建www.fineprint.cn

3-1指令格式

一,汇编语言指令格式

[标号:]操作码操作数1,操作数2[;注释]

换行表示一条指令结束。

例:LOOP:MOVA,#40H;取参数

标号:指令的符号地址MOV__move传送

2.操作码:指明指令功能。XCH__exchange交换

ANL__andlogic与逻辑运算

异或运算

3.操作数:指令操作对象XRL__exc1usiveor

MUL__Multiply乘法

数据、地址、寄存器名及约定符号。

RR__rotateright右循环

4.注释行:说明指令在程序中的作用。

SJMP__shortjump短跳转

操作码和操作数是指令主体。

RET__return子程序返回

微机原理与接口技术

PDF文件使用"pdfFactoryPro"试用版本创建www.fineprint.cn

二,机器语言指令格式

操作码[操作数1][操作数2]

有单字节、双字节和三字节指令。

汇编语言指令中操作码和操作数是指令主体,称为指令可执

行部分,指令表中可查出对应指令代码。

举例:

汇编语言:机器语言:

MOVA,ROE8H111八1八八八

nWi_1__11_J1__11_J1_J_V-/

MOVR6,#32H7E32H01110101

八八11八八1八

UU11UU1U

MOV40H,#100H754064H01000000

01100100

微机原理与接口技术

PDF文件使用"pdfFactoryPro"试用版本创建www.fineprint.cn

3-2指令寻址方式

3-2-1操作数类型

位(b)一位寻址区中的一位二进制数据

字节(B)—8位二进制数据

字(W)—16位双字节数据

3-2-2寻址方式

一立即寻址方式

指令中给出实际操作数据(立即数),一般用于为

寄存器或存储器赋常数初值。

举例:

8位立即数:MOVA,#40H;A—40H

直6位立即数:MOVDPTR,#2100H;DPTR-2100H

PDF文件使用"pdfFactoryPro"试用版本创建www.fineprint.cn

二,直接寻址方式

指令操作数是存储器单元地址,数据在存储器单元

中。MOVA,40H;A—(40H)

例:设存储器两个单元的内容如图所

示,

41H

执行指令后

MOVA,40HA=56H40H

直接寻址方式对数据操作时,地址是固定

值,而地址所指定的单元内容为变量形式。

思考题:直接寻址方式指令和立即寻址方式指令的形

式有什么不同?

微机原理与接口技术

PDF文件使用"pdfFactoryPro"试用版本创建www.fineprint.cn

三寄存器寻址方式

指令操作数为寄存器名,数据在寄存器中。

MOVA,RO;A—RO|01000000目01000000

设指令执行前A=20H,R0=40H,ARO

执行指令后,A=40H,R0=40H

四寄存器间接寻址方式

指令的操作数为寄存器名,寄存器中为数据地址。

存放地址的寄存器称为间址寄存器或数据指针。

例:MOVA,硼0;AHRO)

PDF文件使用"pdfFactoryPro"试用版本创建www.fineprint.cn

五变址间接寻址方式

数据在存储器中,指令给出的寄存器中为数据的

基地址和偏移量。

数据地址=基地址+偏移量。

例:MOVCA,@A+DPTR;A.(A+DPTR)

设指令执行前A=09H,DPTR=2000H,存储器单元内容

如图所不。执行指令后,.寻址区

A=12HHUmo

DPTR=2000H鲫

六.位寻址方式™HllOlDffll

指令给出位地址。一位数据在存储器位寻址

区。

例:MOVC,40H;Cy~(位地址40H)

指令执行前CO,位地址40H存储器单元如

图,执行指令后,Cv二微称原理与接口技主一

PDF文件使用"pdfFactoryPro"试用版本创建www.fineprint.cn

3-3MCS-51指令系统分析

3-3-2算术运算指令

逻楫运笄指令

3-4布尔支置操作指令

转移指令

3-6子程序调用和返回指令

微机原理与接口技术

PDF文件使用"pdfFactoryPro"试用版本创建www.fineprint.cn

3-3-1数据传送指令

实现寄存器、存储器之间的数据传送。

一.内部传送指令:片内数据存储器数据传送。

二.外部传送指令:片外数据存储器数据传送。

三.交换指令:片内数据存储器数据传送。

四.堆栈操作指令:片内数据存储器数据传送。

五.查表指令:程序存储器数据传送。

微机原理与接口技术

PDF文件使用"pdfFactoryPro"试用版本创建www.fineprint.cn

一、内部传送指令:

实现片内数据存储器中数据传送。

指令格式:MOV目的操作数.源操作数

寻址方式:立即寻址、宜接寻址、粤存器寻址、寄存需间址。

关于8位数据内部传送指令的操作数

I累加器A

■存储单元

■工作寄存器(直接寻址)

I工作寄存器(间接寻址)

PDF文件使用"pdfFactoryPro"试用版本创建www.fineprint.cn

1)以累加器为目的操作数的指令

MOVA,Rn;A-Rn,Rn=R0~R7

MOVA,direct;A-(direct),

MOVA,@Ri;A-(Ri),Ri=R0>Rx

MOVA,#data;A—data,

关于助记符:

第一条指令中,刖代表的是工作寄存器R0〜R7。

第二条指令中,di【ect就是指的直接地址。

第三条指令中,Ri代表的是R0和R1,@表示间接寻址。

第四条指令,将立即数data送到A中,#后面是数值。

微机原理与接口技术

PDF文件使用"pdfFactoryPro"试用版本创建www.fineprint.cn

下面我们通过一些例子加以说明:

MOVA,RI;将工作寄存器Ri中的值送入A,RI中的值保持不变。

MOVA,30H;将内存30H单元中的值送入A,30H单元中的值保持不变。

MOVA,@R1;先看RI中是什么值,把这个值作为地址,并将这个地址单元中

的值送入A中。如执行命令前R1中的值为20H,则是将20H单元中的值送入A中。

MOVA,#34H;将立即数34H送入A中,执行完本条指令后,A中的值是34H。

微机原理与接口技术

PDF文件使用"pdfFactoryPro"试用版本创建www.fineprint.cn

2)以寄存器Rn为目的操作的指令

MOVRn,direel

MOVRn,#data

MOVRn,A

这组指令功能是把源地址单元中的内容送入工作寄存

器,源操作数内容不变。

微机原理与接口技术

PDF文件使用"pdfFactoryPro"试用版本创建www.finepri

(3)以直接地址为目的操作数的指令

例:

MOVdiredRn

5MOV20H,R1

MOVdirect,AMOV20H,A

MOVdirect,@RiMOV20H,30H

MOV20H,硼1

MOVdirect,#data

MOV20H,#34H

MOVdirect,direct2

微机原理与接o技术

PDF文件使用"pdfFactoryPro"试用版本创建www.finepri

(4)以间接地址为目的操作数的指令

MOV@Ri,A

MOV@Ri,direct

MOV@Ri,#data

例:

MOV@R0,A

MOV@RI,20H

MOV@RO,#34H

机原理口术

PDF文件使用"pdfFactoryPro"试用版本创建www.finepri

(5)十六位数的传递指令

MOVDPTR,#data16

8051是一种8位机,这是唯一的一条16位立即数传递指令

,其功能是修一个16位的立即数送入DPTR中去。其中高8

位送入DPH,低8位送入DPL。

例:MOVDPTR,#1234H

执行完了之后DPH中的值为12H,DPL中的值为34H。反之

,如果我们分别向DPH,DPL送数,则结果也一样。

如有下面两条指令:

MOVDPH,#35H

MOVDPL,#12H

配t相当于执行了MOVDPTR,#3512HO

微机原理与手妾口技术一

PDF文件使用"pdfFactoryPro"试用版本创建www.fineprint.cn

例1:顺序执行下列指令序列,求每一步执行结果

MOVA,#30HA=30H

MOV4FH,A(4FH)=30H

MOVRO,#20HR0=20H

MOV@R0,4FH(20H)=30H

MOV21H,20H(21H)=30H

习题L用两种寻址方式实现,将片内RAM60H单元的数

PDF文件使用"pdfFactoryPro"试用版本创建www.finepri

习题2:综合练习:

给出每条指令执行后的结果

MOV23H,#30H(23h)=30h

MOV12H,#34H(12h)=34h

MOVRO,#23H(R0)=23H

MOVR7#22H

5(R7)=22H说明:用括号括

MOVR112H

5(R1)=12H起来代表内容,

MOVA,@R0(A)=30H

如则代表

MOV34H,R1(34H)=34H(23H)

内部RAM23H单元

MOV45H,34H

(45H)=34H中的值,则

MOVDPTR#6712H(DPTR)=6712(A)

5代表累加器A单元

MOV12H5DPHH

MOVR0,DPL(12H)=67H中的值。

MOVA,@R0(R0)=12H

(A)=67H

微机原理与接口技术

PDF文件使用"pdfFactoryPro"试用版本创建www.fineprint.cn

说明:

1.一条指令中不能同时出现两个工作寄存器:

非法指令:MOVRI,R2

MOVR2,@R0

2,间址寄存器只能使用RO、Rio

非法指令:MOVA,@R2

3.SFR区只能直接寻址,不能用寄存器间接寻址。

非法指令:MOVRO,#80H

MOVA,@R0

4.指令表:(指令字节数,机器周期数)

只有指令表中的指令才有对应指令代码,计算机才能

热行。编程时,不能随意创造发明指令。

思考:找出配对指令,实现反向传送。

微和盾理与售口琴汇―工^181与定予

PDF文件使用"pdfFactoryPro"试用版本创建www.finepri

二、外部传送指令

实现片外数据存储器和A累加器之间的数据传送。

指令格式:MOVX目的操作数,源操作数

寻址方式:片外数据存储器用寄存器间址方式J

1.DPTR作16位数据指针,寻址64KB片外RAM空间

MOVXA,@DPTR;A-(DPTR)读数据

MOVX@DPTR,A;(DPTR)-A写数据

2.Ri作8位数据指针,寻址256B片外RAM空间

MOVXA,@Ri;A-(Ri)读数据

MOVX研i,A;(印)一A写数据

微机原理与接口技术

PDF文件使用"pdfFactoryPro"试用版本创建www.fineprint.cn

小结:

1、在51中,与外部存储器RAM打交道的只可以是A累加器

o所有需要送入外部RAM的数据必需要通过A送去,而所有要读入的

外部RAM中的数据也必需通过A读入。

内外部RAM的区别内部RAM间可以直接进行数据的传递,而外部则

不行,比如,要将外部RAM中某一单元(设为0100H单元的数据)送

入另一个单元(设为0200H单元),也必须先将0100H单元中的内容

读入A,然后再送到0200H单元中去。

2、要读或写外部的RAM,当然也必须要知道RAM的地址,在前两条

指令中,地址是被直接放在DPTR中的。而后两条指令,由于印(即

R0或R1)只是一个8位的寄存器,所以只提供低8位地址。因为有时

扩展的外部RAM的数量比较少,少于或等于256个,就只需要提供8

位地址就够了。

3、使用时应当首先将要读或写的地址送入DPTR或Ri中,然后再用

速写命令。

微机原理与接口技术

PDF文件使用"pdfFactoryPro"试用版本创建www.fineprint.cn

例2:实现片外数据存储器数据传(2000H)一(21OOH)。

若(2000H);X

MOVDPTR,#2000H;DPTR=2000H

MOVXA,@DPTR;A=X

MOVDPTR,#2100H;DPTR=2100H

MOVX@DPTR,A;(2100H)=X

^^RAM片外数据存储器不能直接

内容寻址。下列为旧法指令:

DPTR一X

•••MOVXA,2000H

DPTR一2imXMOVX2100H,2000H

思考题:为什么对DPTR的数据传送使用内部传送指令?

微机原理与接口技术

PDF文件使用"pdfFactoryPro"试用版本创建www.fineprint.cn

习题3:将片外RAM0000H单元的数据传送到片内RAM的

66H单元。

MOVDPTR,#0000H

MOVXA,@DPTR

MOV60H,A

习题4:将外部RAM中10OH单元中的内容送入外部RAM中

200H单元中。

MOVDPTR,#0100H

MOVXA,@DPTR

MOVDPTRJ0200H

MOVX@PTR,A

微机原理与接口技术

PDF文件使用"pdfFactoryPro"试用版本创建www.fineprint.cn

三、交换指令

实现片内RAM区的数据双向传

送。片内RAM

地址内容

1.字节交换指令2BH35H

XCHA,Rn;A一刖2AH29H

XCHA,@Ri;A—(Ri)•••

XCHA,direct;A—(n)20H

例:设A二29H,执行指令XCHA,2AH后,

A=38H(2AH)=29H

习题4:将片内RAM60H单元与61H单元的数据交换。

XCH60H,61H一对吗?

PDF文件使用"pdfFactoryPro"试用版本创建www.fineprint.cn

2.半字节交换指令

XCHDA,@Ri;A°〜3T印)o〜3

SWAPA;A4〜7A。〜3

是将A中的值的高、低4位进行交换。

例:(A)二39H,则执行S啪PA之后,A中的值就是93H。

怎么正好是这么前后交换呢?因为这是一个16进制数,每

1个16进位数字代表4个二进位。

注意,如果是这样的:(A)二39,后面没H,执行SWAPA

之后,可不是(A)二93。要将它化成二进制再算:39化为

二进制是10111,也就是0001,01二高4位是0001,低4位

翻1,交换后是01110001,也就是71H,即113

微机原理与接口技术

PDF文件使用"pdfFactoryPro"试用版本创建www.fineprint.cn

书上例题

例3—7已知(A)=56H,(RO)=20H,(20H)=78H,

(10H)=18H,(R4)=8AH;

单独执行指令:

①XCHA,10H

②XCHA,R4

③XCHA,@R0

指令执行后:①(A)=18H,(10H)=56H;

②(A)=8AH,(R4)=56H;

③(A)=78H,(RO)=20H,((RO))=(20H)=56H

例3—8已知(A)=7AH,(R1)=48H,(48H)=0DH;

执行指令:XCHDA,@R1

行后:

=7DH,⑻)=48愎总触上盘8H)=0AH。

PDF文件使用"pdfFactoryPro"试用版本创建www.fineprint.cn

片内RAM

例・:将片内和单

34-3RAM2AH2BH地址内容

元中的单字节BCD码形式的数转换R1-2BH35H

R0一2AH38H

成压缩式BCD码存入20H单元。•••

MOVA,#020H85H

压缩式BCD码

MOVRO,#2AH单字节BCD

千位百位

0000千位

MOVRL#2BH十位个位

0000百位

XCHDA,@R0

0000十位

SWAPA0000个位

XCHDA,@R1

XCHA,20HA|0000W00(Ol

交换片内RAM40H单元和41H单元的低半字节。

微机原理与接口技术

PDF文件使用"pdfFactoryPro"试用版本创建www.fineprint.cn

四、堆栈操作指令

入栈指令:PUSHn;SP--SP+1,(SP尸(n)

出栈指令:POPn;(n尸(SP),SP--SP-1

堆栈操作

PUSHdired

POPdirect

第一条指令称之为推入,就是将direct中的内容送入堆

栈中,第二条指令称之为弹出,就是将堆栈中的内容送

回到direct中。

推入指令的执行过程是,首先将SP中的值加1,然后把

SP中的值当作地址,将direct中的值送进以SP中的值为

地址的RAM单元中。

微机原理与接口技术

PDF文件使用"pdfFactoryPro"试用版本创建www.fineprint.cn

例3—5已知当前(SP)=38H,(10H)=70H;

执行指令:

PUSH10H

指令执行后;(SP)=39H,(10H)=70H,(39H)=70Ho

该指令的执行过程如图3—9所示:

图3-9入栈操作示意图

微机原理与接口技术

PDF文件使用"pdfFactoryPro"试用版本创建www.fineprint.cn

例:(SP)=40H,(40H)=68H,(A)=20H

POPACC

指令执行后;(SP)=3FH,(40H)=68H,(A)=68H

指令的执行过程如图3—10所示:

PDF文件使用"pdfFactoryPro"试用版本创建www.fineprint.cn

1、执行第一条PUSHACC指令是这样的:将SP中的值

例:加1,即变为60H,然后将A中的值送到60H单元中,因

MOVSP,#5FH此执行完本条指令后,内存60H单元的值就是100,

同样,执行PUSHB时,是将SP+1,即变为61H,然后

MOVA,#100将B中的值送入到61H单元中,即执行完本条指令后,

MOVB,#2061H单元中的值变为20。

PUSHACC2、执行过程是:将SP中的值(现在是61H)作为地址

,取61H单元中的数值(现在是20),送到B中,所以

PUSHB执行完本条指令后B中的值是20,然后将SP减1,因此

POPB本条指令执行完后,SP的值变为60H,然后执行POP

ACC,将SP中的值(60H)作为地址,从该地址中取数

POPACC(现在是100),并送到ACC中,所以执行完本条指令

后,ACC中的值是100。

这有什么意义呢?

ACC中的值本来就是100,B中的值本来就是20,是的,在本例中,的确没有意义

:实际工作中,则在PUSHB后往往要执行其他指令,而且这些指令会把A中

B中的值改掉,所以在程序的结束,如果我们要把A和B中的值恢复原值,

那么这些指令就有意义了。微机原理与接口技术

PDF文件使用"pdfFactoryPro"试用版本创建www.fineprint.cn

还有一个问题,

如果不用堆栈,比如说在PUSHACC指令处用MOV60H,A,在PUSHB

处用指令MOV61H,B,然后用MOVA,60H,MOVB,61H来替代两条

POP指令,不是也一样吗?是的,从结果上看是一样的,但是从过

程看是不一样的,PUSH和POP指令都是单字节,单周期指令,而MOV

指令则是双字节,双周期指令。所以一般的计算机上都设有堆栈,

在编写子程序,需要保存数据时,通常也不采用后面的方法,而是

用堆栈的方法来实现。

例:写出以下程序的运行结果

MOV30H,#12

MOV31H,#23结果是30H中的值变为23,而31H中的值则

PUSH30H变为12。也就两者进行了数据交换。从这

PUSH31H个例子可以看出:使用堆枝时,人枝的书

写顺序和出枝的书写顺序必须相反,才能

20P30H保证数据被送回原位,否则就要出错了。

MP31H

微机原理与接口技术

PDF文件使用"pdfFactoryPro"试用版本创建www.fineprint.cn

例:设A=02,B=56H,执行下列指令后,

SP=?,A=?,B=?

SBR:MOVSP,#30H;设栈底

PUSHA

PUSHB

MOVA,#0

MOVB,#01

■■■

POPB

POPA

PDF文件使用"pdfFactoryPro"试用版本创建www.fineprint.cn

五、查表指令

实现从程序存储器读取数据到A累加器,只能使用变

址间接寻址方式。

多用于查常数表程序,可直接求取常数表中的函数

值。

DPTR为基址寄存器

MOVCA,斛+DPTR;A—(A+DPTR)

查表范围为64KB程序存储器任意空间,称为远程

查表指令。

PC为基址寄存器

MOVCA,砌+PC;PC=(PC)+1,AJA+PC)

常数表只能在查表指令后256B范围内。

微机原理与接口技术

PDF文件使用"pdfFactoryPro"试用版本创建www.fineprint.cn

1例:查表法求Y=X20设X(0WXW15)在片内RAM的20H单

元中,要求将查表求Y,存入片内RAM21H单元。

1)ORG1000H

SQU:MOVDPTR,#TAB;确定表首地址(基地址)

MOVA,20H;取X(偏移量

MOVCA,@A+DPTR;查表求Y=X2

MOV21H,A;保存Y

RET;子程序结束

…;其它程序段

ORG3000H;常数表格首地址

TAB:DB00,01,04,09,…,225;平方表

微机原理与接口技术一二个

PDF文件使用"pdfFactoryPro"试用版本创建www.finepr

例:查表法求Y=X2。设X(0WXW15)在片内RAM的20H单

元中,要求将查表求Y,存入片内RAM21H单元。

2)指令地址源程序

ORG1000H;程序起始地址

1000HSQU:MOVA,20H;取X

1002HADDA,#3;修正偏移量

1004HMOVCA,@A+PC;查表求YJ2

1005HMOV21H,A;存结果

1007HRET;子程序结束

1008HTAB:DB00,01,04;平方表

100BHDB09,…,225

蹄题:当0WXW255时,如何用查表法编程求YJ2。

微机原理与接口技术

PDF文件使用"pdfFactoryPro"试用版本创建www.fineprint.cn

习题:找出指令错误并改正:

1.MOVA,#1000H;A-1000H

2.MOVXA,1000H;A=(1000H)片外RAM

3.MOVCA,1000H;A-(1000H)片外ROM

4.MOVX60H,A;片外RAM(60H)-A

5.MOVRO,60H;片内RAM:(61H)-(60H)

MOV61H,研0

6.XCHR1,R2;R1-fR2

7.MOVXDPTR,#2000H;DPTR<-2000H

;8蠢MOVX60H,@DPTR;片内RAM一片外RAM

微机原理与接口技术一片』q

PDF文件使用"pdfFactoryPro"试用版本创建www.fineprint.cn

3-3-2算术运算指令

与数据传送指令不同,多数算术运算指令会影响标志

位的状态,即CPU执行算术运算指令后,根据数据操作

情况自动设置标志位的状态。

状态标志

MCS-51的程序状态字寄存器PSW为标志寄存器。其

格式如下:

cyACFORS1RSOOV—p

微机原理与接口技吟—

PDF文件使用"pdfFactoryPro"试用版本创建www.fineprint.cn

1.标志位(自动段置状态)

1)Cy:进位标志位

保存运算后最高位的进位/借位状态,当有进位/借

位,Cy=1,否则Cy=O。

2)AC:辅助进位标志位

保存低半字节的进位/借位状态,当D3产生进位/借

位,AC=1,否则AC=O。用于十进制调整。

3)0V:3出标志位

OV=Cy7©Cy6,补码运算产生流出0V=1,否则OV=0。

4)P:奇偶标志位

反映累加器A中数据的奇偶性。当1的个数为奇数,

IP=1,否则P=0。

微机原理与接口技术

PDF文件使用"pdfFactoryPro"试用版本创建www.fineprint.cn

2.用户选择位(编程设置状态)

1)F0:用户自定义标志位。RS1RSO工作寄存器

000区

2)RS1>RSO:

011区

工作寄存器区选择位。102区

复位时,PSW=OOH113区

例:复位后,设置使用工作寄存器

2区,其余标志位不变。

解:MOVPSW,#18H

CyACFORS1RSOOV—p

PDF文件使用"pdfFactoryPro"试用版本创建www.fineprint.cn

3-3-2算术运算指令

完成片内RAM和A中数据的加减乘除运算。

一.加减指令

1.加法指令

1)不带进位加法:ADDA,源操作数

•ADDA,#DATA;例:ADDA,#10H

•ADDA,direct例:ADDA,10H

•ADDA,Rn;例:ADDA,R7

•ADDA,@Ri;例:ADDA,@R0

用途:将A中的值与其后面的值相加,最终结果回到A中。

例:MOVA,#30H则执行完本条指令后,A

ADDA,#10H中的值为40H。

微机原理与接口技术

PDF文件使用"pdfFactoryPro"试用版本创建www.fineprint.cn

ADD影响Cy、OV、AC、P

例1:A=3BH,PSW=0,执行指令ADDA,#3BH

求:A=76H,Cy=0,OV=0,AC=1,P=1

PSW=01000001=41H

00111011

+00111011

01110110

2

CyACFORS1RSOOV—P

PDF文件使用"pdfFactoryPro"试用版本创建www.fineprint.cn

加法指令影响PSW中的标志位。

两个字节数相加时:

①如果第7位有进位,则Cy=1,否则Cv=o;

②如果第3位有进位,IAC=1,否则AC=O;

③如果第6位有进位,而第7位无进位或第6位无

进位而第7位有进位(表示有符号数相加结果超出

表丞范围),则0V=1,否则OV=0。若以J7,J6

表示第7,6位的进位,则0V=J7㊉J6。

④相加的和存放在A中,如果结果中“「的个数为

奇数则P=1,否则P=0。

微机原理与接口技术

PDF文件使用"pdfFactoryPro"试用版本创建www.fineprin

书上例题:

例3—11试分析以下指令,写出执行结果,标出各标志位。

①已知(A)=04H,(R1)=OBH;

ADDA,R1;A-(A)+(R1)

解:执行结果如下:(A)=00000100

+(R1)=00001011

00001111

///

000

0©0©0©0©1©1©1©1=0,结果为偶数个1,p=o;

第三位无进位,AC=0;

所以指令执行后,(

;A)=0FH,

J7©J6=0,OV=0(R1)=0BH,AC=0,P=0,OV

第7位无进位,Cy=0o=0,Cy=0©

分析:由Cy,OV可知这两个加数

1由翥作无符号数时,和没有超出范围,

2鲁看作有符号数时,和未溢出。

微机原理与接口技术

PDF文件使用"pdfFactoryPro"试用版本创建www.fineprint.cn

②已知(A)=07H,(R1)=OFBH;

ADDA,R1;A-(A)+(R1)

解:执行结果如1(A)=00000111

+(R1)=11111011

00000010

1/1/1/

结果为奇数个1,P=1;

第3位有进位,AC=1;

J7©J6=0,OV=0;

第7位有进位,Cy=1o

所以指令执行后,(A)=02H,(R1)=0FBH,AC=1

,P=0,OV=0,Cy=1o

由Cy,OV可知这两个数

1看作无符号数时,和超出八位进制数表示范围,

2看作有符号数时,和来溢出与接口技术

PDF文件使用"pdfFactoryPro"试用版本创建www.fineprint.cn

③已知(A)=09H,(R1)=7CH;

ADDA,R1;A-(A)+(R1)

解:执行结果如下;(A)=00001001

+(R1)=01111100

10000101

///

结果为奇数个1,P=1;°11

第3位有进位,AC=1;

J7©J6=1,OV=1;

第7位无进位,Cy=0。

所以指令执行结果为:(A)=85H,(R1)=7CH,AC=1

9OV=1,Cy=0,P=1o

分析:由Cy,OV可知两个加数

断无符号数时,和未超出表示范围;

看作有符号数时,和港史阳——储镇

PDF文件使用"pdfFactoryPro"试用版本创建www.fineprint.cn

④已知(A)=87H,(R1)=0F5H;

ADDA,R1A-(A)+(R1)

解:执行结果如下:

(A)=10000111

+(R1)”二11「11人010。。1

100

0©1©1©1©1©1©0©0=1,结果为奇数个1,P=1;

第3位无进位,AC=0;第7位有进位,Cy=1o

J7©J6=1,OV=1;

所以指令执行结果为:(A)=7CH,(R1)=0F5H,AC=0

,Cy=1,OV=1,P=1o

分析:由Cy,OV可知两个加数

p看作为无符号数时,和超出范围,

骞作为有符号数时,和溢出。

微机原理与接口技术

PDF文件使用"pdfFactoryPro"试用版本创建www.fineprint.cn

产面的题目自行练习

MOV34H,#10H

MOVRO,#13H

MOVA,34H

ADDA,RO

MOVR1,#34H

ADDA,@R1A=16+19=35=23H

A=35+16=51=33H

微机原理与接口技术

PDF文件使用"pdfFactoryPro"试用版本创建www.finepri

练习

设(A)二0C3H/R0)二OAAH,

执行指令ADDA,R0(A)11000011

+(R0)10101010

01101101

/

1

和为6DH

CY=1

OV=1

AC=O

P=1

微机原理与接口技术

PDF文件使用"pdfFactoryPro"试用版本创建www.fineprint.cn

2)带进位加法:

ADDCA,源操作数

ADDCA,Rn

ADDCA,direct

ADDCA,@Ri

ADDCA,#data

用途:

将A中的值和其后面的值相加,并且加上进位位C中的值。

微机原理与接口技术

PDF文件使用"pdfFactoryPro"试用版本创建www.fineprint.cn

ADDC影响Cy、OV、AC、P

例2:A=9AH,R2=E3H,PSW=0,执行指令

ADDCA,R2后求:

A=7DH,Cy=1,0V=19AC=0,P=0,

PSW=1OOOO1OO=84H

10011010

11100011

+0

101111101

2

ACFORS1RSOOVP

微机原理与接口技术

PDF文件使用"pdfFactoryPro"试用版本创建www.fineprint.cn

例3—12设(A)=78H,(30H)=0A4H,Cy=1;

试分析指令:ADDCA,30H;A-(A)+(30H)+Cy

执行情况。

解:执行结果如下:(A)=01111000

(30H)=10100100

+(Cy)=_________________L

0©0©0©1©1©0©1=0,结果为偶数个1,P=0;

第3位无进位,AC=0;

J7©J6=0,OV=0;

第7位有进位,Cy=1。

所以指令执行后:(A)=1DH,(30H)=0A4H,AC=0,

OM,Cy=1,P=Oo

微机原理与接口技术

PDF文件使用"pdfFactoryPro"试用版本创建www.fineprint.cn

为何使用带进位加法?

由于51单片机是一种8位机,所以只能做8位的数学运算

,但8位运算的范围只有0-255,这在实际工作中是不够

的,因此就要进行扩展,一般是将2个8位的数学运算合

起来,成为一个16位的运算,这样,可以表达的数的范

围就可以达到0-65535。

如何合并呢?其实很简单,让我们看一个10进制数的

例子:

PDF文件使用"pdfFactoryPro"试用版本创建www.finepri

例子:66+78o

这两个数相加,平时我们根本不在意过程,但事实上我们

是这样做的:先做6+8(低位),然后再做6+7,这是高位

o做了两次加法。

之所以要分成两次来做,是因为这两个数超过了一位数所

能表达的范围(0-9)o

计算机中做16位加法时同样如此,先做低8位的,

如果两数相加产生了进位,也要做个标记,这个

标记就是进位位C。在进行高位加法是将这个C加

进去。

微机原理与接口技术

PDF文件使用"pdfFactoryPro"试用版本创建www.fineprint.cn

16位加法例子

例:1067H+10A0H,先做67H+A0H707H,而

107H显然超过了OFFH,因此最终保存在A中的

是7,而1则到了PSW中的CY位了,换言之,CY

就相当于是100H。然后再做10H+10H+CY,结果

是21H,所以最终的结果是2107H。

微机原理与接口技术

PDF文件使用"pdfFactoryPro"试用版本创建www.fineprint.cn

带进位加法指令ADDC用于多字节运算

例:设双字节数X存在片内RAM41H、40H单元,Y存在

42H、43H单元,编程求Z二X+Y,并存入片内RAM单元

44H、45H、46Ho

ADDS:MOVA,40H;取被加数低字节片内RAM

地址内容

ADDA,42H5概的1瞒字节

MOV44H,A;保存和的低字节46HZH

MOVA,41H;取被加数高字节45HZM

44HZL

ADDCA,43H施塞瓣翻字节

5I43HYH

MOV45H,A;保存和的高字节42HYL

MOVA,#0彳群章富尊凿罐位41HXH

ADDCA,#040HxL

MOV46H,A

RET*手程朦献

微机原理与接口技术

PDF文件使用"pdfFactoryPro"试用版本创建www.fineprint.cn

BCD调整指令:

DAA;对A中加法结果进行调整

十进制调整指令用于实现压缩的BCD码的加法运算

,该指令的功能是对存放在累加器A中的和进行调

整,变为BCD码。

十进制加法指令:

ADDA,源操作数

DAA

带进位十进制加法指令:

ADDCA,源操作数

DAA

注意:这条指令是必须跟在加法指令之后,

微机原理与接口技术

PDF文件使用"pdfFactoryPro"试用版本创建www.fineprint.cn

例3—17设(A)=78H,(R4)=41H,求执行下列指

令的结果。

ADDA,R4

DAA(A)=01111000

解:+(R4)=01000001

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论