单片机原理及应用(胡乾斌)第三章

上传人:mg****85 文档编号:50733914 上传时间:2018-08-10 格式:PPT 页数:97 大小:406.50KB
返回 下载 相关 举报
单片机原理及应用(胡乾斌)第三章_第1页
第1页 / 共97页
单片机原理及应用(胡乾斌)第三章_第2页
第2页 / 共97页
单片机原理及应用(胡乾斌)第三章_第3页
第3页 / 共97页
单片机原理及应用(胡乾斌)第三章_第4页
第4页 / 共97页
单片机原理及应用(胡乾斌)第三章_第5页
第5页 / 共97页
点击查看更多>>
资源描述

《单片机原理及应用(胡乾斌)第三章》由会员分享,可在线阅读,更多相关《单片机原理及应用(胡乾斌)第三章(97页珍藏版)》请在金锄头文库上搜索。

1、第三章MCS51单片微机的指令系统 3.1 MCS51指令及其表示方法指令系统是根据单片机硬件电路确定的一组操作编码,每一条指令完成一个特定的操作。指令系统设计是单片机设计的一个组成部分,芯片制造厂在推出单片机的同时也要提供指令系统,我们为了使用单片机就必须了解和熟悉其指令系统。本节介绍指令的格式,指令的字节数等基本知识。 一、机器语言指令与汇编语言指令 和一般的微机一样,指令具有两级形式,即机器语言指令和汇编语言指令,指令的集合便是程序。例如作10+20的 运算可采用下列二进制机器语言程序 :01110100B 00001010B 16进制表示为74H 0AH00100100B 000101

2、00B 24H 14H为了使用方便,用助记符来表示操作性质,并规定一定的书写格式,这样就形成了汇编语言级的指令和程序, 例如上述程序的汇编语言形式为: MOV A, #0AHADD A, #14H操作码操作数上述程序中MOV为助记符,表示操作的性质是数据传送,助记符后面的符号A为累加器ACC,是数据传送的“目的”地址( 地址为符号地址),#0AH中前缀# 表示0AH为数据,处于此位 置的数据或符号(或不带#的数)是数据传送的“源”(或“源 ”地址)。第二条指令的ADD表示加法操作。根据上例可知,汇 编语言指令的格式为:标号:助记符 操作对象指令中的操作对象可以是寄存器名、存贮器地址、数据(带有

3、前缀#等),操作对象可以是1个或2个、3个,例如上例 中两条指令均为两个操作对象,第一个为目的操作对象,第二 个为源操作对象。由于汇编语言指令不是机器代码,故编制好汇编语言程序后,还需要再翻译成机器语言程序(称目标程序),然后才能输入 到计算机的存贮器中去执行。机器语言程序主要由数码组成,它 包含两种不同性质的编码,一种是表示操作性质的数码操作 码,另一种为表示某个数(或地址)的编码操作数,所以机 器语言指令的格式为:地址 操作码 操作数(02个)例如上述机器码程序74H、24H为操作码,0AH、14H为操作数,汇编语言指令与机器语言指令具有完全确定的关系,二者可 以互相转换。二、指令的格式指

4、令是完成一种特定操作的命令。 一条指令由一个操作码和几个操作数组成,其中操作数可以是02个,在计算 机中以8位二进制码为一个字节,各种编码均以字节为单位 (即16进制的2位数)。单字节指令:双字节指令:三字节指令:操作码操作码操作数操作码第1操作数第2操作数二、指令的格式例如:操作内容 汇编语言 机器语言指令累加器内容加1 INC A 00000100(04H)累加器内容取反 CPL A 01011000(18H)MOV A ,Rn(n=07); 机器码为11101rrrb式中 rrr为07的二进制码MOV data , #data ; 机器码为 75H data #data操作码操作码第一操

