1、1,寻址方式 数据传送类指令 算术运算类指令 逻辑操作类指令 控制转移类指令 位操作指令 常用伪指令,第 章 MCS 51 指令系统,本章内容,Single Chip Microcomputer,2,指令概述,指令按字节长度可以分为三种:,指令格式,指令的格式:,例如: MOV A,R0,例如:MOV A,30H,例如:MOV DPTR,#2010H,3,一、寻址方式(找信方式),我的信在他那!找信去!,注:找信是寻找信的“地址”!,你能说出第二封信的“地址”吗?,4,目的地,#XXH,操作数,MOV P1, #55H,MOV A, #01H,#55H,目的地,信,寄存器寻址,直接寻址,立即数
2、寻址,寄存器间接寻址,变址寻址,相对寻址,位寻址,5,目的地,寄存器寻址,直接寻址,立即数寻址,寄存器间接寻址,变址寻址,相对寻址,位寻址,内部RAM 或SFR区,操作数,XXH,MOV P1, 20H,20H,目的地,20H,注:寻址是寻操作数的“地址”!,直接给出地址 20H直接寻址,6,目的地,寄存器寻址,直接寻址,立即数寻址,寄存器间接寻址,变址寻址,相对寻址,位寻址,寄存器,目的地,操作数,XXH,MOV P1, A,寄存器,R0-R7A B DPTR,你能说出为什么叫寄存器寻址吗?,7,寄存器寻址,直接寻址,立即数寻址,寄存器间接寻址,变址寻址,相对寻址,位寻址,MOV P1, R
3、0,目的地,寄存器,操作数,3AH,内部RAM,3AH,65H,3AH,R0R1DPTR,目的地,2号,信在2号箱子里,1号,你能说出1号箱子和2号箱子分别对应内存中哪一部分吗?,8,寻址比较,MOV P1,R0,MOV P1,R0,MOV P1,20H,MOV P1,#20H,MOV P1,R0,9,寻址比较,MOV P1,R0,MOV P1,R0,MOV P1,20H,MOV P1,#20H,MOV P1,R0,10,寻址比较,MOV P1,R0,MOV P1,R0,MOV P1,20H,MOV P1,#20H,MOV P1,20H,11,寻址比较,MOV P1,R0,MOV P1,R0,
4、MOV P1,20H,MOV P1,#20H,MOV P1,#20H,12,寄存器寻址,直接寻址,立即数寻址,寄存器间接寻址,变址寻址,相对寻址,位寻址,MOVC A, A+DPTR,目的地,寄存器,操作数,内部RAM,3AH,65H,3AH,基址寄存器 12H,变址寄存器 34H,内部RAM,46H,65H,A,DPTRPC,46H,13,目的地,寄存器寻址,直接寻址,立即数寻址,寄存器间接寻址,变址寻址,相对寻址,XXH,位寻址,操作数,SJMP 54H,PC,+,54H,PC,2002H,2002H =2056H,PC,2056H,14,寄存器寻址,直接寻址,立即数寻址,寄存器间接寻址,
5、变址寻址,相对寻址,位寻址,1,0 0 0 0 0 0 0 0,想一想: 如果想使27H单元的第3位置1,该怎么办呢?,15,位寻址地址表,例:SETB 3DH,3D,3C,3B,3F,3E,3A,39,38,27H,16,寄存器寻址,直接寻址,立即数寻址,寄存器间接寻址,变址寻址,相对寻址,位寻址,SETB 3DH,0 0 0 0 0 0 0,1,0,17,二、指令系统,1、指令描述约定,18,2、MCS-51的指令,2.1 数据传送指令(29条) 2.2 算术运算指令(24条) 2.3 逻辑运算指令(24条) 2.4 控制转移指令(17条) 2.5 位操作指令(17条) 2.6 常用伪指令
6、(17条),19,目的地址 源地址,数 据,MOV ,MOV A,#20H,,,MOV,20H,A,2.1 数据传送指令(29条) 8位数据传送指令(15条),20,2.1 数据传送指令(29条) 16位数据传送指令(1条),MOV DPTR,#data16,外部数据传送指令(4条),MOVX ,,,MOVX,21,交换和查表类指令(9条),,,A,XCH,1)字节交换指令(3条),2)低半字节交换指令(1条),XCHD A , Ri,3)累加器A中高4位和低4位交换(1条),SWAP A,4)查表指令(2条),MOVC A , A+PC,MOVC A , A+DPTR,5)堆栈操作指令(2条
7、),PUSH direct,POP direct,22,direct,2.2算术运算类指令(24条) 加法指令(8条),A ,,Rn,Ri,#data,ADD,direct,A ,,Rn,Ri,#data,ADDC,减法指令(4条),direct,A ,,Rn,Ri,#data,SUBB,BCD码调整指令(1条),DA A,注意:DA A指令只能跟在ADD或ADDC 加法指令后,不适用于减法指令。,23,加1减1指令,24,乘法指令(1条),MUL A B,除法指令(1条),DIV A B,2.3逻辑及移位类指令 逻辑与指令(6条),25,逻辑或指令(6条),26,逻辑异或指令(6条),27,
8、累加器A清0和取反指令,28,A.0,A.7,A.0,A.7,A.0,A.7,A.0,A.7,CY,CY,RL ARR ARLC ARRC A,注意:执行带进位的循环移位指令之前,必须给CY置位或清零。,循环移位指令,29,2.4 控制转移类指令 无条件转移指令(4条),1) 长转移指令:LJMP AAAAH ; AAAAHPC,PC=0000H,PC=AAAAH,假设执行该指令前,PC的值为0000H。,注意:该指令可以转移到64 KB程序存储器中的任意位置。,30,PC高5位 (保持不变),PC低11位,操作码(第一字节),操作数(第二字节),11位转移地址的形成示意图,程序计数器PC,2
9、)绝对转移指令,AJMP addr11 ; PC+2PC, addr11 PC.10PC.0,31,PC,2002H,2003H,0000H,0001H,2004H,2005H,2006H,PC,PC,PC,2006H,2003H,PC,0002H,PC,3)相对转移指令,例: SJMP 03H,03H就是当前PC值 与目的PC值相对差,PC,32,条件转移指令(8条) 1)累加器A判0指令(2条),2)减1非零转移指令(2条),33,3)比较转移指令(4条),34,条件转移类指令范例方案一,还有什么方法实现循环的终止?,将00H0FH这16个数顺序地置入片内RAM20H2FH单元中。MOV
10、R0,#20HMOV R7,#0FHCLR A LOOP:MOV R0,AINC AINC R0DJNZ R7,LOOPSJMP $,35,条件转移类指令范例方案二,MOV R0,#20HMOV R7,#0FHCLR A LOOP:MOV R0,AINC AINC R0CJNE A,#0FH,LOOPSJMP $,36,条件转移类指令范例方案三,MOV R0,#20HMOV A,#0FHMOV 30H,#00H LOOP:MOV R0,30HINC 30HINC R0DEC AJNZ LOOPSJMP $,37,条件转移类指令范例方案四,MOV R0,#20HMOV A,#0FHMOV 30H
11、,#00H LOOP:MOV R0,30HINC 30HINC R0SUBB A,#01HJNC LOOPSJMP $,38,调用和返回指令(8条) 1)绝对调用指令(1条),2)长调用指令(1条),39,3)返回指令,4)空操作,40,2.5 位操作类指令,RAM 位寻址区位地址表,41,2.位置位和位清零指令,1.位传送指令,42,3.位运算指令,4.位转移指令,43,5.判CY标志指令,44,常用伪指令,定位伪指令ORG 定义字节数据伪指令DB 定义字数据伪指令DW 定义空间伪指令DS 符号定义伪指令EQU或 数据赋值伪指令DATA 数据地址赋值伪指令XDATA 汇编结束伪指令END,4
12、5,练习1,设内部RAM中33H单元中内容为44H,34H单元中内容为0AFH,R0中内容为33H,R1中内容为00H,给出以下每一条指令执行后A中的值和PSW中P的值。MOV A, #34HMOV A, 34HMOV A, R1MOV A,R0注意:对PSW中P标志的影响。,46,练 习 2,设内部RAM30H单元中内容为52H,请给出以下程序结果:MOV A, #30H MOV A, 30HMOV R0, #30HMOV A, R0MOV 30H, #30H 设P1口内容为0AAH(P1口地址为90H),请给出以下程序结果:MOV R0, #30HMOV 10H, P1MOV A, 10HMOV R0, AMOV 40H, R0,47,本章主要知识点,指令的七种寻址方式。 难点:寄存器间接寻址 各类指令的主要功能。 难点:查表指令 难点:条件转移指令 作业: 3.5 3.6 3.10 3.13 3.16,