第03章 指令系统-02_第1页
第03章 指令系统-02_第2页
第03章 指令系统-02_第3页
第03章 指令系统-02_第4页
第03章 指令系统-02_第5页
已阅读5页,还剩92页未读 继续免费阅读

下载本文档

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

文档简介

1、2021-10-1612021-10-162 2021-10-163 2021-10-164 2021-10-165 2021-10-166 2021-10-167 2021-10-168 2021-10-169 在寄存器的名称前面加前缀标志“” 访问内部RAM或外部数据存储器的低256个字节时,只能采用R0或R1作为间址寄存器。例如: MOV R1,#40H MOV A,R1; 把内部RAM中地址为40H单元内容送A。2021-10-1610 寻址范围:寻址范围:(1)访问内部)访问内部RAM区,区,51系列系列128个字节,个字节,52系列系列256个字节,个字节,用用R0或或R1间接寻址

2、,其通用形式为:间接寻址,其通用形式为: MOV A ,Ri(2)访问片外数据存储器的低)访问片外数据存储器的低256字节,用字节,用R0或或R1间接寻址,间接寻址,其通用形式为:其通用形式为: MOVX A ,Ri(3)对片外数据存储器的)对片外数据存储器的64K字节的间接寻址,用字节的间接寻址,用DPTR作间作间址寄存器。例如:址寄存器。例如: MOVX A,DPTR(4)堆栈区)堆栈区 堆栈操作指令堆栈操作指令PUSH(压栈)和(压栈)和POP(出栈)使用堆栈指针(出栈)使用堆栈指针(SP)作间址寄存器)作间址寄存器2021-10-1611 2021-10-1612 2021-10-16

3、13 在相对寻址的转移指令中,给出了地址偏移量,在相对寻址的转移指令中,给出了地址偏移量,以以“rel”表示,即把表示,即把PC的当前值加上偏移量就构成的当前值加上偏移量就构成了程序转移的目的地址:了程序转移的目的地址: 目的地址目的地址 = 转移指令所在的地址转移指令所在的地址 + 转移指令转移指令的字节数的字节数 + rel 偏移量偏移量rel是一带符号的是一带符号的8位二进制数补码数。位二进制数补码数。范围是:范围是:128 +1272021-10-1614 51系列单片机有位处理功能,可以对数据位进行操作,例如:MOV C,40H ;把位40H的值送到位累加器C。 寻址范围包括: (1

4、)内部RAM中的位寻址区。 (2)特殊功能寄存器中的可寻址位。2021-10-1615 特殊功能寄存器可寻址位在指令中有如下特殊功能寄存器可寻址位在指令中有如下4种的表示方法:种的表示方法: a. 直接使用位地址直接使用位地址 SETB 0D5H b. 位名称的表示方法位名称的表示方法 SETB F0 c. 特殊功能寄存器符号加位数的表示方法特殊功能寄存器符号加位数的表示方法 SETB PSW.5 d. 单元地址加位数的表示方法单元地址加位数的表示方法 SETB (0D0H).52021-10-1616 2021-10-1617 2021-10-16182021-10-1619 2021-10

5、-1620 2021-10-1621 2021-10-1622 2021-10-1623 2021-10-1624 2021-10-1625 direct指的是内部RAM或SFR的地址2021-10-1626 2021-10-1627 2021-10-1628 习题:习题:用两种寻址方式实现,将片内用两种寻址方式实现,将片内RAMRAM 60H 60H单元的数据传送给累加器单元的数据传送给累加器A A。解:解: MOV A,#60HMOV A,#60H()MOV RMOV R0 0,#60H #60H () MOV AMOV A,RR0 0;A= 30HA= 30H;(4FH)= 30H(4F

6、H)= 30H;R R0 0= 20H= 20H;(20H)= 30H(20H)= 30H;(21H)= 30H(21H)= 30HMOV RMOV R0 0,60H 60H MOV AMOV A,RR0 0 () 解:解: MOV A,60HMOV A,60H () 结果结果A=32HA=32H2021-10-1629 只有指令表中的指令才有对应指令代码,计算机才能只有指令表中的指令才有对应指令代码,计算机才能执行。编程时,不能随意创造发明指令。执行。编程时,不能随意创造发明指令。1. 一条指令中不能同时出现两个工作寄存器:一条指令中不能同时出现两个工作寄存器:非法非法指令:指令:MOV R

7、MOV R1 1,R R2 2MOV RMOV R2 2,RR0 02. 间址寄存器只能使用间址寄存器只能使用 R R0 0、R R1 1。 非法非法指令:指令: MOV AMOV A,RR2 23. SFRSFR区只能直接寻址,不能用寄存器间接寻址。区只能直接寻址,不能用寄存器间接寻址。非法非法指令:指令: MOV RMOV R0 0,#80H#80H MOV A MOV A,RR0 04. 指令表指令表(P309): B B:指令字节数,:指令字节数,M M:机器周期数:机器周期数2021-10-1630 2021-10-1631 2021-10-1632 【例1】: (A)=30H,执行

