MCS-51系列单片机的指令系统及汇编语言程序设计.ppt

上传人(卖家):三亚风情 文档编号:3372653 上传时间:2022-08-24 格式:PPT 页数:48 大小:806.02KB
下载 相关 举报
MCS-51系列单片机的指令系统及汇编语言程序设计.ppt_第1页
第1页 / 共48页
MCS-51系列单片机的指令系统及汇编语言程序设计.ppt_第2页
第2页 / 共48页
MCS-51系列单片机的指令系统及汇编语言程序设计.ppt_第3页
第3页 / 共48页
MCS-51系列单片机的指令系统及汇编语言程序设计.ppt_第4页
第4页 / 共48页
MCS-51系列单片机的指令系统及汇编语言程序设计.ppt_第5页
第5页 / 共48页
点击查看更多>>
资源描述

1、主要内容主要内容 寻址方式寻址方式 指令系统指令系统传送与交换指令传送与交换指令算术运算、逻辑运算指令算术运算、逻辑运算指令控制转移指令控制转移指令位操作指令位操作指令 伪指令伪指令 程序设计举例程序设计举例第第3章章 MCS-51系列单片机的指令系统系列单片机的指令系统及汇编语言程序设计及汇编语言程序设计docin/sundae_meng 计算机通过执行程序完成人们指定的任务,计算机通过执行程序完成人们指定的任务,程序由一条一条指令构成,能为程序由一条一条指令构成,能为CPUCPU识别并执行的识别并执行的指令的集合就是该指令的集合就是该CPUCPU的的指令系统指令系统。MCS-51MCS-5

2、1单片机汇编语言单片机汇编语言指令格式指令格式:操作符操作符 目的操作数,源操作数目的操作数,源操作数 操作符指明该指令完成什么操作;操作符指明该指令完成什么操作;操作数是指明该指令的操作对象。操作数是指明该指令的操作对象。指令中操作数提供的方式称为指令中操作数提供的方式称为寻址方式寻址方式。docin/sundae_meng 指令中的常用符号指令中的常用符号Rn:Rn:表示当前工作寄存器表示当前工作寄存器R0R0R7R7中的一个。中的一个。Ri:Ri:代表代表R0R0和和R1R1寄存器中的一个,用作间接寻址寄存器。寄存器中的一个,用作间接寻址寄存器。dir:dir:8 8 位直接字节地址(片

3、内位直接字节地址(片内 RAM RAM 和和 SFR SFR)#data:#data:8 8位立即数,即位立即数,即8 8位常数。可以为位常数。可以为2 2进制(进制(B B)、)、1010进进制、制、1616进制(进制(H H)、)、字符(字符()#data16:#data16:表示表示1616位立即数,即位立即数,即1616位常数,取值范围为位常数,取值范围为:#0000H#0000H#0FFFFH#0FFFFHaddr16:addr16:表示表示1616位地址位地址 addr11:addr11:表示表示1111位地址位地址rel:rel:相对偏移量(为一字节补码)用于相对转移指令中相对偏

4、移量(为一字节补码)用于相对转移指令中bit:bit:位地址,在位地址空间中。位地址,在位地址空间中。$:$:表示当前指令的地址。表示当前指令的地址。docin/sundae_meng 指令中直接给出操作数的寻址方式。在指令中直接给出操作数的寻址方式。在5151系列单片机的指令系统中,立即数用一个系列单片机的指令系统中,立即数用一个前面加前面加“#”#”号的号的8 8位数位数(#data(#data,如,如#30H)#30H)或或1616位数位数(#data16(#data16,如,如#2052H)#2052H)表示。立即寻表示。立即寻址中的数,称为立即数。址中的数,称为立即数。例如指令:例如

5、指令:MOV AMOV A,#58H#58H;58H58H3.1 寻址方式寻址方式3.1.1 立即寻址立即寻址docin/sundae_meng 操作数的地址直接出现在指令中。操作数的地址直接出现在指令中。寻址对象:寻址对象:内部数据存贮器:使用它的地址。内部数据存贮器:使用它的地址。特殊功能寄存器:既可使用它的地址,也可以直接使用特殊功能寄存器:既可使用它的地址,也可以直接使用寄存器名。寄存器名。位地址空间位地址空间 程序存储器空间程序存储器空间 位地址位地址18183.1.2 3.1.2 直接寻址直接寻址docin/sundae_meng操作数存放在寄存器中。操作数存放在寄存器中。寻址对象

6、:寻址对象:A A,B B,C,DPTRC,DPTR,R0R0R7 R7。B B仅在乘除法指令中为寄存器寻址,在其他指仅在乘除法指令中为寄存器寻址,在其他指令中为直接寻址。令中为直接寻址。A A可以寄存器寻址又可以直接寻址,直接寻址可以寄存器寻址又可以直接寻址,直接寻址时写作时写作ACCACC 例如:例如:MOV AMOV A,R0 R0 ;R0AR0A MUL AB MUL AB ;A A*BBABBA ADD A ADD A,ACC ACC;A+AAA+AA3.1.3 3.1.3 寄存器寻址寄存器寻址docin/sundae_meng 操作数存放在以寄存器内容为地址的单元中,用做间址操作数

7、存放在以寄存器内容为地址的单元中,用做间址的寄存器为的寄存器为RiRi(i=0i=0,1 1)、)、DPTRDPTR。对片内的间接寻址用对片内的间接寻址用RiRi(i=0i=0,1 1)如:如:MOV R0MOV R0,#20H#20H MOV R0MOV R0,A A ;A(20H)A(20H)对片外的间接寻址可用对片外的间接寻址可用RiRi(i=0i=0,1 1)或)或DPTRDPTR 如:如:MOVX DPTRMOVX DPTR,A A;AA以以DPTRDPTR的内容为地址的外部的内容为地址的外部RAMRAM中中 MOVX R1,A MOVX R1,A ;AA以以P2 R1P2 R1内容