5、作数第二操作数3.2 寻址 方式一、指令系统中使用的符号A累加器;B乘、除运算寄存器,亦可当作一般寄存器使用;Rn工作寄存器n=07;Ri用于存放地址的工作寄存器i=0,1,亦称8位地址指 针;DPTR16位数据(地址)指针(由DPH,DPL两个寄存器 组成),存放16位地址;以寄存器的内容为地址的前缀;rrr: R0R7对应的rrr为000111;dir(direct或data)单片机内地址为dir(direct或data) 的通用寄存器; #data8位的数据;#data1616位的数据; SP堆栈指针,其内容为堆栈栈顶的地址; bit位操作中的一个“位”; CPSW中的最高位,亦称位累加

6、器; addr1111位地址; addr1616位地址; rel相对地址; (X)以X(R0,R1,DPTR,dir等)的内容为地址的该单元内 容;其它特殊功能寄存器符号及其内部的“位”符号。 二、寻址方式计算机的各种操作都涉及到寄存器和存贮器,它们分布在片内和片外,数量很多,因此指令中必须明确指明是哪一个寄存器或哪一个存贮单元,寻址方式就是在指令中给出的寻找操作数或操作数所在地址的方法。执行任何一条指令都需要使用操作数。MCS51系列单片微机指令系统中共有以下7种寻址方式。1.立即寻址立即寻址是指在指令中直接给出参与操作的数,出现在指令中的这种操作数称为立即数,这种寻址方式称为立即寻址。为了

7、与直接寻址指令中的直接地址相区别,在立即数前面必须加上前缀“#”。例如:指令 MOV DPTR, #1234H其中1234H就是立即数,指令功能是把16位立即数1234H送入数据指针DPTR中。1.立即寻址例如:指令 MOV DPTR, #1234H机器语言指令: 90 12 34程 序 存 储 器901234P CP C + 1P C + 2特殊功能 寄存器D P HD P L12342.直接寻址直接寻址是指在指令中直接给出操作数单元的地址。例如:指令 MOV A, 3AH其功能是把片内RAM中3AH单元内的数据传送给累加器A。直接寻址方式只能给出8位地址,因此这种寻址方式的 寻址范围只限于

8、片内RAM。具体地说:(1)低128单元,在指令中直接以单元地址形式给出。(2)特殊功能寄存器,这时除可以单元地址形式给出外,还可以寄存器符号形式给出。虽然特殊功能寄存器可 以使用符号标志,但在指令代码中还是按地址进行编码的 。例如:指令 MOV A,B ; MOV A,F0H ;2.直接寻址(3)位地址空间。特殊功能寄存器和位地址空间只能用直接寻址方式来访问。例:指令: MOV A,45H ; 机器代码:E5 45程 序 存 储 器E545P CP C + 1片 内 R A MXX45HXXA3.寄存器寻址 寄存器寻址是指在指令中将指定寄存器的内容作为操作数 。因此指定了寄存器就能得到操作数

9、。寄存器寻址方式中,用符号名称来表示寄存器。例如:指令INC R0其功能是把寄存器R0的内容加1,再送回R0中。由于操 作数在R0中,指定了R0,也就得到了操作数。寄存器寻址方式的寻址范围包括:(1)在指令中只能使用当前寄存器组。因此在使用中要 通过指定PSW中的RS1、RS0,以选择使用的当前寄存器组。(2)部分特殊功能寄存器。例如累加器A、B寄存器、CY 以及数据指针DPTR。3.寄存器寻址 例如:指令 MOV A,R3;机器代码:EB设累加器A 的内容为28H,R3的内容为58H。PSW中RS1, RS0分别为:1、0。则R3的地址为13H。程 序 存 储 器EBP C片 内 R A M

10、5813H (R3)28 HA58H4.寄存器间接寻址 寄存器间接寻址是指在指令中给出的寄存器内容是操作数的地址,从该地址中取出的才是操作数。寄存器间接寻址也需以寄存器符号名称的形式表示,为了区别寄存器寻址和寄存器间接寻址,在寄存器间接寻址中,应在寄存器的名称前面加前缀“”。例如:指令 MOV A , R0 ;机器代码 E6程 序 存 储 器片 内 R A M5E00H (R0)XXAE6P C5EHXX寄存器间接寻址的寻址范围:(1)片内RAM的低128单元,只能采用R0或R1作为间址寄存 器,其形式为Ri(i=0,1),例: MOV A,R0;(2)片外RAM的64KB单元,使用DPTR作

