单片机第3章3_第1页
单片机第3章3_第2页
单片机第3章3_第3页
单片机第3章3_第4页
单片机第3章3_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、3.4.4 控制转移类指令(控制转移类指令(17条)条)3.4.5 位操作指令(位操作指令(17条)条)3.4 mcs-51指令系统的分类介绍指令系统的分类介绍v 一个计算机一个计算机“智商智商”的高低,取决于它的转移类指的高低,取决于它的转移类指令的多少,特别是令的多少,特别是条件转移条件转移指令的多少。计算机运行过指令的多少。计算机运行过程中,有时因为操作的需要,程序不能按顺序逐条执行程中,有时因为操作的需要,程序不能按顺序逐条执行指令,需要指令,需要改变程序的运行方向改变程序的运行方向,即将程序跳转到某个,即将程序跳转到某个指定的地址再顺序执行下去。某些指令具有指定的地址再顺序执行下去。

2、某些指令具有修改程序计修改程序计数器数器pcpc内容内容的功能,因为的功能,因为pcpc内容是将要执行的下一条指内容是将要执行的下一条指令的地址,所以计算机执行这类指令就能够控制程序转令的地址,所以计算机执行这类指令就能够控制程序转移到新的地址上去执行。移到新的地址上去执行。xtal218xtal119ale30ea31psen29rst9p0.0/ad039p0.1/ad138p0.2/ad237p0.3/ad336p0.4/ad435p0.5/ad534p0.6/ad633p0.7/ad732p1.01p1.12p1.23p1.34p1.45p1.56p1.67p1.78p3.0/rxd1

3、0p3.1/txd11p3.2/int012p3.3/int113p3.4/t014p3.7/rd17p3.6/wr16p3.5/t115p2.7/a1528p2.0/a821p2.1/a922p2.2/a1023p2.3/a1124p2.4/a1225p2.5/a1326p2.6/a1427u1at89c51c11nfx1crystalc21nfc322ufresistorresistorr11kd1led-redresistorresistorr2220d2led-redd3led-redd4led-redresistorresistorr4220resistorresistorr5220

4、resistorresistorr6220d5led-redd6led-redd7led-redresistorresistorr3220resistorresistorr7220resistorresistorr8220resistorresistorr9220d9led-red源程序与机器码:源程序与机器码:转移的实质就是转移的实质就是pc得到一个新的值:目标地址得到一个新的值:目标地址执行完本指令,希望pc=0100h学习方法及要求:学习方法及要求: 在这个场景中,将会有三个角色出现:编程者、汇编程在这个场景中,将会有三个角色出现:编程者、汇编程序及序及cpu。 编程者写出如编程者写出如

5、sjmp loop这样的指令,表达想要转移这样的指令,表达想要转移的意愿以及转向何处;的意愿以及转向何处; 汇编程序将指令汇编成机器码;汇编程序将指令汇编成机器码; cpu则依据对机器码的译码最终将目标地址赋给则依据对机器码的译码最终将目标地址赋给pc。要求:要求: 会写不同的转移指令,掌握各转移指令的含义及使用会写不同的转移指令,掌握各转移指令的含义及使用条件。条件。 了解转移指令的汇编过程。了解转移指令的汇编过程。 了解了解cpu对转移指令的执行过程。对转移指令的执行过程。3.4.4 控制转移类指令(控制转移类指令(17条)条)无条件转移指令(无条件转移指令(4条条)空操作指令(空操作指令

6、(1条)条)条件转移指令(条件转移指令(8条)条)调用和返回指令调用和返回指令3.4.4 3.4.4 控制转移类指令(控制转移类指令(1717条)条)3.4.4 3.4.4 控制转移类指令(控制转移类指令(1717条)条)v无条件转移指令是当程序执行到该指令时,程序无条无条件转移指令是当程序执行到该指令时,程序无条件的转移到指令所提供的地址处执行。无条件转移指件的转移到指令所提供的地址处执行。无条件转移指令有长转移、短转移、相对转移和间接转移令有长转移、短转移、相对转移和间接转移4 4条指令。条指令。vajmp addr11vljmp addr16vsjmp relvjmp a+dptr1.

7、1. 无条件转移无条件转移 (4 4条)条)3.4.4 3.4.4 控制转移类指令(控制转移类指令(1717条)条)(1) (1) 长转移指令长转移指令ljmp addr16v对于编程者:它是一条可以转向对于编程者:它是一条可以转向64k64k空间任一地址的转空间任一地址的转移。助记符后通常直接写目标行号。移。助记符后通常直接写目标行号。v对与汇编程序:汇编后它有三个字节,操作码是对与汇编程序:汇编后它有三个字节,操作码是02h,02h,而其后的两个字节分别是目标地址的高、低字节。而其后的两个字节分别是目标地址的高、低字节。v对与对与cpucpu:当它取得操作码:当它取得操作码02h02h后,

