单片机——算术运算类指令ppt课件_第1页
单片机——算术运算类指令ppt课件_第2页
单片机——算术运算类指令ppt课件_第3页
单片机——算术运算类指令ppt课件_第4页
单片机——算术运算类指令ppt课件_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

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

文档简介

1、2 算术运算类指令(24条) Arithmetic Operations,主要对8位无符号数;也可用于带符号数运算。 包括:加、减、乘、除、加1、减1运算指令 影响PSW有关位。,1,算术运算类指令(6种/24条),加法运算: (ADD4条) 带进位加法运算: (ADDC4条) 带借位减法运算: (SUBB4条) 加1/减1操作: (INC,DEC9条) 单字节乘/除法运算: (MUL,DIV2条) 十进制调整: (DA A1条),2,加法运算: (ADD4条) 带进位加法运算: (ADDC4条) 带借位减法运算: (SUBB4条),所有的加法(ADD)、带进位加法(ADDC)、带借位减法(S

2、UBB)运算都是以 A为一个加数或被减数,最终结果也存进 A 。,加法(ADD)、带进位加法(ADDC) 以及带借位减法(SUBB)运算中,如果产生了进位或借位,将自动对PSW中的Cy标志位置“1” 。,带进位加法(ADDC):(A)(A)+(Cy)+(第二操作数)带借位减法(SUBB):(A)(A)-(Cy)-(第二操作数),3,ADD A,#data ; AdataA ADD A,direct ; A(direct )A ADD A,Rn ; ARnA ADD A,Ri ; A(Ri)A 用途:将A中的值与源操作数所指内容相加,最终结果 存在A中。,1.不带进位位的加法指令(4条),加法指

3、令,4,例:设(A)=49H,(R0)=6BH 执行: ADD A,R0 结果:CY=?,AC=?,P=?,OV=?, (A)=?,CY=0,AC=1,P=0,OV=1, (A)=B4H,5,2.带进位位的加法指令(4条),ADDC A,Rn; ARnCYA ADDC A,direct; A(direct )CYA ADDC A,Ri ; A(Ri)CYA ADDC A,#data; AdataCYA 用途:将A中的值和其后面的值以及进位位C中的值相加,最终结果存在A,常用于多字节数运算中。,6,说明:由于51单片机是一种8位机,所以只能做8位的数学运算,但8位运算的范围只有0255,这在实际

4、工作中是不够的,因此就要进行扩展,一般是将2个8位(两字节)的数学运算合起来,成为一个16位的运算,这样,可以表达的数的范围就可以达到065535。,7,例:,先做67H+A0H=107H,而107H显然超过了0FFH,因此最终保存在A中的是07H,而1则到了PSW中的CY位了。换言之,CY就相当于是100H。 然后再做10H + 30H + CY,结果是41H,所以最终的结果是4107H。,1067H+30A0H,0001 0000 0110 0111,0011 0000 1010 0000,0100 0001 0000 0111,1067H,30A0H,4107H,8,例:设1067H存在

5、R1R0中, 3020H存在R3R2中,计算R1R0+R3R2,结果存在R5R4中。,MOV A,R0 ADD A,R2 ;R0+R2A和CY MOV R4,A MOV A,R1 ADDC A,R3 ;R1+R3+CYA和CY MOV R5,A,9,又例:,先做67H+20H=87H,没有超过0FFH,因此最终保存在A中的是87H,而PSW中的CY=0。 然后再做10H + 30H + CY,结果是40H,所以最终的结果是4087H。,1067H+3020H,0001 0000 0110 0111,0011 0000 0010 0000,0100 0000 1000 0111,1067H,30

6、20H,4087H,10,DA A 在进行BCD码加法运算时,跟在ADD和ADDC指令之后,用于对累加器A中刚进行的两个BCD码的加法的结果进行十进制调整。 例:A=0001 0101BCD(代表十进制数15) ADD A,#8,3. 十进制调整指令(1条),; A=1DH,按二进制规律加,; A=23H,按十进制规律加,DA A,11,调整要完成的任务是:,(1)当累加器A中的低4位数出现了非BCD码(10101111)或低4位产生进位(AC=1),则应在低4位加6调整,以产生低4位正确的BCD结果。,(2)当累加器A中的高4位数出现了非BCD码(10101111)或高4位产生进位(CY=1

7、),则应在高4位加6调整,以产生高4位正确的BCD结果。 十进制调整指令执行后,PSW中的CY表示结果的百位值。,12,例 若(A)0101 0110B,表示的BCD码为56,(R3)0110 0111B,表示的BCD码为67,(CY)0。执行以下指令: ADD A,R2 DA A 由于(A)0010 0011B,即23,且(CY)1,即,结果为BCD数123。 应该注意,DA指令不能对减法进行十进制调整。,13,减法指令(8条),SUBB A,Rn ; ARnCYA SUBB A,direct ; A(direct )CYA SUBB A,Ri ; A(Ri)CYA SUBB A,#data

