ImageVerifierCode 换一换
格式:DOCX , 页数:18 ,大小:66.21KB ,
资源ID:18066069      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/18066069.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(51指令系统Word文件下载.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

51指令系统Word文件下载.docx

1、 控制转移类指令(17条) 位操作类指令(17条)3.1.2 汇编语言指令格式操作码助记符 目的操作数,源操作数例如 MOV A,R0就表示把工作寄存器R0中的数据送入A累加器。3.1.3 汇编语言指令和机器码书写格式地 址 机器码 标号 汇编语言指令 注解2000H 74 8A START: MOV A,#8AH ; 送被乘数 3.1.4 指令中的常用符号 Rn: 表示当前工作寄存器R0R7中的一个。Ri: 表示寄存器间接寻址,常常作间接寻址的地址指针。其中Ri代表R0和R1寄存器中的一个。Direct: 表示内部数据存贮器单元的地址及特殊功能寄存器SFR的地址,对SFR而言,既可使用它的物

2、理地址,也可直接使用它的名字。#data: 表示8位立即数,即8位常数,取值范围为#00H#0FFH#data16: 表示16位立即数,即16位常数,取值范围为#0000H#0FFFFHaddr16: 表示16位地址 addr11: 表示11位地址rel: 用补码形式表示的地址偏移量,取值范围为-128+127。Bit: 表示内部RAM和SFR中的具有位寻址功能的位地址。SFR中的位地址可以直接出现在指令中,为了阅读方便,往往也可用SFR的名字和所在的数位表示。如:表示PSW中奇偶校验位,可写成D0H,也可写成PSW.0的形式出现在指令中。: 表示间接寻址寄存器或基址寄存器的前缀符号。$: 表

3、示当前指令的地址。3.2 寻址方式每条指令存数或取数都需要知道如何获得该数据,如何产生操作数或其地址就称作寻址。指令的寻址方式是指如何获得操作数的方法,一个指令系统的寻址方式越多,计算机的功能越强,灵活性越大。所以寻址方式的多样性和灵活性是衡量计算机性能的一项重要指标。MCS-51 单片机有七种寻址方式。1 寄存器寻址(Register Addressing)在指令中指出存放操作数的寄存器,因为寄存器在片内RAM中,所以其特点是速度快。 如 MOV A,R0,INC DPTR,MUL AB,DEC R7等。寄存器包括32个工作寄存器(分4组)以及部分专用寄存器。指令只能使用当前寄存器组的8个通

4、用寄存器R0R7,对不同寄存器组可以通过PSW 中的RS0,RS1来选择。2 直接寻址(Direct Addressing)指令中给出操作数的8位直接地址,可用这种寻址方式的存储空间只限于内部RAM。在一般指令中用Direct表示直接地址。有以下三种情况: 片内RAM的低128个字节 (00H7FH)。MOV A,78H ORL A,5EH 专用寄存器SFR:这是访问SFR的唯一方法。在指令中可以给出直接地址,也可以给出寄存器符号。MOV TCON,A 或MOV 88H,A MOV A,SBUF 或MOV A,99H 片内RAM(包括SFR)的中的可位寻址空间,即位操作指令中的位地址。也可把其

5、单独列为位寻址(见7.位寻址)。MOV C,7EH SETB 20H SETB EA/IE.7/AFH CLR EX0/IE.0/A8H3 寄存器间接寻址(Register Indirect Addressing) 用寄存器存放操作数的地址,即用寄存器作为地址指针,但要在寄存器前面加上以示区别。可以用作地址指针的间接寄存器只能是R0、R1和DPTR, 在一般指令中分别用Ri 和 DPTR 来表示。这种寻址方式可用于访问片内和片外RAM,不能用于访问SFR。 片内RAM (8X51的低128个字节地址00H7FH,8X52的低256个字节地址00HFFH),用R0或R1作间接寄存器。MOV A,

6、Ri (i = 0或1) ANL A,Ri MOV R0,A ;若R0 = 30H, A = 34H 片外RAM:访问片外RAM的唯一方法就是寄存器间接寻址。注意指令操作码要改为MOVX。 访问第一页256个单元RAM时,可用8位的R0或R1寄存器作间接寄存器。实际上是默认高8位地址为00H。MOVX A,Ri (i = 0或1) MOVX Ri ,A (i = 0或1)若需要访问其他页面,可以先把高8位送P2口,再用R0或R1寄存器作低8位地址指针也可访问整个64k 片外RAM。 访问整个64k 片外RAM,可用16位的DPTR寄存器作间接寄存器。MOVX A,DPTR MOVX DPTR,

7、A 另外,堆栈操作中的栈指针(SP)也可以认为是一种寄存器间接寻址方式。4 立即寻址 (Immediate Addressing)一般把在指令中直接给出的操作数称为立即数。在指令操作码的后面紧跟一个和或二个字节的操作数。但要在立即数的前面加一个# 以与直接地址区别。在一般指令格式中,立即数用 # DATA或 #DATA16 表示。MOV A,# 3AH ;3AHA MOV A,#2476H ;2476HDPTR而 MOV A,3AH ;(3AH)A5 变址寻址 (Index Addressing)以DPTR 或PC 寄存器作基址寄存器,用累加器A作变址寄存器,以其内容相加形成要访问字节数据的有

8、效地址。这种寻址方式用于查表指令。MOVC A, A+DPTR 若 (A)=05H, (DPTR)=0300H 则 A(0305H) 只能对程序存储器寻址; 只有两条;MOVC A,A+DPTR,MOVC A,A+PC 全部是一字节指令6 相对寻址 (Relative Addressing) 相对寻址是将程序计数器PC的当前值与指令中给出的偏移量相加,就形成转移的目标地址。用于程序的相对转移指令,指令中给出了转移目标地址相对于程序计数器PC的位(偏)移量。位移量用一字节补码表示。最大转移地址为 -128+127,考虑到转移指令长度为23 字节。所以目标地址距离转移指令地址的差为 126 +12

9、9(两字节)或 -125 +130(三字节)。这里PC的当前值是指执行完该转移指令后的PC中的地址值,即转移指令操作码的PC值加上该转移指令的字节数(可以是2或3)。2000H SJMP 08H ;PCPC+2+08H 程序转移有效地址 = (PC + 2/3) + 偏移量在实际应用中,往往是已知转移指令操作码的地址(源地址)和需要转移的目标地址,求偏移量。故 偏移量 = 目标地址 - (源地址 + 2/3) 偏移量为正,向下转移;偏移量为负,向上转移。计算偏移量只要用地址的低8位运算,因为仅表示相对转移。7 位寻址 (Bit Addressing) 直接对数据位的操作称为位寻址。位寻址只能对

10、有位地址的单元作位寻址操作。这种寻址方式实际上是一种直接寻址方式,不过其地址是位地址。ANL C,30H,表示用进位位Cy与位地址为30H的逻辑位进行“与”操作。 SETB 10H, 表示将10H位置1位寻址的寻址范围: 内部RAM中的可位寻址区:字节单元地址20H2FH16个单元的128位,位地址为00H7FH 可位寻址的专用寄存器中的可寻址位:可位寻址的寄存器有B,ACC,PSW,IP,P3,IE,P2,SCON,P1,TCON,P0等11个,有可寻址位83位。专用寄存器中寻址位在指令中有四种表示方法。 直接使用地址。80H,88H,90H,98H,0A0H,0A8H,0B0H,0B8H,

11、0D0H,0E0H,0F0H,开始的8个连续位地址,除去0BDH,0BEH,0BFH,0ADH,0AEH 5个位地址。 位名称。如SM0,PT1,F0等 字节地址加位 如 0D0H . 5 专用寄存器符号加位 如 PSW . 5 注意:一条指令可能有两个操作数,可分别用两种不同寻址方式。3.3 单片机执行指令的过程执行程序的过程就是执行指令的过程。执行指令的过程大致如下:地址线出现指令操作码所在单元的地址;自动修改PC(加一);读(取)指令操作码,送指令寄存器IR;经指令译码器进行指令译码;发出操作信号;给出操作数地址(由寻址方式决定),取出操作数;执行操作。发出下一条指令地址; 。3.4 数

12、据传送指令3.4.1 片内RAM低128字节(包含工作寄存器区,位地址空间等)1. 寄存器寻址:只用于片内工作寄存器R0R7的存取 MOV Rn,A MOV A,Rn注意工作寄存器有4个区,上电复位后自动选0区(00H07H),其他区可通过设置PSW中的RS1、RS0来选择,例如 MOV R2,A ; 上电时选中0区,送入0区R2 (02H) MOV PSW,#08H ; 选择1区寄存器 送入1区R2 (0AH)2. 直接寻址 MOV A, direct MOV direct, A MOV Ri, direct MOV direct, Ri MOV Rn, direct MOV direct,

13、 Rn MOV direct, direct MOV direct, #data如 MOV 40H, A MOV R0, A MOV 50H, 40H3. 寄存器间接寻址 MOV A, Ri MOV Ri, A MOV Ri, #data如 MOV R0, #40H MOV R1, #41H MOV A, R0 MOV R1, A ; MOV 41H, 40H MOV R0, #55H3.4.2 专用寄存器(SFR)(80HFFH中只占用21个字节,其他无用)其中除ACC、B、DPTR可用寄存器寻址以外,其他只能用直接寻址。 MOV A, SFR MOV SFR, A MOV Rn, SFR

14、MOV SFR, Rn MOV direct, SFR MOV SFR, direct MOV SFR, SFR MOV SFR, #data MOV DPTR,#data16 ; MOV DPH, #dataH MOV DPL, #dataL如 MOV R1, P1 MOV R1, 90H MOV P1, P2 MOV 90H, 0A0H3.4.3 片内RAM只能用寄存器间接寻址,一共只有6条指令,无其他指令可用。 MOVX A, R0 MOVX R0, A MOVX A, R1 MOVX R1, A MOVX A, DPTR MOVX DPTR, A3.4.4 程序存储器 在ROM/EPR

15、OM中要把数据输送到寄存器、片内RAM或SFR去,只能用立即寻址方式送数。 MOV A, #data MOV Rn, #data MOV Ri, #data MOV direct, #data MOV SFR, #data要获得EPROM中常数表格中的常数,只能用查表指令。 MOVC A, A+DPTR MOVC A, A+PC如 要把0F转换成七段显示代码 DISP: MOV DPTR, #SEGTBL MOVC A,A+DPTR SEGTBL: DB 3FH ; 0的七段代码 DB 02H ; 1的七段代码又如 0100 74 02 MOV A, #02H 0102 83 MOVC A,A

16、+PC 0103 80 5B SJMP NEXT 0105 32 DB 32H 执行MOVC A,A+PC指令后,因为这时PC=0103H, A=02H 所以该指令是把0105H单元中的数据32H送入A累加器。注意:片外RAM不能与片内RAM直接传送数据!并只能通过A累加器作为中转。另外工作寄存器之间不能直接打交道,也要通过A累加器作为中转。但可以用直接寻址方式传送。所以还有三组专门与ACC打交道的数据交换指令。3.4.5 数据交换指令1. 字节交换指令XCH A, Rn ;工作寄存器内容与ACC内容交换XCH A, direct/SFR ;片内RAM/SFR内容与ACC内容交换XCH A,R

17、i ;地址在Ri中的片内RAM内容与ACC内容交换2. 低半字节交换指令XCHD A,Ri ;片内RAM的低4位与ACC的低4位数据交换3. 累加器ACC低4位与高4位交换SWAP A ;ACC的低4位与高4位数据交换3.4.6 栈操作指令源地址是直接地址,目的地址是隐含间接地址寄存器(SP)或目的地址是直接地址,源地址是隐含间接地址寄存器(SP) PUSH directPOP direct例如,进入中断服务程序时,通常需要保护现场,把ACC、PSW、DPTR等寄存器内容压栈保护,若SP=38HPUSH ACCPUSH PSWPUSH DPHPUSH DPL执行这4条指令后,SP=3CH在出中

18、断服务程序返回主程序之前,还要恢复现场,要注意堆栈先进后出的特点,出栈次序要相反。POP DPLPOP DPHPOP PSWPOP ACC3.5 控制转移指令3.5.1 无条件转移指令1. 长跳转指令 LJMP addr16(Long Jump)2. 短跳转指令 SJMP rel ;相对转移指令(Short Jump)3. 绝对跳转指令 AJMP addr11(Absolute Jump)该指令机器码构成如下: addr11 = a10 a9 a8 a7 a6 a5 a4 a3 a2 a1 a0这11位地址在机器码中作如下安排:机器码为 a10 a9 a8 0 0 0 0 1 a7 a6 a5

19、 a4 a3 a2 a1 a0操作码 01H 0 0 0 21H 0 0 1 41H 0 1 0 61H 0 1 1 81H 1 0 0 A1H 1 0 1 C1H 1 1 0 E1H 1 1 1实际转移地址是原PC中的地址的最高五位保持不变,低11位换上addr11。关键是如何得到操作码?例如1938H 11 00 KEYBD: ACALL DISUP 1B0AH 21 38 AJMP KEYBD1B0CH 1B97H 2138 AJMP KEYBD其地址高8位19H和1BH中的高5位相同。如何形成操作码?转移目的地址的高8位的最低3位+00001形成操作码,这里转移地址的高8位是19H,即

20、00011001,其后三位为 001 00001,为21H,其第二字节即转移地址的低8位。4. 散转指令 JMP A+DPTRDPTR中的基地址加上ACC中的无符号数形成有效转移地址。通过改变ACC中的内容便可转移到不同的分支,故称散转指令。如 根据ACC中的数值转移到不同分支去。(ACC中必须是偶数) MOV DPTR, #TABLE JMP A+DPTRTABLE: AJMP ROUT0 ; A=0 AJMP ROUT1 ; A=2 AJMP ROUT2 ; A=4 3.5.2 条件转移指令1. 进位/无进位转移指令(2字节相对转移指令) JC rel ; Cy = 1,则转移 JNC r

21、el ; Cy = 0,则转移 2. 累加器内容全零/非零转移指令(2字节相对转移指令) JZ rel ; (A) = 0,则转移 JNZ rel ; (A) 0,则转移 3. 比较不相等转移指令(3字节3操作数相对转移指令) CJNE A, #data, rel CJNE A, direct, rel CJNE R0, #data, rel CJNE R1, #data, rel CJNE Rn, #data, rel第一操作数与第二操作数相比较(比较即相减后不回送结果),若不相等,则转移,同时会影响Cy标志。当第一操作数小于第二操作数时,Cy=1;反之,Cy=0。利用此指令可实现程序三分支

22、。4. 减1不为零转移指令(相对转移) DJNZ Rn, rel ; 2字节指令 DJNZ direct, rel ; 3字节指令,direct可以是片内RAM任意字节地址。5. 位测试指令 JB bit, rel ;(bit)= 1, 则转移 JNB bit, rel ;(bit)= 0, 则转移 JBC bit, rel ;(bit)= 1, 则转移,同时该位清零3.5.2 子程序调用与返回指令1. 绝对调用指令 ACALL addr11其转移范围与AJMP相同。操作码形成把AJMP中的00001换成10001。AJMP 操作码 01,21,41,61,81,A1,C1,E1ACALL 操

23、作码 11,31,51,71,91,B1,D1,F12. 长调用指令 LCALL addr163. 返回指令 RET3.6 算术逻辑运算指令1. 加法指令:有带进位和不带进位两种加法指令 ADD A, Rn ADDC A, Rn ADD A, Ri ADDC A, Ri ADD A, direct ADDC A, direct ADD A, #data ADDC A, #data INC A INC Rn INC direct INC Ri INC DPTR DA A ; 十进制调整指令带进位加法指令主要用于多字节数的加法。例如 两个3字节无符号数相加被加数放在片内RAM的20H22H(低位在

24、前) 加数放在片内RAM的2AH2CH MOV R0, #20H ; 被加数首址 MOV R1, #2AH ; 加数首址 MOV R7, #03H ; 字节数 CLR C ; 清进位标志LOOP: MOV A, R0 ; 取被加数一个字节 ADDC A, R1 ; 与加数一个字节相加 MOV R0,A ; 暂存中间结果 INC R0 ; 调整地址指针 INC R1 DJNZ R7, LOOP ; 字节数-1,不为零转移 CLR A ADDC A, #00H ; 处理进位 MOV R0, A ; 存放进位于23H单元 SJMP $2. 带借位减法指令(Subtract Borrow) SUBB A, Rn SUBB A, Ri SUBB A, direct SUBB A, #data DEC A DEC Rn DEC direct DEC Ri3. 乘法指令 (单字节4机器周期指令)8位无符号数乘法 (Multiply) MUL AB ; BA AB,Cy=0,A和B中各放8位无符号数,指令执行后16位乘积的高8位在B中,低8位在A中。 例如,A=50H,B=A0H,执行 MUL AB 后,AB=3200H,B=32H,A=00H。 (80) (160) (12800)若 乘积 255时,OV = 14. 除法指令 (单字节4机器周期指令)8位无符号数除法 DI

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1