8、紧跟其后获取的两后,紧跟其后获取的两个字节被送往个字节被送往pcpc,所以,本指令执行完,所以,本指令执行完,pc=pc=目标地址。目标地址。例如:例如: 3.4.4 3.4.4 控制转移类指令(控制转移类指令(1717条)条)(2) (2) 近转移指令近转移指令ajmp addr11v对于编程者:它是一条可以转向对于编程者:它是一条可以转向2k2k空间某地址的转移。空间某地址的转移。助记符后通常直接写目标行号。助记符后通常直接写目标行号。v对与汇编程序:汇编后它有两个字节,操作码的是后对与汇编程序:汇编后它有两个字节,操作码的是后五位是五位是00001,00001,而其余的而其余的1111位

9、来自目标地址的后位来自目标地址的后1111位,位,格式为(格式为(a10a9a8 00001a10a9a8 00001)(a7(a7a0)a0)。v对与对与cpucpu:当它取得操作码,发现后五位是:当它取得操作码,发现后五位是0000100001后,后,接着获取下一个字节的机器码,执行(接着获取下一个字节的机器码,执行(pcpc)+2+2(pcpc),),addr11addr11(pc10-0pc10-0)。程序计数器赋予新值)。程序计数器赋予新值- -(pc15-11pc15-11)不改变,低)不改变,低1111位地址来自指令的标号地位地址来自指令的标号地址址 。3.4.4 3.4.4 控