11、为间址寄存器,其形 式为DPTR,例如:MOVX A,DPTR,其功能是把DPTR指定的片外RAM单元的内容送累加器A。(3)片外RAM的256单元,除了可使用DPTR作为间址寄存器 外,也可使用R0或R1作间址寄存器。例如MOVX A,R0; (4)堆栈区:堆栈操作指令(PUSH和POP)也应算作是寄存器间接寻址,即以堆栈指针(SP)作间址寄存器的间接寻址方 式。5.变址寻址 变址寻址是指以DPTR或PC作基址寄存器,累加器A作变址寄存器,以两者内容相加,形成的16位程序存储器地址 作为操作数地址,又称基址寄存器+变址寄存器间接寻址。有效地址=基址寄存器PC(或DPTR)+A例如:指令 MO

12、VC A,A+DPTR机器代码 93 假定指令执行前(A)=54H, (DPTR)=1256H变址寻址形成的操作数地址为1256H+54H=12AAH,若12AAH单元的内容为00H,则该指令执行的结果是A的内容为 00H。 程 序 存 储 器54A 93P CS F R56DPLDPH121256H54H12AAH12AAH0000例如:指令 MOVC A, A+DPTR机器代码 93 变址寻址指令有:MOVC A , A+DPTR; (A+DPTR) AMOVC A , A+PC; PC+1 PC,( A+PC ) AJMP A+DPTR; ( A+DPTR ) PC变址寻址方式用于查表操

13、作。6.相对寻址相对寻址是仅用于相对转移指令的一种寻址方式。与其 他寻址方式不同,这种寻址方式是要寻找指令地址,即寻找 下一条要执行指令的地址。相对寻址的有效地址D(目的地址 )为:D=PC+relPC的当前值称为源地址,它是相对转移指令操作码的地 址;rel是相对地址,它是目的地址与源地址的差值。相对地址的机器码称为偏移量,记为disp,它与rel的关 系是:dipsrel-b目的地址=源地址+转移指令字节数+dips若转移指令为2字节,则b2;若转移指令为3字节,则 b=3。偏移量为一字节二进制补码数,取值范围为-128一+127 。相对地址取值范围为-126+129。在源程序中,相对地址

14、 rel一般用标号表示。6.相对寻址例如:指令 JC 18H ;设CY=1,操作码的地址为1000H 。机器代码 40 16程 序 存 储 器161001H1000P C1000H40 16H1000H+21018H1018H1018H6.相对寻址例: 设有如下一段程序,试写出与JNZ RET0相对应的机 器代码。地址 机器代码 标号 源程序0152H 70 XX JNZ RET0(A0,PC 016CH ) 016CH DO E0 RET0: POP A 解:源地址=0152H,目的地址=016CHrel=D-PC=016CH-0152H=1AHdisp=rel-2=1AH-2=18H186

15、.相对寻址例: 设有如下一段程序,试写出与DJNZ R7,ML2相对 应的机器代码。地址 机器代码 标号 源程序0110H CO DO ML2: PUSH PSW011BH DF XX DJNZ R7,ML2解:源地址= 011BH ,目的地址= 0110H rel=D-PC= 0110H - 011BH = - 0BH - 0BH补=F5Hdisp=rel-2=F5H-2=F3HF37.位寻址 8051有位处理功能,可以对数据位进行操作,因此就有相应的位寻址方式,位寻址的寻址范围:(1)RAM中的位寻址区片内RAM中的单元地址20H-2FH,共16个单元128位,为位寻址区,位地址是00H-7FH。对这128个位的寻址使用直接 位地址表示。例如 MOV C,2

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号