欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    指令系统.docx

    • 资源ID:1042670       资源大小:723.74KB        全文页数:31页
    • 资源格式: DOCX        下载积分:3金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    指令系统.docx

    1、指令系统1. 机器语言用二进制编码表示每条指令,它是计算机能直接识别和执行的语言。用机器语言编写的程序称为机器语言程序或指令程序(机器码程序)。因为机器只能直接识别和执行这种机器码程序,所以又称它为目标程序。 2汇编语言是用助记符、符号和数字等来表示指令的程序语言,容易理解和记忆,它与机器语言指令是一一对应的。操作码 目的操作数 ,源操作数例如: MOV A, #OOH2. 操作码部分规定了指令所实现的操作功能,由25个英文字母表示,例如:JB、MOV、DJNZ、LCALL等。 操作数部分指出了参与操作的数据来源和操作结果存放在什么空间单元。操作数可以直接是一个数(立即数),或者是一个数据所在

    2、的空间地址,即在执行指令时从指定的地址空间取出操作数3. 805l指令系统中,有一字节、两字节或三字节指令。(1) 一字节指令 一字节指令中的8位二进制代码既包含操作码的信息,也包含操作数的信息。如:INC A(2) 双字节指令用一个字节表示操作码,另一个字节表示操作数或操作数所在的地址:其指令格式为: 操作码 立即数或地址 如:MOV A, #00H (3) 三字节指令一个字节操作码,两个字节操作数。 其格式如下: 操作码 立即数或地址 立即数或地址 如:MOV 90H, #00H4. 伪指令不是真正的指令,无对应的机器码,在汇编时不产生目标程序(机器码),它只是用来对汇编过程进行某种控制。

    3、(1) ORG 汇编起始命令 格式: ORG 16位地址其功能是规定该伪指令后面程序的汇编地址,即汇编后生成目标程序存放的起始地址,例如: ORG 2000H START: MOV A,#64H 既规定了标号START的地址是2000H,又规定了汇编后的第一条指令码从2000H开始存放。 ORG可以多次出现在程序的任何地方,当它出现时,下一条指令的地址就由此重新定位。(2) END 汇编结束命令 END命令通知汇编程序结束汇编。在END之后所有的汇编语言指令均不予以处理。 (3) EQU 赋值命令 格式: 字符名称 EQU 项(数或汇编符号) EQU命令是把“项”赋给“字符名称”,注意这里的字

    4、符名称不等于标号(其后没有冒号),其中的项,可以是数也可以是汇编符号。用EQU赋过值的符号名可以用作数据地址、代码地址、位地址或是一个立即数。因此,它可以是8位的、也可以是16位的。如: AA EQU R1 ;AA就代表了工作寄存器Rl MOV A, AA ;(4) DATA 数据地址赋值命令 格式: 字符名称 DATA 表达式 (5) DB 定义字节命令 格式: DB项或项表 (6) DW 定义字命令 格式: DW 16位数据项或项表 (7) DS 定义存储空间命令 格式: DS表达式 (8) BIT 位地址符号命令 格式: 字符名 BIT 位地址 5. 8051单片机寻址方式有七种: 寄存

    5、器寻址 直接寻址 立即数寻址 寄存器间接寻址 变址寻址 相对寻址 位寻址6. 寄存器寻址就是由指令指出寄存器组R0R7中某一个或其它寄存器(A、B、DPTR等)的内容作为操作数;7. 在指令中直接给出操作数所在存储单元的地址,称直接寻址方式。此时,指令中操作数部分是操作数所在地址。 在8051中,使用直接寻址方式可访问片内RAM的128个单元以及所有的特殊功能寄存器(SFR)。对于特殊功能寄存器,既可以使用它们的地址,也可以使用它们的名字。8. 立即数寻址:指令操作码后面紧跟的是一字节或两字节操作数,用“#”号表示,以区别直接地址。 例如: MOV A, 3AH ;(3AH) A MOV A,

    6、 #3AH ;3AHA前者是表示把片内RAM中3AH这个单元的内容送累加器A,而后者则表示把3AH这个数 又:MOV DPTR, #2000H ;9. 操作数的地址事先存放在某个寄存器中,寄存器间接寻址是把指定寄存器的内容作为地址,由该地址所指定的单元内容作为操作数。8051规定R0或R1为间接寻址寄存器,它可寻址内部RAM低位地址的128字节单元内容。还可采用数据指针(DPTR)作为间接寻址寄存器,寻址外部数据存储器的64K字节空间,例如,将片内RAM 65H单元的内容47H送A,可执行指令: MOV R0, #65H ; R065H MOV A,R0 ; A(65H) 指令的执行过程为:当

    7、程序执行到本指令时,以指令中所指定的工作寄存器R0内容(65H)为指针,将片内RAM 65H单元内容47H送累加器A。10. 变址寻址是以某个寄存器的内容为基地址,然后在这个基地址的基础上加上地址偏量形成真正的操作数地址。8051中采用数据指针DPTR或PC为变址寄存器,地址偏移量是累加器A的内容,以DPTR或PC的内容与累加器A的内容之和作为操作数的l 6位程序存储器地址。在8051中,用变址寻址方式只能访问程序存储器,访问的范围为64KB。当然,这种访问只能从ROM中读取数据而不能写入。例如: MOVC A, A十DPTR ;(A)十(DPTR) A 这种方式多用于查表操作。11. 相对寻

    8、址只出现在相对转移指令中。相对转移指令执行时,是以当前的PC值加上指令中规定的偏移量rel而生成实际的移地址的,这里所说的PC的当前值是执行完相对转移指令后的PC值。一般将相对转移指令操作码所在地址称为源地址,转移后的地址称为目的地址,则有: 目的地址源地址十2(相对转移指令字节数)十rel例如:执行指令 SJMP rel 12. 采用位寻址方式的指令,其操作数将是8位二进制数中的某一位。在指令中给出的是位地址,即给出片内RAM某一单元中的一位。位地址在指令中用Bit表示。例如,CLR bit 8051单片机片内RAM有两个区域可以位寻址,其一是20H一2FH的l 6个单元中的128位;其二是

    9、字节地址能被8整除的特殊功能寄存器。 在805l中,位地址常用下列两种方式表示: 直接使用位地址。对于20H一2FH的16个单元共128位的位地址分布是00H一7FH。 对于特殊功能寄存器,可以直接使用位地址,又可以直接用寄存器名字加位数表示,如PSW3等。13. 数据传送类28条传送数据可在ACC,R0R7,内部RAM,外部RAM间进行,其中A, R0R7的操作最多传送类指令不影响PSW(除P位)14. 算术操作类24条加、减、乘、除、增1、减1影响PSW中的CY、AC、OV、P不带进位加法4带进位加法4带借位减法4加1指令5减1指令4十进制调整指令1乘除法指令2加、减法指令(ADD ADD

    10、C SUBB INC DEC)无符号数和有符号数由用户自己决定均以ACC作为目的操作数带符号数运算时,必须检查溢出位OV若进行不带进位的减法时,用CLR C,将进位位清零即可。DA A为十进制调整指令,紧跟加法指令BCD码减法 求BCD码减数的补数:9AH-减数 被减数加补数 结果用十进制加法调整指令例:91-36=?CLR CMOV A,#9AHSUBB A,#36HADD A,91HDA A乘除法指令只能进行无符号的乘除法虽影响0V,但意义不同MUL AB;BA,OV=1表示B0DIV AB;AB, 0V=1,B=0,除法无意义15. 逻辑运算类24条读-修改-写指令对数据进行逻辑处理模拟

    11、各种硬件电路的逻辑功能逻辑与ANL逻辑或ORL逻辑异或XRL逻辑移位 RR RRC RL RLC累加器清零与取反CLR CPL带进位移位和不带进位移位例M1和M1+1单元存有16位二进制数,试编程将其扩大二倍CLR CMOV R1,#M1MOV A,R1RLC AMOV R1,AINC R1MOV A,R1RLC AMOV R1,A16. 控制转移指令17条无条件转移绝对转移LJMP 、AJMP短转移SJMP间接转移JMP A+DPTR有条件转移JZ 、CJNE、 DJNZ子程序调用与返回ACALL、 LCALL、RET中断返回RETI空操作NOP MOV R2,#0AH MOV R0,#40

    12、H CLR ALOOP:ADD A,R0 INC R0 DJNZ R2,LOOP MOV SUM,A17. 位操作指令17条位传送MOV BIT,BIT (错误)位逻辑操作与ANL、或ORL、取反CPL位条件转移JC、JNC、JB、JNB、JBC位置位,清零(SETB、CLR)例 1 将内部数据存储器的60H、61H单元中的连续存放着4位BCD码。试编写一段程序将这4位BCD码倒序排列 已知外部RAM的3000H开始放一数据区,缓冲区中以回车符0DH结束,编程将正数送入片内RAM以30H开始的正数区,将负数放入以40H开始的负数区方法1 MOV R0,#30H MOV R1,#40HMOV D

    13、PTR,#3000HNEXT:MOVX A, DPTRMOV 10H,ACJNE A,#0DH,END1SJMP OVEREND1:ANL A,#10000000BJZ ZHSJMP NEGZH: MOV R0,10HINC R0INC DPTRSJMP NEXTNEG:MOV R1,10HINC R1INC DPTRSJMP NEXTOVER:RET方法2MOV R0,#30HMOV R1,#40HMOV DPTR,#3000HNEXT:MOVX A, DPTRCJNE A,#0DH,COMPSJMP OVERCOMP:JB ACC.7,LOOPMOV R0,#30HMOV R0,AINC

    14、R0INC DPTRSJMP NEXTLOOP:MOV R1,AINC R1INC DPTRSJMP NEXTOVER:RET18. 19. 时钟周期 T:时序中最小的时间单位,由外接晶体或外输入时钟来决定。其值为石英振荡器频率fosc的倒数。 20. MCS-51单片机的指令系统除了乘、除法指令为四个机器周期外,其余都是单周期和双周期指令21. 指令的字节数:MCS-51单片机的指令系统有:单字节 (占用1个ROM存储单元 1个 字节);双字节(占用2个ROM存储单元 2个字节); 三字节指令(占用3个ROM存储单元 3个字节)。22. 每一个机器周期出现两次ALE信号;ALE信号对应这从R

    15、OM中读指令。所以在一个机器周期中CPU可以完成两次取指操作; 对于单字节单周期的指令,CPU通过译码后封死 PC,取消第二次取指(实际上指令的后半部不做任何工作)。23. 双字节单周期指令时序指令特点:指令长度为两个字节,并存储在ROM相邻的两个单元中。要想完整的将这样的指令执行完,必须从ROM中读两次操作码。24. 单字节双周期指令的时序 指令特点:单字节,却需要两个机器周期运行。如: INC DPTR DPTR为两个8位的寄存器,加一时,必须分两步完成.既第一步DPL加一,如果DPL加一有进位则还要进行第二步对DPH加一. 25. 26. 27. 数据传送类指令:完成数据的传送。【特点】

    16、:有8位、16位两种传送指令; 除了以累加器A为目标的传送对奇偶位PSW.P有影响外,其余的传送类指令对PSW无影响。28. 算术运算指令:用于操作数的加、减、乘除运算。【特点】:多数情况下:操作数之一在累加器A中,结果也保留在A中,运算结果要影响PSW(进位标志、奇偶和溢出标志等)。29. 逻辑操作和循环移位指令:操作数之间的逻辑加、与、取反和异或等操作。【特点】:多数情况下一个操作数在A中,结果也存于A。移位指令分为左移、右移和带进位和不带进位几种情况。逻辑类指令基本不影响PSW的内容30. 控制转移类指令:无条件转移;条件转移;调用和返回。【 特点】:通过修改程序指针PC的内容,使CPU

    17、发生转移,从而改变程序的流向。这也是唯一一种间接修改程序指针PC的指令。31. 位操作指令:位传送: 类似于字节传送,对 bit 进行传送。位置位/复位: 对某一位置一或清零。位运算:对某一位进行逻辑与、或、取反等。位控条件转移:对某一位的状态进行判断,满足条件转移。 【 特点】:按位操作。指令中所涉及到的地址皆为 “位地址” 。 这类指令基本不影响PSW的内容。32. MOV 20H,R0 ;将寄存器R0中的数据送内存20H单元 33. 寄存器寻址方式的指令大多是单字节指令。寄存器的3位代码与操作码OP共同占用一个指令字节。34. 直接寻址的指令长度是两个或三个字节。当地址恰好在SFR区域时

    18、,指令也可以用寄存器名来表示。提倡使用SFR中寄存器名称来代替直接地址。 INC A 寄存器寻址方式(单字节) INC ACC 直接寻址方式(双字节); INC 0E0H 直接寻址方式(双字节)。 35. 立即数寻址的指令长度为2或3个字节。36. 使用间接寻址时应注意的几个问题:使用间址指令前,往往要事先为间址寄存器Ri赋初值;只能使用R0、R1作间址寄存器 ,即 R i (i=0、1);间址可访问片内RAM,也是访问片外RAM唯一的方式。对于片内RAM使用Ri寄存器,寻址范围00HFFH;MOV A,Ri 访问内部RAM单元对片外RAM可以:使用Ri。寻址范围为00HFFH(256字节);

    19、使用DPTR做间址寄存器。寻址范围为0000HFFFFH (64K)。MOVX A,Ri ;访问外RAM单元,范围256字节MOVX A,DPTR ;访问外RAM单元,范围64K字节;间址方式不能访问SFR单元。对于SFR只能采用直接寻址的方式访问37. 变址寻址是访问程序存储器ROM中数据的唯一的寻址方式。变址寻址方式用于查表操作,而数据表是建立在程序存储器ROM中。38. 相对转移( 2个或3个字节); 绝对转移(3个字节)。39. 相对寻址 CPU进行地址计算时,PC取值是执行本条转移指令后的地址值。 偏移量的计算:rel=目标地址-源地址-2 (2字节相对转移指令)或: rel=目标地

    20、址-源地址-3 (3字节相对转移指令)结果用补码的形式书写。为了减少计算量,汇编程序允许使用“符号地址” 代替偏移量。如: SJMP loop1 汇编程序在汇编时,自动计算rel,并将结果进行替换。 如果转移地址超过相对寻址的范围(-127+128)时, 在编译时系统会提示出错。这是编程者常见到问题。40. 41. MOV R7,#28H ;立即数28H送寄存器R7MOV R0,#38H ;立即数38H送内存20H单元MOV Ri,30H ;RAM30h内容送Ri指定的RAM单元42. 寄存器间接寻址型传送指令指令特点:指令中Ri中存放的不是操作数本身,而是操作数在RAM中的地址(i=0、1)

    21、。格式如下:MOV A ,RiMOV Ri ,AMOV direct ,Ri【注意】;Ri中存放操作数的地址是有所选择的,只有非 SFR的RAM单元才能使用这种寻址方式。43. 会正确地估计指令的字节。凡是包含有立即数、直接 地址的指令,都应当在原有的基础上加1或2。44. 使用 MOVC A,A+PC 指令的特点:程序与数据表在ROM中的位置是可以浮动的。 只要MOVC指令与表之间的距离不变,则程序可以在ROM中的任意位置上“浮动”,程序具有可修改性;节省DPTR寄存器;与使用MOVC A,A+DPTR 指令不同,使用前应当对A中的偏移量加以个“修正值”,修正值的大小为:MOVC指令与表头之

    22、间的字节数;45. 1,在S2P1时刻,P2口输出外部ROM的高八位地址A15-A8,P0口输出低八位地址A7-A0, 这时地址是由程序计数器PC提供的ROM中的指令地址;2,在ALE的下降沿,P0口的数据(低八位地址)被锁存到74LS373中。3,在S3P2到S4P1期间,/psen变低电平时,外部程序ROM被选中, ROM输出端的三态门被打开,被选中单元中的指令 movc a, a +dptr 送到P0口上,且在S4P2时指令经P0口送至CPU的IR中。4,CPU对指令译码后,在S4P2时进行常数地址计 算并由P0、P2口输出(P0口输出低8位地址00H;P2口输出地址高八位20H)。5,

    23、在S5P2时,ALE将常数地址的低八位00H锁存;6,在S6P1时,/psen=0,外部ROM被再次选中打开,按照单片机所提供的16位地址,将外部ROM中的常数经P0口在S6P2时刻送入累加器A。46. 1, 在S2P2时,ALE的第一个下降沿将P0口输出的外程序ROM的低八位地址锁存到74LS373锁存器中;2, 在S3P2的Psen为低电平时,选中外ROM,并根据单片机P0、P2口输出的16位地址选中movx指令(单字节),通过P0口送至单片机内部IR中译码.经译码后产生下列的一系列操作;3, CPU将DPTR中的高8位(20H)送P2口输出,低八位(00H)经P0口输出,节在S5P1时A

    24、LE第二次下降沿时,将P0口的低八位地址锁存;4, 在第二个机器周期的S1-S3中单片机输出/RD信号(低电平),选中外部RAM,并根据单片机提供的2000H 这16位地址中取出数据x.5, CPU在S2-S3期间,将外部RAM2000H单元送到P0口上的数据送入累加器A中.上述过程可以分成两个指行的阶段: 1, 根据PC所指定的程序存储器的地址,将movx指令从片 外ROM中取出; 2, 经译码后将DPTR提供的外数据存储器RAM中的数据 地址取出数据,经P0口送累加器A.控制信号: 在第一阶段CPU产生/Psen信号用来选通外部程 序存储器ROM; 在第二阶段CPU输出/RD信号(低电平)

    25、,用来选 通并读取外部数据存储器RAM的数据.【注意】:CPU在执行MOVX指令时的2个周期中的第2个机器 周期缺少一个ALE波形。47. 访问外部存储器指令的特点:使用MOVX或MOVC指令来访问外部存储器;此时,P0、P2作为地址和数据总线;执行MOVX指令访问RAM时,CPU产生/RD或/WR信号。因此,/RD、/WR应当与外RAM的读、写控制端连接;执行MOVC指令访问ROM时,CPU产生/psen信号来选通外ROM。因此,此信号应当与ROM的片选连接。48. 使用PUSH、POP 指令要注意事项PUSH、POP 指令使用的寻址方式为直接寻址,所以 push a 是错误的,应当是 pu

    26、sh acc 或 push 0e0h,同理:push r0 也是错误的应当为: push 00h。进栈操作是堆栈向上“生长”的过程,即sp+1;出栈则相反。系统上电时,SP=07h。SP的值可以根据需要进行修改,在确定SP值时要考虑对栈区对数据区的影响,以避免两者冲突。如:在程序的初始化时加一条: MOV SP,#60H 即将堆栈的起始位置上移到RAM的60H单元。 49. 数据交换指令 XCH a ,Rn ;a Rn XCH a ,direct ;a (direct) XCH a ,Ri ;a (Ri) XCHD a ,Ri ;a 30 (Ri) 30低四位交换50. 加法指令(一):不带进

    27、位的加法指令格式: ADD A ,Rn ;A +Rn A51. ADD A ,direct ;A +(direct) AADD A ,Ri ;A +(Ri) AADD A ,#data ;A +data A【注意】:1,参加运算的数据都应当是8位的,结果也是8位并影响PSW。2,根据编程者的需要,8位数据可以是无符号数(0255),也可以是有符号数(-127+128)。3,不论编程者使用的数据是有符号数还是无符号数,CPU都将它们视为有符号数(补码)进行运算并影响PSW。52. 加法指令(二):带进位的加法指令格式: ADDC A ,Rn ;A +Rn +Cy AADDC A ,direct

    28、;A +(direct) +Cy AADDC A ,Ri ;A +(Ri) +Cy AADDC A ,#data ;A +data +Cy A【注意】:这里的Cy是指令执行前的Cy; 对PSW的影响同ADD指令。53. 加1指令(修改指针专用)INC A ;累加器A加一 INC Rn ;Rn+1Rn INC direct ;内存单元数据加一 INC Ri ;内存单元数据加一 INC DPTR ;dptr+1dptr【注意】:1,除了第一条对PSW的P有影响外,其余对PSW均无影响。2,由于上面的原因,INC指令不能作为一般的数据算术运算 使用,而常用于修改数据指针等控制、循环语句中使用。54.

    29、 1减法指令:格式:SUBB A ,Rn ;A Rn Cy A SUBB A ,direct ;A (direct) Cy ASUBB A ,Ri ;A (Ri) Cy ASUBB A ,#data ;A data Cy A1,在单片机内部,减法指令实际上是采用补码的加法实现的。但要判定减法结果编程者可以按二进制减法法则验证。2,无论相减两数是无符号数还是有符号数,减法操作总是按有符号数来处理、影响PSW中相关的标志(详见举例)。3,在MCS-51的指令系统中没有不带Cy的减法,所以在使用SUBB指令前必须使用一条清除Cy的指令:CLR C。55. 减一指令(修改指针专用)格式: DEC A

    30、;累加器A减一 DEC Rn ;Rn-1Rn DEC direct ;内存单元数据减一 DEC Ri ;内存单元数据减一【注意】:1,除了第一条对PSW的P有影响外,其余对PSW均无影响。2,由于上面的原因,DEC指令一般不作为数据算术运算使用(因为不能对PSW的OV等位产生影响,它主要用于修改数据指针在循环语句中使用)。56. 十进制调整指令格式:DA A ;若AC=1或A30 9,则A+06hA;若Cy =1或A74 9,则A+60hA【注意】:1,DA A指令必须紧跟在加法指令之后;2,DA A指令只适用于加法指令的调整。57. BCD减法运算:由于DA A 指令只能对BCD码的加法进行调整,所以遇到BCD码的加法时就要将其减法变为加法运算,然后再使用DA A指令进行调整。减法变加法就是使用BCD码的补码运算法则:将被减数-减数变为被减数+减数的补码。减数的补码 = BCD码的模-减数其中BCD码的模为100H = 99H+01H = 9AH58. 乘法和除法指令格式:MUL A B ;a b=b a (b存高8位,a存低8位)


    注意事项

    本文(指令系统.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开