8、为地址的外部内容为地址的外部RAMRAM中中 PUSHPUSH和和POPPOP指令的源操作数是以指令的源操作数是以SPSP间接寻址间接寻址 注意:寄存器间接寻址不能访问注意:寄存器间接寻址不能访问SFRSFR MOV R1,#81H MOV R1,#81H MOV A,R1 MOV A,R1 ;不能访问;不能访问SPSP,只能用,只能用 MOV A,SPMOV A,SP3.1.4 3.1.4 寄存器间址寄存器间址docin/sundae_meng 变址寻址只能访问程序存储器。操作数所在位置变址寻址只能访问程序存储器。操作数所在位置的地址由的地址由DPTRDPTR或或PCPC寄存器与寄存器与A

9、A的内容相加后形成。其的内容相加后形成。其中累加器中累加器A A内容是可变的。变址寻址只有三条指令。内容是可变的。变址寻址只有三条指令。MOVC A,A+DPTR MOVC A,A+DPTR ;(A+DPTR)A(A+DPTR)A MOVC A,A+PC MOVC A,A+PC ;(A+PC)A(A+PC)A JMP JMP A+DPTR A+DPTR ;A+DPTRPCA+DPTRPC注意:注意:A A的内容是无符号数。的内容是无符号数。PCPC值是指令的当前值是指令的当前PCPC值,即下条指令的值,即下条指令的PCPC值值3.1.5 3.1.5 变址寻址变址寻址docin/sundae_m

10、eng3.1.6 3.1.6 相对寻址相对寻址 变址寻址只能访问程序存储器。相对寻址是将程序计数器变址寻址只能访问程序存储器。相对寻址是将程序计数器PC的当前值与指令第二字节给出的偏移量相加,从而形成转的当前值与指令第二字节给出的偏移量相加,从而形成转移的目标地址。移的目标地址。如:如:JZ 61H注意:注意:相对偏移量是一字节有符号数,用补码表示,偏移范相对偏移量是一字节有符号数,用补码表示,偏移范围是:围是:-128-128+127+127。PCPC值是指令的当前值是指令的当前PCPC值,即下条指令的值,即下条指令的PCPC值。值。源程序中偏移量常用符号地址表示。源程序中偏移量常用符号地址