8、地址1000H处的指令1000H: MOVC A,A+PC 本指令占用一个字节,执行结果将程序存储器中1031H的内容送入A。 缺点:表格只能存放在该条查表指令后面的256个单元之内,表格的大小受到限制,且表格只能被一段程序所利用。【例2】:(DPTR)=8100H (A)=40H 执行指令MOVC A,A+DPTR 本指令的执行结果只和指针DPTR及累加器A的内容有关,与该指令存放的地址及常数表格存放的地址无关,因此表格的大小和位置可以在64K程序存储器中任意安排,一个表格可以为各个程序块公用。2021-10-1633 2021-10-1634 2021-10-1635 MOV DPTRMO

9、V DPTR,#2000H#2000HMOVX AMOVX A,DPTRDPTRMOV DPTRMOV DPTR,#2100H#2100HMOVX DPTRMOVX DPTR,A A习题:习题:将片外将片外RAM 0000HRAM 0000H单元的数据传送到片内单元的数据传送到片内RAMRAM的的60H60H单元单元。; DPTR= 2000HDPTR= 2000H; A= XA= X; DPTR= 2100HDPTR= 2100H; (2100H)= X(2100H)= X片外数据存储器不能直接寻址。片外数据存储器不能直接寻址。下列为下列为非法非法指令:指令: MOVX AMOVX A,20

10、00H 2000H MOVX 2100H MOVX 2100H,2000H2000HDPTRX2021-10-1636 2021-10-1637 例例1:当(当(SP)=60H,(A)=30H,(B)=70H时,执时,执行:行: PUSH ACC ; (SP)+1=61HSP,(A)61H PUSH B ; (SP)+1=62HSP,(B)62H 结果:结果:(61H)=30H, (62H)=70H, (SP)=62H例例2 :当当 (SP) =62H,(62H) =70H,(61H) =30H, 执执行:行: POP DPH ;(SP)DPH,(SP)-1SP POP DPL ;(SP)DP

11、L,(SP)-1SP 结果:结果:(DPTR)=7030H,(SP)=60H2021-10-1638 2021-10-1639 2021-10-1640 2021-10-1641 2021-10-1642 与数据传送指令不同,多数算术运算指令会与数据传送指令不同,多数算术运算指令会影响影响标志位标志位的状态,即的状态,即CPUCPU执行算术运算指令后,执行算术运算指令后,根据数据操作情况自动设置标志位的状态。根据数据操作情况自动设置标志位的状态。MCS-51 MCS-51 的程序状态字寄存器的程序状态字寄存器 PSWPSW 为标志寄存器。为标志寄存器。 其格式如下:字节地址为其格式如下:字节地

12、址为D0H位位 序序B7B6B5B4B3B2B1B0位符号位符号 CYACF0RS1RS0OVF1P2021-10-1643 2021-10-1644 1)F0、F1 :用户自定义标志位。:用户自定义标志位。2)RS1、RS0 : 工作寄存器区选择位。工作寄存器区选择位。 复位时,复位时,PSW=00H例:例:复位后,设置使用工作寄存器复位后,设置使用工作寄存器3 3区,区, 其余标志位不变。其余标志位不变。解:解: MOV PSWMOV PSW,# # 18H 18H位位 序序B7B6B5B4B3B2B1B0位符号位符号 CYACF0RS1RS0OVF1P2021-10-1645 2021-

13、10-1646 使用加法指令时,要注意累加器A中的运算结果对各个标志位的影响:(1)如果位7有进位,则置“1”进位标志Cy,否则清“0”Cy(2)如果位3有进位,置“1”辅助进位标志Ac,否则清“0”Ac(Ac为PSW寄存器中的一位)(3)如果位6有进位,而位7没有进位,或者位7有进位,而位6没有,则溢出标志位OV置“1”,否则清“0”OV。2021-10-1647 【例1】 (A)=53H,(R0)=FCH,执行指令ADD A,R0结果:(A)= 4FH,Cy=1,Ac=0,OV=0, P=1(A中结果1的位数为奇数)注意:上面的运算中,由于位6 6和位7 7同时有进位,所以标志位OV=0O

14、V=0。2021-10-1648 【例2】 (A)=85H,(R0)=20H,(20H)=AFH,执行指令:ADD A,R0结果:(A)= 34H,Cy=1,Ac=1,OV=1,P=1注意:由于位7 7有进位,而位6 6无进位,所以标 志位OV=1 OV=1 2021-10-1649 【例3.2】 片内RAM单元40H、41H中分别存放被加数、加数,相加结果存放到41H、40H单元。程序如下: MOVR0,#40H;设置地址指针 MOVA,R0;取被加数 INCR0 ADDA,R0;两数相加 DECR0 MOVR0,A;存放和的低8位 INCR0 JCCARRY MOVR0,#0;相加结果无进