8、 ; AdataCYA 将A中的值减去源操作数所指内容以及进位位C中的 值,最终结果存在A中。,1. 带借位的减法指令(4条),14,例: SUBB A,R2 设: A=C9H,R2=55H,CY=1, 执行指令之后,A中的值为73H。,15,说明:没有不带借位的减法指令,如果需要做不带位的减法指令(在做第一次相减时),只要将CY清零即可。 对带符号数,要注意OV标志。OV=1,出错。,16,例:设(A)=52H, (R0)=B4H 执行指令: CLR C SUBB A, R0 结果为:,(A)=?, CY=?, AC=?, OV=?, P=?,(A)=9EH, CY=1, AC=1, OV=

9、1, P=1,17,加1/减1操作: (INC,DEC9条) INC, DEC与用加/减法指令做加1/减1 操作不同之处在于INC、DEC不影响标志位(CY、OV、AC).只有涉及累加器A的指令INC A、DEC A才影响奇偶标志P。,18,单字节乘/除运算: (MUL,DIV2条) 两个单字节数的乘/除法运算只在A与B之间进行。 MUL AB: (A)与(B)相乘, 积为16位数, (B)积的高8位; (A)积的低8位 DIV AB: (A)除以(B),结果用2字节表示, (A)商的整数部分;(B)余数,19,乘法指令执行后,进位标志CY总是清零,即CY=0,除法指令执行后,进位标志CY和溢

10、出标志OV均被清零。若除数B中的内容为0时,除法运算没有意义,结果为不定值,此时溢出标志OV被置为1,即OV=1,而CY仍为0.,20,1、写出下列程序的运行结果。 MOV SP,# 40H MOV 42H,#85H MOV 55H,#37H PUSH 42H PUSH 55H POP 42H POP 55H (SP)=? (42H)= ? (55H)= ?,练习题,21,2、执行下面程序段后,片内RAM 30H和片外RAM 30H单元的值是: MOV 30H, #30 MOV R1, #30H MOV A, #03H MOVX R1, A XCH A, R1 MOVX R1, A,内部RAM

11、(30H)=?;外部RAM(30H)=?,22,3、判断题 下面指令是否正确,并将错误指令改正之。 MOV #30H , A MOV DPTR , A DA R1 DIV A , R0 MOV 30H , 40H PUSH #30H,23,5 逻辑运算类指令(24条),主要用于对2个操作数按位进行逻辑操作,结果送到 A或直接寻址单元。 主要操作 与、或、异或、移位、取反、清零等。 对标志位的影响 除了目的操作数为ACC的指令影响奇偶标志P外,一般不影响标志位。,Logic Operations,24,逻辑运算指令的常见用法,逻辑与ANL用于清0或者保留某些位: 例: ANL A, #0FH;

12、则(A) = 0AH,( 已知累加器A中已存有数:9AH ),逻辑或ORL用于置1或者保留某些位: 例: ORL A, #0FH; 则(A) = 9FH,逻辑异或XRL用于取反或者保留某些位: 例: XRL A, #0FH; 则(A) = 95H,25,1 逻辑或指令(6条),ORL A,Rn ;ARnA ORL A,direct ;A(direct)A ORL A,Ri ;A(Ri)A ORL A,#data;AdataA ORL direct,A;(direct)A(direct) ORL direct,#data ;(direct)data(direct),后两条指令,若直接地址为I/O

13、端口,则为“读改写”操作。,OR Logic Instruction,26,例:71H和56H相或: 01110001 (71H) ) 01010110 (56H),01110111 即77H,27,2 逻辑与指令 (6条),ANL A,Rn ;ARnA ANL A,direct ;A(direct)A ANL A,Ri ;A(Ri)A ANL A,#data ;AdataA ANL direct,A ;(direct)A(direct) ANL direct,#data ;(direct)data(direct),后两条指令,若直接地址为I/O端口,则为 “读改写”操作。,ANd Logic

14、 Instruction,28,例:71H和56H相与: 01110001 (71H) )01010110 (56H),01010000 即50H,29,3 逻辑异或指令(6条),XRL A,Rn ;A RnA XRL A,direct ;A (direct)A XRL A,Ri ;A (Ri)A XRL A,#data ;A dataA XRL direct,A ;(direct) A(direct) XRL direct,#data ;(direct) data(direct),后两条指令,若直接地址为I/O端口,则为“读改写”操作。,eXclusive-oR Logic Instruct

15、ion,30,例:71H和56H相异或: 01110001 (71H) ) 01010110 (56H),00100111 即27H,31,4 清0与取反指令(2条),取反:CPL A ;/AA 例:若A=5CH,执行CPL A 结果:A=A3H,清0:CLR A ;0A,ComPlement Logic Operation,32,5 循环移位指令(4条),RL A RR A RLC A RRC A,后两条指令,影响P标志和CY。,Rotate Logic instruction,33,例:,若A=5CH,CY=1,执行RLC A后,,对RLC、RRC指令,在CY=0时 RLC相当于乘以2 RRC相当于除以2,结果:A=B9H,CY=0,P=1,34,例:按要求编程,完成下列各题: 1)选通工作寄存器组中0区为工作区。 2)利用移位指令实现累加器A的内容乘6。 3)将ACC的低4位送P1口的低4位,P1口的高4位不变。,1)ANL PSW,#11100111B ;PSW的D4、D3位为00,2)CLR C RLC A ;左移一位,相当于乘2 MOV R0,A CLR C RLC A ;再乘2,即乘4 ADD A,R0;乘

温馨提示

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

评论

0/150

提交评论