11、表示。docin/sundae_meng 对可位寻址的位地址寻址。包括片内对可位寻址的位地址寻址。包括片内RAMRAM的位地址空间和可位寻址的的位地址空间和可位寻址的SFRSFR(地址能被(地址能被8 8整整除)除)如:如:MOV CMOV C,20H20H ;位寻址;位寻址 MOV AMOV A,20H20H ;字节寻址;字节寻址 以上两条指令究竟是位寻址还是字节寻址,以上两条指令究竟是位寻址还是字节寻址,根据两操作数类型一致的原则,由另一个操作根据两操作数类型一致的原则,由另一个操作数决定。数决定。3.1.7 3.1.7 位寻址位寻址docin/sundae_meng立即立即寻址寻址直接直

12、接寻址寻址寄存器寄存器寻址寻址寄存器寄存器间接寻址间接寻址变址变址寻址寻址相对相对寻址寻址位寻址位寻址片内片内RAMRAM低低128B128B单元单元工作寄存器工作寄存器组组R0R0R7R7特殊功特殊功能寄存能寄存器器SFRSFRA A、B B、DPTRDPTR、C C程序存储器程序存储器片外片外RAMRAM位地址空间位地址空间寻址方式与存储空间的对应关系寻址方式与存储空间的对应关系 docin/sundae_meng dirRi Rn#dataAMOV A,Rn#data dir RiMOV dir,A Rn,Ri#data dir MOV Ri,A dir#data内部内部RAM、SFR之

13、间的传送之间的传送MOV指令指令MOV Rn,A dir#data3.2 3.2 指令系统指令系统3.2.1 3.2.1 数据传送与交换指令数据传送与交换指令docin/sundae_meng例例 R1=20HR1=20H,(,(20H20H)=55H=55H,MOV AMOV A,R1 R1 执行后,执行后,A=55HA=55H。例例 (40H40H)=30H=30H,MOV R7MOV R7,40H 40H 执行后,执行后,R7=30HR7=30H。例例 MOV R7MOV R7,40H 40H 执行后,执行后,R7=40HR7=40H。注意:注意:寄存器之间无传送;寄存器之间无传送;寄存

14、器间址和寄存器之间无传送;寄存器间址和寄存器之间无传送;立即数不能做目标地址;立即数不能做目标地址;docin/sundae_meng Ri,A DPTR,A A,Ri A,DPTRMOVXMOVCA,A+PCA,A+DPTR2.外部存储器和外部存储器和A累加器之间的传送累加器之间的传送MOVXA 外部数据外部数据存储器存储器程序程序存储器存储器MOVCdocin/sundae_meng 利用利用 MOVX 实现片外数据存储器数据传送实现片外数据存储器数据传送 (2000H)(2100H)MOV DPTR,#2000HMOVX A,DPTRMOV DPTR,#2100HMOVX DPTR,A片

15、外RAM 地址 内容 2000H X DPTR 2100H ;DPTR=2000H;DPTR=2100H ;A X片外RAM 地址 内容 2000H X DPTR 2100H ;(2100H)Xx片外数据存储器不能直接寻址。下列为非法指令:片外数据存储器不能直接寻址。下列为非法指令:MOVX A,2000H MOVX 2100H,2000H docin/sundae_meng 利用利用Ri间址来实现将间址来实现将(2000H)(2100H)(2000H)(2100H)MOV P2,#20H;高位地址;高位地址 MOV R0,#00 ;低位地址;低位地址 MOVX A,R0;读片外;读片外RAM

16、 MOV P2,#21H;改变高位地址;改变高位地址 MOVX R0,A;写片外;写片外RAMdocin/sundae_meng 利用利用 MOVC 指令实现查表功能指令实现查表功能注:注:只能从程序存储器读取数据到只能从程序存储器读取数据到A累加器。累加器。只能使用变址间接寻址方式只能使用变址间接寻址方式1)DPTR为基址寄存器为基址寄存器MOVC A,A+DPTR;A(A+DPTR)查表范围为查表范围为 64KB 程序存储器任意空间。程序存储器任意空间。2)PC为基址寄存器为基址寄存器MOVC A,A+PC;A(A+PC)常数表只能在查表指令后常数表只能在查表指令后 256B 范围内。范围

