单片机原理及应用 第三章.ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《单片机原理及应用 第三章.ppt》由会员分享,可在线阅读,更多相关《单片机原理及应用 第三章.ppt(99页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第三章第三章MCS51单片微机的指令系统单片微机的指令系统3.1 MCS3.1 MCS5151指令及其表示方法指令及其表示方法 指令系统是根据单片机硬件电路确定的一组操作编码,指令系统是根据单片机硬件电路确定的一组操作编码,每一条指令完成一个特定的操作。指令系统设计是单片机每一条指令完成一个特定的操作。指令系统设计是单片机设计的一个组成部分,芯片制造厂在推出单片机的同时也设计的一个组成部分,芯片制造厂在推出单片机的同时也要提供指令系统,我们为了使用单片机就必须了解和熟悉要提供指令系统,我们为了使用单片机就必须了解和熟悉其指令系统。本节介绍指令的格式,指令的字节数等基本其指令系统。本节介绍指令的
2、格式,指令的字节数等基本知识。知识。一、机器语言指令与汇编语言指令一、机器语言指令与汇编语言指令 和一般的微机一样,指令具有两级形式,即机器语言指令和一般的微机一样,指令具有两级形式,即机器语言指令和汇编语言指令,指令的集合便是程序。例如作和汇编语言指令,指令的集合便是程序。例如作10+2010+20的运算的运算可采用下列二进制机器语言程序可采用下列二进制机器语言程序 :01110100B 00001010B 1601110100B 00001010B 16进制表示为进制表示为74H 0AH74H 0AH 00100100B 00010100B 00100100B 00010100B 24H
3、14H24H 14H 为了使用方便,用助记符来表示操作性质,并规定一定为了使用方便,用助记符来表示操作性质,并规定一定的书写格式,这样就形成了汇编语言级的指令和程序,例如的书写格式,这样就形成了汇编语言级的指令和程序,例如上述程序的汇编语言形式为:上述程序的汇编语言形式为:MOV AMOV A,#0AH#0AHADD AADD A,#14H#14H操作码操作数 上述程序中上述程序中MOVMOV为助记符,表示操作的性质是数据传送,助为助记符,表示操作的性质是数据传送,助记符后面的符号记符后面的符号A A为累加器为累加器ACCACC,是数据传送的,是数据传送的“目的目的”地址地址(地址为符号地址)
4、,(地址为符号地址),#0AH#0AH中前缀中前缀#表示表示0AH0AH为数据,处于此为数据,处于此位置的数据或符号(或不带位置的数据或符号(或不带#的数)是数据传送的的数)是数据传送的“源源”(或(或“源源”地址)。第二条指令的地址)。第二条指令的ADDADD表示加法操作。根据上例可知,表示加法操作。根据上例可知,汇编语言指令的格式为:汇编语言指令的格式为:标号:助记符标号:助记符 操作对象操作对象 指令中的操作对象可以是寄存器名、存贮器地址、数据指令中的操作对象可以是寄存器名、存贮器地址、数据(带有前缀(带有前缀#等),等),操作对象可以是操作对象可以是1 1个或个或2 2个、个、3 3个
5、个,例如上例,例如上例中两条指令均为两个操作对象,第一个为目的操作对象,第二中两条指令均为两个操作对象,第一个为目的操作对象,第二个为源操作对象。个为源操作对象。由于汇编语言指令不是机器代码,故编制好汇编语言程序后,由于汇编语言指令不是机器代码,故编制好汇编语言程序后,还需要再翻译成还需要再翻译成机器语言程序(称目标程序),机器语言程序(称目标程序),然后才能输入到然后才能输入到计算机的存贮器中去执行。机器语言程序主要由数码组成,它包计算机的存贮器中去执行。机器语言程序主要由数码组成,它包含两种不同性质的编码,一种是表示操作性质的数码含两种不同性质的编码,一种是表示操作性质的数码操作码,操作码
6、,另一种为表示某个数(或地址)的编码另一种为表示某个数(或地址)的编码操作数,所以机器语操作数,所以机器语言指令的格式为:言指令的格式为:地址地址 操作码操作码 操作数(操作数(0 02 2个)个)例如上述机器码程序例如上述机器码程序74H74H、24H24H为操作码,为操作码,0AH0AH、14H14H为操作为操作数,汇编语言指令与机器语言指令具有完全确定的关系,二者可数,汇编语言指令与机器语言指令具有完全确定的关系,二者可以互相转换。以互相转换。二、指令的格式二、指令的格式 指令是完成一种特定操作的命令。指令是完成一种特定操作的命令。一条指令由一个操作一条指令由一个操作码和几个操作数组成,
7、其中操作数可以是码和几个操作数组成,其中操作数可以是0 02 2个,在计算机中个,在计算机中以以8 8位二进制码为一个字节,各种编码均以字节为单位(即位二进制码为一个字节,各种编码均以字节为单位(即1616进制的进制的2 2位数)。位数)。单字节指令:单字节指令:双字节指令:双字节指令:三字节指令:三字节指令:操作码操作码操作数操作码第1操作数第2操作数二、指令的格式二、指令的格式 例如:例如:操作内容操作内容 汇编语言汇编语言 机器语言指令机器语言指令 累加器内容加累加器内容加1 INC A 000001001 INC A 00000100(04H04H)累加器内容取反累加器内容取反 CPL
8、 A 01011000CPL A 01011000(18H18H)MOV A MOV A,RnRn(n=0n=07 7););机器码为机器码为11101rrrb11101rrrb 式中式中 rrrrrr为为0707的二进制码的二进制码 MOV data MOV data,#data#data ;机器码为机器码为 75H75H datadata#data#data操作码操作码第一操作数第二操作数3.2 3.2 寻址方式寻址方式一、指令系统中使用的符号一、指令系统中使用的符号A A累加器;累加器;B B乘、除运算寄存器,亦可当作一般寄存器使用;乘、除运算寄存器,亦可当作一般寄存器使用;RnRn工作
9、寄存器工作寄存器n=0n=07 7;RiRi用于存放地址的工作寄存器用于存放地址的工作寄存器i=0i=0,1 1,亦称,亦称8 8位地址指位地址指针;针;DPTRDPTR1616位数据指针(由位数据指针(由DPHDPH,DPLDPL两个寄存器组成),存两个寄存器组成),存 放放1616位地址;位地址;以寄存器的内容为地址的前缀;以寄存器的内容为地址的前缀;rrr:rrr:R0 R0R7R7对应的对应的rrrrrr为为000000111111;dirdir(directdirect或或data)data)单片机内地址为单片机内地址为dirdir(directdirect或或data)data)的
10、通用寄存器;的通用寄存器;#data#data8 8位的数据;位的数据;#data16#data161616位的数据;位的数据;SPSP堆栈指针,其内容为堆栈栈顶的地址;堆栈指针,其内容为堆栈栈顶的地址;bitbit位操作中的一个位操作中的一个“位位”;C CPSWPSW中的最高位,亦称位累加器;中的最高位,亦称位累加器;addr11addr111111位地址;位地址;addr16addr161616位地址;位地址;relrel相对地址;相对地址;(X X)表示表示X X单元中的内容单元中的内容((X X))以以X(R0,R1,DPTRX(R0,R1,DPTR,dirdir等等)的内容为地址的
11、该单元的内容为地址的该单元内容;内容;其它其它特殊功能寄存器符号及其内部的特殊功能寄存器符号及其内部的“位位”符号符号。二、寻址方式二、寻址方式 计算机的各种操作都涉及到寄存器和存贮器,它们分计算机的各种操作都涉及到寄存器和存贮器,它们分布在片内和片外,数量很多,因此指令中必须明确指明是布在片内和片外,数量很多,因此指令中必须明确指明是哪一个寄存器或哪一个存贮单元,哪一个寄存器或哪一个存贮单元,寻址方式就是在指令中寻址方式就是在指令中给出的寻找操作数或操作数所在地址的方法。给出的寻找操作数或操作数所在地址的方法。执行任何一执行任何一条指令都需要使用操作数。条指令都需要使用操作数。MCSMCS5
12、151系列单片微机指令系系列单片微机指令系统中共有以下统中共有以下7 7种寻址方式。种寻址方式。1.1.立即寻址立即寻址 立即寻址是指在指令中直接给出参与操作的数,出现立即寻址是指在指令中直接给出参与操作的数,出现在指令中的这种操作数称为在指令中的这种操作数称为立即数立即数,这种寻址方式称为立,这种寻址方式称为立即寻址。为了与直接寻址指令中的直接地址相区别,在立即寻址。为了与直接寻址指令中的直接地址相区别,在立即数前面必须加上前缀即数前面必须加上前缀“#”。例如:指令例如:指令 MOV DPTRMOV DPTR,#1234H#1234H 其中其中1234H1234H就是立即数,指令功能是把就是
13、立即数,指令功能是把1616位立即数位立即数1234H1234H送入数据指针送入数据指针DPTRDPTR中。中。1.1.立即寻址立即寻址例如:指令例如:指令 MOV DPTRMOV DPTR,#1234H#1234H 机器语言指令机器语言指令:90 12 3490 12 34程序存储器程序存储器901234PCPCPC+1PC+1PC+2PC+2特殊功能寄存器特殊功能寄存器DPHDPHDPLDPL12342.2.直接寻址直接寻址 直接寻址是指在指令中直接给出直接寻址是指在指令中直接给出操作数单元的地址操作数单元的地址。例如:指令例如:指令 MOV AMOV A,3AH3AH 其功能是把片内其功
14、能是把片内RAMRAM中中3AH3AH单元内的数据传送给累加器单元内的数据传送给累加器A A。直接寻址方式只能给出直接寻址方式只能给出8 8位地址,因此这种寻址方式的寻址位地址,因此这种寻址方式的寻址范围只限于片内范围只限于片内RAMRAM。具体地说:。具体地说:(1 1)低低128128单元单元,在指令中直接以单元地址形式给出。,在指令中直接以单元地址形式给出。(2 2)特殊功能寄存器特殊功能寄存器,这时除可以单元地址形式给出外,这时除可以单元地址形式给出外,还可以寄存器符号形式给出。虽然特殊功能寄存器可以使用还可以寄存器符号形式给出。虽然特殊功能寄存器可以使用符号标志,但在指令代码中还是按
15、地址进行编码的。符号标志,但在指令代码中还是按地址进行编码的。例如:指令例如:指令 MOV A,B;MOV A,F0H;MOV A,B;MOV A,F0H;2.2.直接寻址直接寻址 (3)(3)位地址空间。位地址空间。特殊功能寄存器和位地址空间只能用直接寻址方式来访特殊功能寄存器和位地址空间只能用直接寻址方式来访问。问。例:指令:例:指令:MOV A,45H;MOV A,45H;机器代码:机器代码:E5 45E5 45程序存储器程序存储器E545PCPCPC+1PC+1片内片内RAMRAMXX45HXXA A3.3.寄存器寻址寄存器寻址 寄存器寻址是指在指令中寄存器寻址是指在指令中将指定寄存器
16、的内容作为操作数。将指定寄存器的内容作为操作数。因此指定了寄存器就能得到操作数。因此指定了寄存器就能得到操作数。寄存器寻址方式中,用符号名称来表示寄存器。寄存器寻址方式中,用符号名称来表示寄存器。例如:指令例如:指令INC R0INC R0 其功能是把寄存器其功能是把寄存器R0R0的内容加的内容加1 1,再送回,再送回R0R0中。由于操作中。由于操作数在数在R0R0中,指定了中,指定了R0R0,也就得到了操作数。,也就得到了操作数。寄存器寻址方式的寻址范围包括:寄存器寻址方式的寻址范围包括:(1 1)在指令中只能使用)在指令中只能使用当前寄存器组当前寄存器组。因此在使用中要通。因此在使用中要通
17、过指定过指定PSWPSW中的中的RS1RS1、RS0RS0,以选择使用的当前寄存器组。,以选择使用的当前寄存器组。(2 2)部分特殊功能寄存器部分特殊功能寄存器。例如。例如累加器累加器A A、B B寄存器、寄存器、C CY Y以以及数据指针及数据指针DPTRDPTR。3.3.寄存器寻址寄存器寻址 例如:指令例如:指令 MOV AMOV A,R3R3;机器代码:机器代码:EBEB 设累加器设累加器A A 的内容为的内容为28H28H,R3R3的内容为的内容为58H58H。PSWPSW中中RS1RS1,RS0RS0分别为:分别为:1 1、0 0。则。则R3R3的地址为的地址为13H13H。程序存储
18、器程序存储器EBPCPC片内片内RAMRAM5813H(R3)28HA A58H4.4.寄存器间接寻址寄存器间接寻址 寄存器间接寻址是指在指令中寄存器间接寻址是指在指令中给出的寄存器内容是操作数的给出的寄存器内容是操作数的地址地址,从该地址中取出的才是操作数。寄存器间接寻址也需以寄,从该地址中取出的才是操作数。寄存器间接寻址也需以寄存器符号名称的形式表示,为了区别寄存器寻址和寄存器间接寻存器符号名称的形式表示,为了区别寄存器寻址和寄存器间接寻址,在寄存器间接寻址中,应在寄存器的名称前面加前缀址,在寄存器间接寻址中,应在寄存器的名称前面加前缀“”。例如:指令例如:指令MOV A,R0;机器代码机
19、器代码E6程序存储器程序存储器片内片内RAMRAM5E00H(R0)XXA AE6PCPC5EHXX寄存器间接寻址的寻址范围:寄存器间接寻址的寻址范围:(1 1)片内片内RAMRAM的低的低128128单元单元,只能采用,只能采用R0R0或或R1R1作为间址寄存作为间址寄存器,其形式为器,其形式为Ri(i=0Ri(i=0,1)1),例:,例:MOVA,R0;(2 2)片外片外RAMRAM的的64KB64KB单元单元,使用,使用DPTRDPTR作为间址寄存器,其形作为间址寄存器,其形式为式为DPTRDPTR,例如:,例如:MOVX AMOVX A,DPTR,DPTR,其功能是把其功能是把DPTR
20、DPTR指定指定的片外的片外RAMRAM单元的内容送累加器单元的内容送累加器A A。(3 3)片外片外RAMRAM的的256256单元单元,除了可使用,除了可使用DPTRDPTR作为间址寄存器作为间址寄存器外,也可使用外,也可使用R0R0或或R1R1作间址寄存器。例如作间址寄存器。例如MOVX AMOVX A,R0;R0;(4 4)堆栈区:堆栈区:堆栈操作指令(堆栈操作指令(PUSHPUSH和和POPPOP)也应算作是寄存)也应算作是寄存器间接寻址,即以堆栈指针(器间接寻址,即以堆栈指针(SPSP)作间址寄存器的间接寻址方)作间址寄存器的间接寻址方式。式。5.5.变址寻址变址寻址 变址寻址是指
21、以变址寻址是指以DPTRDPTR或或PCPC作基址寄存器作基址寄存器,累加器累加器A A作变址作变址寄存器寄存器,以两者内容相加,形成的,以两者内容相加,形成的1616位程序存储器地址作为位程序存储器地址作为操作数地址,又称操作数地址,又称基址寄存器基址寄存器+变址寄存器间接寻址变址寄存器间接寻址。有效地址有效地址=基址寄存器基址寄存器PCPC(或(或DPTRDPTR)+A+A 例如:指令例如:指令 MOVC A,MOVC A,A+DPTRA+DPTR 机器代码机器代码 93 93 假定指令执行前(假定指令执行前(A A)=54H=54H,(DPTRDPTR)=1256H=1256H 变址寻址
22、形成的操作数地址为变址寻址形成的操作数地址为1256H+54H=12AAH1256H+54H=12AAH,若,若12AAH12AAH单元的内容为单元的内容为00H00H,则该指令执行的结果是,则该指令执行的结果是A A的内容为的内容为00H00H。程序存储器程序存储器54A A93PCPCSFRSFR56DPLDPH121256H54H12AAH12AAH0000例如:指令例如:指令MOVC A,A+DPTR机器代码机器代码93 变址寻址指令有:变址寻址指令有:MOVC A,A+DPTR;A ((A)+(DPTR))MOVC A,A+PC;PC PC+1,A ((A)+(PC))JMP A+D
23、PTR;PC (A)+(DPTR)变址寻址方式用于查表操作。变址寻址方式用于查表操作。6.6.相对寻址相对寻址 相对寻址是仅用于相对转移指令的一种寻址方式。与其他相对寻址是仅用于相对转移指令的一种寻址方式。与其他寻址方式不同,这种寻址方式是要寻找指令地址,即寻找下一寻址方式不同,这种寻址方式是要寻找指令地址,即寻找下一条要执行指令的地址。相对寻址的有效地址条要执行指令的地址。相对寻址的有效地址D D(目的地址)为:(目的地址)为:D=PC+relD=PC+rel PC PC的当前值称为源地址,它是相对转移指令操作码的地址;的当前值称为源地址,它是相对转移指令操作码的地址;relrel是相对地址
24、是相对地址,它是目的地址与源地址的差值。,它是目的地址与源地址的差值。相对地址的机器码称为偏移量,记为相对地址的机器码称为偏移量,记为dispdisp,它与,它与relrel的关系的关系是:是:dipsdipsrel-brel-b 目的地址目的地址=源地址源地址+转移指令字节数转移指令字节数+dips+dips 若转移指令为若转移指令为2 2字节,则字节,则b b2 2;若转移指令为;若转移指令为3 3字节,则字节,则b=3b=3。偏移量为一字节二进制补码数,取值范围为偏移量为一字节二进制补码数,取值范围为-128-128一一+127+127。相对。相对地址取值范围为地址取值范围为-126-1
25、26+129+129。在源程序中,相对地址。在源程序中,相对地址relrel一般一般用标号表示。用标号表示。6.6.相对寻址相对寻址(参考)例如:指令参考)例如:指令 JC 18H JC 18H ;设;设C CY Y=1=1,操作码的地址为,操作码的地址为1000H1000H。机器代码机器代码 40 1640 16 程序存储器程序存储器161001H1000PCPC1000H4016H1000H+21018H1018H1018H6.6.相对寻址相对寻址 例:例:设有如下一段程序,试写出与设有如下一段程序,试写出与JNZ LET0JNZ LET0相对应的机器相对应的机器代码。代码。地址地址 机器
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机原理及应用 第三章 单片机 原理 应用 第三
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内