15、位 RETCARRY: MOV R0,#1;相加结果有进位 RET2021-10-1650 2021-10-1651 【例1】(A A)=85H, (20H)=FFH, Cy=1=85H, (20H)=FFH, Cy=1执行指令: ADDC A,20HADDC A,20H结果:(A)= 85H,Cy=1,Ac=1,OV=0,P=1注意:上面的运算中,由于位6 6和位7 7同时有进位,所以标志位OV=0OV=0。2021-10-1652 2021-10-1653 适应条件:(1 1)该指令执行前,一般有一条加法指令。(2 2)加法指令中的两个加数,应该是用压缩BCDBCD码表示的十进制数,和存放

16、在A A中。(3 3)执行完DADA指令后,A A中存放的数是两个加数的十进制和,也使用压缩BCDBCD码表示。 若(A)=56h (R5)=67h ADD A,R5 DA A 结果(A)=23;Cy=12021-10-1654 十进制加法指令十进制加法指令:仅对仅对加法加法结果进行调整结果进行调整ADD AADD A,源操作数,源操作数 DA ADA A带进位十进制加带进位十进制加1 1法法指令:指令: ADDC AADDC A,源操作数,源操作数 DA ADA A作业:作业:BCDBCD码加法编程。码加法编程。设设X X、Y Y为为4 4位压缩位压缩BCDBCD码,求码,求 Z=X+YZ=

17、X+Y。BCDBCD调整指令:调整指令:BCDBCD:Binary-Coded-DecimalBinary-Coded-Decimal ( (二进制编码的十进制)二进制编码的十进制) DA ADA A ;把;把A A中按二进制相加后的结果中按二进制相加后的结果 调整成按调整成按BCDBCD数相加的结果数相加的结果调整原因:调整原因:1 1、相加结果大于、相加结果大于9 9,进入无效编码区;,进入无效编码区; 2 2、相加结果有进位,跳过无效编码区。、相加结果有进位,跳过无效编码区。调整方法:调整方法:进行加进行加“6 6”修正。修正。2021-10-1655 【例3.3】 试编写4位BCD码加

18、法程序。设被加数存放在片内RAM单元40H、41H中,加数存放在42H、43H单元中,相加后结果存放到分别存放被加数、加数,相加结果存放到40H、41H单元中(假定数据是高位在前,低位在后,且假定相加的结果仍为4位BCD码)。程序如下: MOVR0,#41H;设置地址指针R0 MOVR1,#43H;设置地址指针R1 MOVA,R0 ADDA,R1;十位、个位数相加 DAA;十进制调整 MOVR0,A DECR0;修改地址指针 DECR1 MOVA,R0 ADDCA,R1;千位、百位数相加 DAA;十进制调整 MOVR0,A RET2021-10-1656 2021-10-1657 【例1】(A

19、 A)= =C9C9H,H,(R2R2)= =5454H, Cy=1H, Cy=1执行指令: SUBBSUBB A, A,R2R2结果:(A)= 74H,Cy=0,Ac=0,OV=1,P=0注意:上面的运算中,由于位6 6向位7 7借位,位7没有借位,所以标志位OV=1OV=1。2021-10-1658 2021-10-1659 2021-10-1660 注意:注意:没有指令没有指令 DEC DPTR DEC DPTR 可用指令可用指令 DEC DPLDEC DPL 代替代替2021-10-1661 ABAB乘数乘数被乘数被乘数积积2021-10-1662 ABAB除数除数被除数被除数整数部分

20、整数部分余数部分余数部分2021-10-1663 2021-10-1664 2021-10-1665 2021-10-1666 2021-10-1667 2021-10-1668 A7A0RL AA7A0RR AA7A0RLC AA7A0RRC ACyCy 2021-10-1669 2021-10-1670 2021-10-1671 2021-10-1672 2021-10-1673 2021-10-1674 2021-10-1675 2021-10-1676 2021-10-1677 【例3.4】 将片外RAM的1100H11FFH的256个单元清0。程序如下: MOV R7,#00H ;设置计数初值 CLR A MOV DPTR,#1100H;设置片外RAM单元首址LOOP:MOVX DPTR,A INC DPTR DJNZ R7,LOOP RET2021-10-1678 2021-10-1679 2021-10-1680 2021-10-1681 2021-10-1682 2021-10-1683 2021-10-1684 2021-10-1685 2021-10-1686 2021-10-1687 2021-10-1688 2021-10-168

温馨提示

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

评论

0/150

提交评论