17、内。docin/sundae_meng例例 查表法求查表法求 Y=X2。设。设 X(0X15)在片内在片内 RAM 20H单单 元,要求将查表求元,要求将查表求 Y,存入片内,存入片内 RAM 21H单元单元1)用)用DPTR作基址寄存器作基址寄存器 ORG 0100HSQU:MOV DPTR,#TAB;确定表首地址;确定表首地址 MOV A,20H ;取;取 X MOVC A,A+DPTR;查表求;查表求 Y=X2 MOV 21H,A ;保存;保存Y RET ;子程序结束;子程序结束 ;其它程序段;其它程序段 ORG 0200H ;常数表格首地址;常数表格首地址TAB:DB 00,01,04

18、,09,225;平方表;平方表docin/sundae_meng 指令地址指令地址 源程序源程序 ORG 0100H;程序起始地址;程序起始地址 0100HSQU:MOV A,20H;取;取X 0102H ADD A,#3;修正偏移量;修正偏移量 0104HMOVC A,A+PC;查表求;查表求Y=X2 0105H MOV 21H,A;存结果;存结果 0107HRET ;子程序结束;子程序结束 0108HTAB:DB 00,01,04;平方表;平方表 010BHDB 09,225 思考题:思考题:当当0X255时,如何用查表法编程求时,如何用查表法编程求Y=X22)用)用PC作基址寄存器作基址

19、寄存器docin/sundae_meng 3.3.交换指令交换指令实现片内实现片内RAMRAM区的数据双向传送区的数据双向传送1 1)字节交换指令字节交换指令XCH AXCH A,Rn Rn ;ARnARn XCH A XCH A,Ri Ri;A(Ri)A(Ri)XCH A XCH A,dir dir;A(dir)A(dir)2 2)半字节交换指令半字节交换指令XCHD AXCHD A,Ri Ri;A A0 03 3(Ri)(Ri)0 03 3 SWAP A SWAP A ;A A4 47 7A A0 03 3 dirRi RnA 4.堆栈操作指令堆栈操作指令 入栈指令:入栈指令:PUSH d

20、ir PUSH dir;SPSP+1SPSP+1,(SP)(dir)(SP)(dir)出栈指令:出栈指令:POP dir POP dir;(dir)(SP)(dir)(SP),SPSP-1SPSP-1 RiA74743030A74 30docin/sundae_meng dirRi Rn#dataA dirRi Rn#dataAA,Rn,Ri#data dirADDADDCSUBBANLORLXRL加加进位加进位加借位减借位减与与或或异或异或1.以以A为目的操作数的算术、逻辑运算指令(为目的操作数的算术、逻辑运算指令(24条)条)3.2.2 3.2.2 算术运算和逻辑运算指令算术运算和逻辑运算

21、指令docin/sundae_meng2.以以dir为目的操作数逻辑运算指令(为目的操作数逻辑运算指令(6条)条)A#data dir与与 ANL或或 ORL异或异或 XRLdir,#dataA3.加加1、减、减1指令指令RiAdirRnDPTRINCRiAdirRnDECdocin/sundae_meng 4.十进制调整指令十进制调整指令 DA A ;仅对存于;仅对存于A中的加法结果进行十进制调整中的加法结果进行十进制调整 若需若需完成十进制完成十进制减法运算,则应变减法运算为减法运算,则应变减法运算为补码的加法运算即可,其减数补码的加法运算即可,其减数X的补码通过的补码通过(99-X)+1

22、再再DA A后得到。后得到。原则:和低原则:和低4位大于位大于9或有半进位,则低或有半进位,则低4位加位加6 和高和高4位大于位大于9或有或有 进位,则高进位,则高4位加位加6例:例:(DATA)-(DATA+1)=(DATA+2)(DATA)-(DATA+1)=(DATA+2)Y-X=Y-X+100 -Y-X=Y-X+100 -有效位为有效位为2 2位十进制,模为位十进制,模为100100 =Y+(99-X)+1 =Y+(99-X)+1docin/sundae_meng5.乘、除法指令乘、除法指令MUL AB;ABBADIV AB;AB商在商在A中,余数在中,余数在B中中6.专对专对A的指令

23、的指令CPL ACLR A;0 A;A AMOV A,#99H DA AMOV A,#99H DA ACLR C ADD A,DATACLR C ADD A,DATASUBB A,DATA+1 DA ASUBB A,DATA+1 DA AADD A,#1 MOV DATA+2,AADD A,#1 MOV DATA+2,Adocin/sundae_mengCYRR ARL ARLC ARRC A移位指令(仅对移位指令(仅对 A)00101101A01001011ACY11001011A000101101A1CY10010110A设设1CYCYdocin/sundae_meng 1.1.调用程序和