10、制转移类指令(控制转移类指令(1717条)条)(3) (3) 短转移指令短转移指令sjmp relv对于编程者:目标地址可以在这条指令的前对于编程者:目标地址可以在这条指令的前128b128b到后到后127b127b之间。助记符后通常仍然直接写目标行号。之间。助记符后通常仍然直接写目标行号。v对与汇编程序:汇编后它有两个字节,操作码是对与汇编程序:汇编后它有两个字节,操作码是80h,80h,而而其余一个字节表明转移的相对偏移量,用其余一个字节表明转移的相对偏移量,用relrel表示。表示。v 汇编时汇编时rel=rel=目标地址目标地址- -(源地址(源地址+2+2)v对与对与cpucpu:当

11、它取得操作码为:当它取得操作码为80h80h后,紧跟着获取的一个后,紧跟着获取的一个字节字节relrel被用来计算新的被用来计算新的pcpc值。值。v 执行时新的执行时新的pc=pc=(pcpc)当前)当前+2+rel +2+rel v = =源地址源地址+2+2+目标地址目标地址- -(源地址(源地址+2+2)v = =目标地址目标地址3.4.4 3.4.4 控制转移类指令(控制转移类指令(1717条)条)补:指令系统的寻址方式补:指令系统的寻址方式 相对寻址是相对寻址是以程序计数器以程序计数器pcpc的的当前值当前值(指读出该指读出该2 2字节或字节或3 3字节的跳转指令后,字节的跳转指令

12、后,pcpc指向的下条指令的地址指向的下条指令的地址)为基准,加为基准,加上指令中给出的相对偏移量上指令中给出的相对偏移量 rel rel 形成目标地址的寻址方式形成目标地址的寻址方式 。该类寻址方式主要用于跳转指令。该类寻址方式主要用于跳转指令。目的地址目的地址= =转移指令所在的地址转移指令所在的地址 + + 转移指令的字节数转移指令的字节数+ rel+ rel 偏移量偏移量relrel是一带符号的是一带符号的8 8位二进制数补码数位二进制数补码数范围是:范围是:128 b128 b +127b +127b 设指令设指令sjmp 54h的机器码的机器码80h 54h存放在存放在2000h处

13、,当处,当执行到该指令时,先从执行到该指令时,先从2000h和和2001h单元取出指令,单元取出指令,pc自动自动变为变为2002h;再把;再把pc的内容与操作数的内容与操作数54h相加,形成目标地址相加,形成目标地址2056h,再送回,再送回pc,使得程序跳转到,使得程序跳转到2056h单元继续执行。单元继续执行。补:指令系统的寻址方式补:指令系统的寻址方式偏移量偏移量relrel是一是一带符号带符号的的8 8位二进制数补码数的说明:位二进制数补码数的说明:1.1.范围是:范围是: 128 b128 b +127b+127b2.2.目标地址与源地址的大小关系不定目标地址与源地址的大小关系不定

14、 当目标地址大于源地址,则向下转移,当目标地址大于源地址,则向下转移,relrel为正数为正数当目标地址小于源地址,则向上转移,当目标地址小于源地址,则向上转移,relrel为负数为负数例如:例如:在在romrom区区0100h0100h地址单元地址单元 80h 55h80h 55h( sjmp relsjmp rel) 当当pc=0100hpc=0100h,取得机器码后,会根据公式进行计算:,取得机器码后,会根据公式进行计算: pc=pc=(pcpc)当前当前+ +2+rel =0100h+2+55h=0157h,2+rel =0100h+2+55h=0157h,向下转移向下转移又如又如:若

15、:若romrom区区0100h0100h地址单元地址单元 80h f6h80h f6h( relrel是负数,为是负数,为-0ah-0ah) 当当pc=0100hpc=0100h,取得机器码后,会根据公式进行计算:,取得机器码后,会根据公式进行计算: pc=pc=(pcpc)当前当前+ +2+rel =0100h+2-0ah=00f8h,2+rel =0100h+2-0ah=00f8h,向上转移向上转移再如:再如:若若romrom区区0100h0100h地址单元地址单元 80h feh80h feh( relrel是负数,为是负数,为-2h-2h) 当当pc=0100hpc=0100h,取得机

16、器码后,会根据公式进行计算:,取得机器码后,会根据公式进行计算: pc=pc=(pcpc)当前当前+ +2+rel =0100h+2-2h=0100h,2+rel =0100h+2-2h=0100h, 原地踏步、等待原地踏步、等待指令经常写成:指令经常写成:sjmp $sjmp $3.4.4 3.4.4 控制转移类指令(控制转移类指令(1717条)条) 在用汇编语言程序是,在用汇编语言程序是,rel是由汇编程序在汇编过程中是由汇编程序在汇编过程中自动计算偏移地址,并且填入指令代码中;在手工汇编时,自动计算偏移地址,并且填入指令代码中;在手工汇编时,我们可用转移目的地址减转移指令所在源地址,再减

17、转移我们可用转移目的地址减转移指令所在源地址,再减转移指令字节数指令字节数2得到偏移字节数得到偏移字节数rel。3.4.4 3.4.4 控制转移类指令(控制转移类指令(1717条)条)(4) (4) 间接转移指令间接转移指令jmp a+dptr 这是一个转移指令。它的目标地址由操作数字段来描述。这是一个转移指令。它的目标地址由操作数字段来描述。可以在可以在rom空间的空间的64k内范围任意转移。当对内范围任意转移。当对dptr赋值后,赋值后,转移的目标地址还可以由转移的目标地址还可以由a的内容决定。的内容决定。 这条指令可代替众多的判别跳转指令,具有散转功能。这条指令可代替众多的判别跳转指令,

18、具有散转功能。 执行完执行完(pc)=(a)+(dptr)执行jmp a+dptr后,会依后,会依a内容的不同转向不同的目标地内容的不同转向不同的目标地址。址。3.4.4 3.4.4 控制转移类指令(控制转移类指令(1717条)条)例如:根据累加器例如:根据累加器a a中命令键键值,设计命令键操作中命令键键值,设计命令键操作 程序入口跳转表程序入口跳转表: clr c clr c ;清进位;清进位 rlc a rlc a ;键值乘;键值乘2 2 mov dptr mov dptr,#jptab#jptab ;指向命令键跳转表首址;指向命令键跳转表首址 jmp jmp a+dptr a+dptr

19、 ;散转入命令键入口;散转入命令键入口jptabjptab: ajmp ccs0 ajmp ccs0 ;双字节指令;双字节指令 ajmp ccs1ajmp ccs1 ajmp ccs2 ajmp ccs2。ccs0ccs0:ccs1ccs1:3.4.4 3.4.4 控制转移类指令(控制转移类指令(1717条)条) 有条件转移指令共三类,有条件转移指令共三类,8 8种,它们有如下种,它们有如下共性共性:v指令字面上会用助记符给出一个指令字面上会用助记符给出一个判决规则判决规则,如,如(a)=0(a)=0等。等。vcpucpu执行时会依据当前的条件作出真执行时会依据当前的条件作出真/ /假判断,是

20、真假判断,是真-则转则转移;是假移;是假-则继续顺序执行。则继续顺序执行。v指令中最后一个操作数表明转移的目标地址,通常是标号指令中最后一个操作数表明转移的目标地址,通常是标号地址。地址。v所有的有条件转移均为短转移。所有的有条件转移均为短转移。v本指令前要有意识地构建判决条件。本指令前要有意识地构建判决条件。不同的指令其实就是以不同的助记符,给出不同的不同的指令其实就是以不同的助记符,给出不同的判决规则判决规则2. 有条件转移指令(有条件转移指令(8条)条)3.4.4 3.4.4 控制转移类指令(控制转移类指令(1717条)条)判决规则判决规则真真假假新的新的目标目标地址地址顺序顺序执行执行

21、助记符助记符给出给出操作数操作数给出给出例如:例如:jnz abc jnz abc 助记符给出助记符给出 (a) 0的判决的判决条件条件操作数给出目标操作数给出目标地址为地址为abc执行到此句,若(执行到此句,若(a a)0 0,顺序执行;,顺序执行;若若 (a) (a) 0 0,则转向,则转向abcabcjz reljz rel;判决规则(判决规则(a a)= 0= 0jnz reljnz rel;判决规则(判决规则(a a)003.4.4 3.4.4 控制转移类指令(控制转移类指令(1717条)条)cjne opr1,opr2,relcjne opr1,opr2,rel;判决规则(;判决规

22、则(opr1opr1) (opr2opr2)cjne a, direct, rel cjne a, direct, rel ; a(data),(pc)+ 3 + rel(pc)cjne a, #data, rel cjne a, #data, rel ; a#data,(pc)+ 3 + rel(pc)cjne rn, #data, rel cjne rn, #data, rel ;(rn)#data,(pc)+ 3 + relpc) cjne ri, #data, relcjne ri, #data, rel;(rn)#data,(pc)+ 3 + rel(pc)说明:说明: ()()字节

23、与字节比较字节与字节比较 ()()比较不等转,否则顺序执行比较不等转,否则顺序执行 ()()影响影响cy与减法相同,但不改变操作数与减法相同,但不改变操作数 ()()三字节指令,三字节指令,rel是偏移量是偏移量3.4.4 3.4.4 控制转移类指令(控制转移类指令(1717条)条)djnz rn, rel ; (rn)-1(rn),(rn)0,(pc)+ 2 + rel(pc)djnz direct, rel ; (data)-1(data),(data)0, (pc)+ 3+ rel(pc)例:延时子程序例:延时子程序 delay: mov r7, #03h djnz r7, $ retd

24、jnz opr, rel; 判决规则:(判决规则:(opropr)-1-1 03.4.4 3.4.4 控制转移类指令(控制转移类指令(1717条)条) 在程序设计中,有时因操作要求,需反复执行某在程序设计中,有时因操作要求,需反复执行某段程序,于是引进了主程序和子程序的概念。段程序,于是引进了主程序和子程序的概念。子程序子程序能被反复调用。这样可减少程序编写和调试的工作量。能被反复调用。这样可减少程序编写和调试的工作量。指令系统中一般都有主程序指令系统中一般都有主程序调用调用子程序的指令和从子子程序的指令和从子程序程序返回返回主程序的指令。主程序的指令。 通常把具有一定功能的公用程序段作为子程

25、序。通常把具有一定功能的公用程序段作为子程序。子程序的入口标号可以成为子程序名(或子程序的入子程序的入口标号可以成为子程序名(或子程序的入口地址),最后一条指令为返回主程序指令(口地址),最后一条指令为返回主程序指令(retret)。)。3.4.4 3.4.4 控制转移类指令(控制转移类指令(1717条)条)v长调用指令长调用指令lcall addr16lcall addr16(子程序的入口地址子程序的入口地址)v短调用指令短调用指令acall addrll acall addrll (子程序的入口地址子程序的入口地址)v子程序返回指令子程序返回指令 retretv中断返回指令中断返回指令 r

26、etireti 上述指令的执行,最终都会令上述指令的执行,最终都会令pc得到一个新值。得到一个新值。3.4.4 3.4.4 控制转移类指令(控制转移类指令(1717条)条)4 . 4 . 空操作指令(空操作指令(1 1条)条) nop nop 这条指令除了使这条指令除了使pcpc加加1 1,消耗一个机器周期外,消耗一个机器周期外,没有执行任何操作。可用于短时间的延时。没有执行任何操作。可用于短时间的延时。3.4.4 3.4.4 控制转移类指令(控制转移类指令(1717条)条)3.4.5 3.4.5 位操作指令(位操作指令(1717条)条)位数据传送指令(位数据传送指令(2条)条)位修正指令(位

27、修正指令(6条)条)逻辑运算指令(逻辑运算指令(4条)条)位条件转移类指令(位条件转移类指令(5条)条)位寻址空间位寻址空间v在进行位操作时,进位标志位在进行位操作时,进位标志位cycy布尔累加器(位累加布尔累加器(位累加器),简写成器),简写成c c。v位寻址区:位寻址区: 片内片内ramram字节地址字节地址20h20h2fh2fh单元中连续的单元中连续的128128位位(位地址(位地址00h00h7fh7fh)v部分特殊功能寄存器部分特殊功能寄存器sfrsfr(通常用位名来访问,如(通常用位名来访问,如rs0rs0、ovov)3.4.5 3.4.5 位操作指令(位操作指令(1717条)条

28、)v点操作符号:点操作符号: 如如psw.4(d0h).4psw.4(d0h).4v位名称方式:位名称方式: 如如rs1rs1v直接写位地址:直接写位地址: 如如d4hd4hv用户定义名方式:如用伪指令用户定义名方式:如用伪指令bitbit flag bit 10h flag bit 10hsetb flagsetb flag;(10h)=1(10h)=1 位地址的表达方式:位地址的表达方式:3.4.5 3.4.5 位操作指令(位操作指令(1717条)条) 位传送指令就是可寻址位与累加位位传送指令就是可寻址位与累加位cycy之间的传送,指之间的传送,指令有两条。令有两条。 mov c,bit ;bitcy,某位数据送,某位数据送cy。 mov bit,c ;cybit,cy数据送某位数据送某位例:将位地址例:将位地址20h的一位数传送到位地址的一位数传送到位地址30h中:中:mov c,20h mov 30h,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论