24、返回类指令调用程序和返回类指令 1 1)长调用)长调用 LCALL addr16 LCALL addr16;addr16PCaddr16PC0 01515 指令功能同指令功能同80X8680X86中的中的CALLCALL,调用范围,调用范围64KB64KB全部空间,全部空间,指令的机器码为三字节。指令的机器码为三字节。2 2)短调用)短调用 ACALL addr11 ;addr11PCACALL addr11 ;addr11PC0 01010 指令的功能同前,主要区别为:指令的功能同前,主要区别为:addr11PCaddr11PC0 01010,而而PCPC11111515保持原值不变,故其调

25、用范保持原值不变,故其调用范围为围为2KB2KB,即子程序入口距当前,即子程序入口距当前PCPC不得超过不得超过2KB2KB地址范围。地址范围。本指令的机器码为二字节。本指令的机器码为二字节。3.2.3 3.2.3 控制转移类指令控制转移类指令docin/sundae_meng3 3)子程序返回指令)子程序返回指令(从栈顶弹出断点到(从栈顶弹出断点到PCPC)RET RET ;从调用子程序返回。;从调用子程序返回。RETI RETI;从中断服务程序返回并恢复;从中断服务程序返回并恢复 中断优先级状态触发器。中断优先级状态触发器。2.2.转移指令转移指令 1 1)无条件转移指令)无条件转移指令(

26、1 1)短转移)短转移 AJMP addr11 AJMP addr11 ;addr11PC0addr11PC01010 转移范围:转移范围:2KB 2KB 机器码为机器码为2 2字节字节docin/sundae_meng(2 2)长转移)长转移 LJMP addr16 LJMP addr16 ;addr16PC0addr16PC01515 转移范围:转移范围:64KB 64KB 机器码为机器码为3 3字节。字节。(3 3)间接转移)间接转移 JMP A+DPTR JMP A+DPTR ;A+DPTRPC A+DPTRPC 分析下列程序段,说出当分析下列程序段,说出当A A分别为分别为0 0和和

27、2 2时,程序转置时,程序转置何处?该程序段的功能是什么?何处?该程序段的功能是什么?MOV DPTRMOV DPTR,#TABLE#TABLE JMP A+DPTR JMP A+DPTR TABLE TABLE:AJMP PROC0AJMP PROC0 AJMP PROC1 AJMP PROC1 AJMP PROC2 AJMP PROC2 AJMP PROC3 AJMP PROC3 docin/sundae_meng (4 4)无条件相对转移)无条件相对转移 SJMP rel SJMP rel ;PC+relPCPC+relPC,即即AsAs2 2relPCrelPC,机器码为,机器码为2

28、2字节字节 AsAs为源地址(本指令的首地址),执行本指令时当为源地址(本指令的首地址),执行本指令时当前前PCPCAs+2As+2,rel rel 为转移的偏移量,转移可以向前转为转移的偏移量,转移可以向前转(目的地址小于源地址),也可以向后转(目的地址大(目的地址小于源地址),也可以向后转(目的地址大于源地址),因此偏移量于源地址),因此偏移量rel rel 是是 1 1 字节有符号数,用字节有符号数,用补码表示(补码表示(128128127127),所以指令转移范围在离源),所以指令转移范围在离源地址地址AsAs的的126126129129字节之间。字节之间。docin/sundae_m

29、eng 2 2)条件转移指令)条件转移指令(1 1)累加器为零(非零)转移)累加器为零(非零)转移 JZ/JNZ rel JZ/JNZ rel ;A=0/(AA=0/(A0)0)则转移,否则顺序则转移,否则顺序 执行程序执行程序(2 2)减)减 1 1 不等于零转移不等于零转移 DJNZ Rn/dir,relDJNZ Rn/dir,rel 功能为:功能为:Rn(dir)-1Rn(dir)Rn(dir)-1Rn(dir)相减结果相减结果0 0转,转,否则顺序执行程序否则顺序执行程序docin/sundae_meng (3 3)比较转移指令)比较转移指令 CJNE A,dir,relCJNE A,

30、dir,rel CJNE A,#data,rel CJNE A,#data,rel CJNE Rn,#data,rel CJNE Rn,#data,rel CJNE Ri,#data,rel CJNE Ri,#data,rel操作数操作数1 1不不等于操作数等于操作数2 2则转,否则顺序执行。则转,否则顺序执行。1例:例:Y=-1XZX Z Z X YDATA+2 DATA+1DATA MOV DATA+2 MOV DATA+2,#0FFH#0FFH MOV A MOV A,DATADATA CJNE A CJNE A,DATA+1DATA+1,NEXTNEXTNEXT:JC NEXT1NEX

31、T:JC NEXT1 MOV DATA+2 MOV DATA+2,#1#1NEXT1:RETNEXT1:RET dirRi Rn#dataAdocin/sundae_meng1.1.位传送指令位传送指令 MOV CMOV C,bit ;bit ;(bitbit)CYCY MOV bit MOV bit,C C ;CYbitCYbit2.2.位状态控制指令位状态控制指令 CLR C CLR C ;0CY0CY CLR bit CLR bit ;0bit0bit SETB C SETB C ;1CY1CY SETB bit SETB bit ;1bit1bit CPL C CPL C ;CYCYC

32、YCY CPL bit CPL bit ;bitbitbitbit3.2.4 3.2.4 位操作指令位操作指令docin/sundae_meng3.3.位逻辑运算指令位逻辑运算指令 ANL CANL C,bit bit ;CYCY(bitbit)CYCY ANL C ANL C,/bit /bit ;CYCY(bitbit)CYCY ORL C ORL C,bit bit ;CYCY(bitbit)CYCY ORL C ORL C,/bit /bit ;CYCY(bitbit)CYCYdocin/sundae_meng 4.4.位转移位转移 位转移根据位的值决定转移,均为相对转移指令。位转移根

33、据位的值决定转移,均为相对转移指令。JC rel ;CY=1JC rel ;CY=1,则转移,否则顺序执行程序,则转移,否则顺序执行程序JNC rel ;CY=0,JNC rel ;CY=0,则转移,否则顺序执行程序则转移,否则顺序执行程序JB bitJB bit,rel ;(bit)=1,rel ;(bit)=1,则转移,否则顺序执行程序则转移,否则顺序执行程序JNB bitJNB bit,rel ;(bit)=0,rel ;(bit)=0,则转移,否则顺序执行程序则转移,否则顺序执行程序JBC bitJBC bit,rel;(bit)=1,rel;(bit)=1,则转移,且该位清零,否则则

34、转移,且该位清零,否则 顺序执行程序顺序执行程序docin/sundae_meng1.1.定义:定义:汇编控制指令,没有指令代码,不能被汇编控制指令,没有指令代码,不能被CPUCPU执行,只用于执行,只用于汇编过程,为汇编程序提供汇编信息。汇编过程,为汇编程序提供汇编信息。2.2.常用伪指令常用伪指令(1 1)ORGORGORGORG是设置起始地址伪指令,其格式是:是设置起始地址伪指令,其格式是:ORGORG1616位地址或标号位地址或标号(2 2)ENDENDENDEND是结束汇编伪指令,其格式是:是结束汇编伪指令,其格式是:ENDEND(3 3)DBDBDBDB是定义字节伪指令,其格式是:

35、是定义字节伪指令,其格式是:标号:标号:DB DB 字节型数表字节型数表(4 4)DWDWDWDW是定义字伪指令,其格式是:是定义字伪指令,其格式是:标号:标号:DW DW 字型数表字型数表3.3 3.3 伪指令伪指令docin/sundae_meng(5 5)DSDSDSDS是定义存储空间伪指令,其格式是:是定义存储空间伪指令,其格式是:标号:标号:DS DS 表达式表达式(6 6)EQUEQUEQUEQU是赋值伪指令,其格式是:是赋值伪指令,其格式是:字符名称字符名称EQUEQU数据或汇编符号数据或汇编符号(7 7)DATADATADATADATA是数据地址赋值伪指令,其格式是:是数据地址

36、赋值伪指令,其格式是:字符名称字符名称DATADATA表达式表达式(8 8)BITBITBITBIT是位地址赋值伪指令,其格式是:是位地址赋值伪指令,其格式是:字符名称字符名称BITBIT位地址位地址 详见表详见表3.3 MCS-513.3 MCS-51中的伪指令中的伪指令docin/sundae_meng进制间的转换进制间的转换1.1.十进制十进制二进制(整数)二进制(整数)任何十进制数有:任何十进制数有:dn-dn-1 11010n-n-1 1 dn-dn-2 21010n-n-2 2 d d1 110101 1 d d0 010100 0 (dn-(dn-1 110 10 dn-dn-2

37、 2)1010 d1)d1)1010 d d0 0规律:规律:didi1010 di-di-1 (i=1,2,1 (i=1,2,n-1)n-1)按二进制运算规则运算则得二进制数按二进制运算规则运算则得二进制数3.4 3.4 程序设计举例程序设计举例docin/sundae_meng例:将位十进制数例:将位十进制数D D3 3D D2 2D D1 1D D0 0转换成二进制数,设位转换成二进制数,设位 十进制数十进制数D D3 3D D2 2D D1 1D D0 0按分离按分离BCDBCD码形式存放,要求结码形式存放,要求结 果的高位存放在果的高位存放在R3R3中,结果的低位存放在中,结果的低位

38、存放在R2R2中。中。方法:方法:D3D2D1D0=D3D2D1D0=(0 010+10+D3D3)10+10+D2D2)1010D1D1)10+D010+D0结果:结果:1616位二进制数位二进制数0D0D3 30D0D2 20D0D1 10D0D0 0DATADATAdocin/sundae_meng流程:流程:设置指针指向设置指针指向DATADATA计数器初始(计数器初始(R7=3R7=3)DiDi初始初始结果单元结果单元结果单元内容结果单元内容10+D10+Di-1 i-1 结果单元结果单元修改指针修改指针计数器计数器-1-1计数器计数器计数器计数器=0=0?返返 回回Y YN Ndo

39、cin/sundae_mengR R3 3R R2 2R2R20AH0AHR3R30AH0AH0 0A A0 00 00 0R R3 3R R2 2MOV A,R2MOV B,#0AHMUL ABMOV R2,AMOV A,BXCH A,R3MOV B,#0AHMUL ABADDA,R3MOV R3,ARETMUL10:结果单元乘结果单元乘1010子程序子程序由于由于4 4位位1010进制(进制(99999999)小于)小于1616位位2 2进制(进制(6553565535),所以),所以转换结果不会大于转换结果不会大于1616位位docin/sundae_mengMOV R0,#DATAMO

40、V R7,#03HMOV A,R0MOV R2,AMOV R3,#0ACALL MUL10INC R0MOV A,R0 ADD A,R2MOV R2,AMOV A,R3ADDC A,#0MOV R3,ADJNZ R7,BCDB1RETBCDB:BCDB1:0D0D3 30D0D2 20D0D1 10D0D0 0DATADATAdocin/sundae_meng2.2.十进制十进制二进制(小数)二进制(小数)1010进制进制乘乘2 2取整(取溢出)取整(取溢出)例:例:0.625=0.625=2 2-1-1+2+2-3-3 =0.10100000B0.10100000Ba.a.小数点位数由乘小数

41、点位数由乘2 2次数定,结果单元字节数次数定,结果单元字节数 也由此定也由此定b.b.第一次的整数权最高第一次的整数权最高=2=2-1-1c.c.乘乘2 2是是1010进制的乘进制的乘2 2,自身相加再,自身相加再DA ADA A调整调整D D =b=b-1-12 2-1-1+b+b-2-22 2-2-2b b-m-m2 2-m-m docin/sundae_meng例:设入口时例:设入口时1010进制数在进制数在A A中,要求结果放在中,要求结果放在R2R2中中(8(8位二位二进制小数)进制小数)结果单元清结果单元清0 0次数计数器初始次数计数器初始十进制小数单元乘十进制小数单元乘2 2整数

42、移入结果单元整数移入结果单元计数器计数器-1-1计数器计数器计数器计数器=0=0?返返 回回Y YN NBCDBPBCDBP:MOVMOV R2 R2,#0#0 MOV MOV R6 R6,#8#8BCDBP1BCDBP1:ADD AADD A,ACCACC DA A DA A XCH XCH A A,R2R2 RLC RLC A A XCH XCH A A,R2R2 DJNZ R6 DJNZ R6,BCDBP1BCDBP1 RET RET;结果单元清;结果单元清0 0;次数初始;次数初始;10102 2;将;将整数整数移入结果单元移入结果单元溢出在进位位中溢出在进位位中docin/sunda

43、e_meng3.3.二进制二进制十进制(整数)十进制(整数)按权展开按权展开以以8 8位为例:位为例:b b7 7b b6 6b b5 5b b4 4b b3 3b b2 2b b1 1b b0 0=b=b7 72 27 7+b+b6 62 26 6+b+b0 02 20 0 =(=(0(02+b2+b7 7)2+b2+b6 6)2+2+)2+b02+b0将二进制数逐步左移得:将二进制数逐步左移得:b b7 7,b b6 6,b b5 5,b b4 4,b b3 3,b b2 2,b b1 1,b b0 0结果单元字节数结果单元字节数 :二进制:二进制1 1字节字节(255)(255)十进制十

44、进制2 2字节字节 二进制二进制2 2字节字节(65535)(65535)十进制十进制3 3字节字节注:注:这里的乘这里的乘2 2为为1010进制乘进制乘2 2按十进制运算规则按十进制运算规则运算则得十进制数运算则得十进制数docin/sundae_meng结果单元清零结果单元清零次数计数器初始次数计数器初始清清CyCy二进制数左移一位到二进制数左移一位到CyCy结果单元结果单元2+Cy 2+Cy 计数器计数器=0=0?返返 回回Y YN N计数器计数器-1-1例:被转换数在例:被转换数在R3R3中,结果在中,结果在R4R5R4R5中中IBTDIBTD:CLRCLR A A MOV MOV R

45、4 R4,A A MOV MOV R5 R5,A A MOV MOV R7 R7,#8#8IBTL2IBTL2:CLRCLR C C MOV A,R3 MOV A,R3 RLC A RLC A MOV R3,A MOV R3,A MOV A,R5 MOV A,R5 ADDC A,R5 ADDC A,R5 DA A DA A MOV R5,A MOV R5,A MOV A,R4 MOV A,R4 ADDC A,R4 ADDC A,R4 DA DA A A MOV R4,A MOV R4,A DJNZ R7 DJNZ R7,IBTL2IBTL2 RET RETdocin/sundae_meng4.

46、4.二进制二进制十进制(小数)十进制(小数)二进制二进制乘乘1010取整(取溢出)取整(取溢出)0.75D 0.75D 0.11000000B0.11000000B 1010B1010B111.10000000B111.10000000B 1010B1010B101.00000000B101.00000000B例:例:8 8位二进制小数位二进制小数4 4位十进制小数位十进制小数结果位数可自定结果位数可自定例例:设设8 8位二进制小数在位二进制小数在A A中中,结果放在以结果放在以DATADATA为首地址的为首地址的4 4个单元个单元中中,存放格式如下存放格式如下,试编程实现试编程实现.0D0D

47、-1-10D0D-2-20D0D-3-30D0D-4-4DATADATAB Bd d-1-11010-1-1 d d-2-21010-2-2 d d-m-m1010-m-mdocin/sundae_meng指针指针R1R1指向结果最高字节指向结果最高字节DATADATA位计数器初始位计数器初始二进制小数乘二进制小数乘1010取溢出存入结果单元取溢出存入结果单元修改结果指针修改结果指针已经已经4 4位?位?返返 回回Y YN NBBCDPBBCDP:MOVMOV R1 R1,#DATA#DATA MOV MOV R7 R7,#4#4BBCDP1BBCDP1:MOV BMOV B,#0AH#0AH MUL AB MUL AB MOV MOV R1R1,B B INC INC R1 R1 DJNZ R7 DJNZ R7,BBCDP1BBCDP1 RET RETdocin/sundae_meng(1)51系列单片机指令系统的特点是不同的存储空间寻址方式不同,适用的指令不同,必须进行区分。(2)指令是程序设计的基础,应重点掌握传送指令、算术运算指令、逻辑运算指令、控制转移指令和位操作指令,掌握指令的功能,操作的对象和结果,对标志位的影响,应要求熟记。小小 结结docin/sundae_meng

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(MCS-51系列单片机的指令系统及汇编语言程序设计.ppt)为本站会员(三亚风情)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|