第三章 指令系统

上传人:aa****6 文档编号:51207565 上传时间:2018-08-12 格式:PPT 页数:154 大小:624.50KB
返回 下载 相关 举报
第三章 指令系统_第1页
第1页 / 共154页
第三章 指令系统_第2页
第2页 / 共154页
第三章 指令系统_第3页
第3页 / 共154页
第三章 指令系统_第4页
第4页 / 共154页
第三章 指令系统_第5页
第5页 / 共154页
点击查看更多>>
资源描述

《第三章 指令系统》由会员分享,可在线阅读,更多相关《第三章 指令系统(154页珍藏版)》请在金锄头文库上搜索。

1、第三章第三章 指令系统指令系统3.1 汇编语言 3.1.1指令和程序设计语言 3.1.2 指令格式 3.2 寻址方式 3.2.1 7种寻址方式 3.2.2 寻址空间及符号注释 3.3 89C51单片机的指令系统 3.3.1 数据传送指令 3.3.2 算术运算指令 3.3.3 逻辑操作指令 3.3.4 控制程序转移类指令 3.3.5 位操作(布尔处理)类指令3.1 汇编语言3.1.1 指令和程序设计语言指令:CPU根据人的意图来执行某种操作的命令。指令系统:一台计算机所能执行的全部指令的集合称为 这个CPU的指令系统。程序:完成某项特定任务的指令的集合。计算机按程 序一条一条地依次执行指令,从而

2、完成指定任务。要让 计算机完成各项任务,就应设计各种程序。 程序设计语言:机器语言:用二进制编码表示的指令,是计算机能直接 识别和执行的语言。 机器语言程序(或指令程序、机器码程序、目标程序) :用机器语言编写的程序。89C51单片机是8位机,其机器语言以8位二进制 代码为单位(一个字节),89C51指令有单字节,双 字节,三字节指令。如:做1020的加法,在 89C51中可用机器码指令编程:01110100 00001010 把10放到累加器中00100100 00010100 A加20,结果仍放入A中机器语言缺点:不易记忆,不易修改,不易查错汇编语言:汇编语言:为了克服上述缺点,可用有一定

3、含义的 符号,即机器助记符来表示,一般都采用某些有关 的英文单词的缩写。如:1020 可用汇编语言表示为:汇编语言程序 机器语言程序MOV A, #0AH 74 0AHADD A, #14H 24 14H特点:用助记符、符号和数字来表示指令,容易理 解和记忆,它与机器语言一一对应。与计算机内部 硬件结构密切相关。3.1.2 指令格式89C51采用助记符表示的汇编语言如下:标号: 操作码助记符 操作数1,操作数2 ,操作数3 注释 1.标号标号是程序员根据需要给设定的符号地址,可有可无 ,标号由18个字符组成,第一个字符必须是英文字母 ,不能是数字或其它字符,不分大小写,标号后必须跟冒 号。2.

4、 操作码助记符规定了指令所能实现的功能,由25个英文字母表示 ,例如:JB, MOV,DJNZ,LCALL等。3.操作数指出了参与操作的数据来源和操作结果存放的目的单元,操作数可以是直接的一个数(立即数),或者 是一个数据所在的地址空间,即在执行指令时从指定 的地址空间取出操作数。操作码后面可以带一个、两 个、三个操作数,或者是不带操作数。 4. 注释注释是对该指令的解释说明,可提高程序的可读性,是指令的非执行部分,可省略。注释前必须加分 号。 89C51单片机的指令共有111条,不同的指令 被翻译成机器码以后,字节数也不一定相同,按照 机器码的个数,可分为单字节、双字节、三字节指 令。1.单

5、字节指令(49条)单字节指令中的8位二进制代码既包括操作码的 信息,也包含操作数的信息。这种指令有两种情况 。(1)指令码中隐含着对某一个寄存器的操作。例如:数据指针加1指令“INC DPTR”,由于操作的内容和唯一对象DPTR寄存器只用8位二进制代码表示,其指令代码为A3H,其格式为:10100011(2)由指令中的rrr三位的不同编码指定某一个寄存器 。例如,工作寄存器向累加器A传送数据指令“MOV A, Rn” ,其指令码格式为:1 1 1 0 1 r r r 其中高5位为操作内容(传送),低3位 rrr的不同组合编码用来表示从哪一个寄存器取数。2.双字节指令(45条)用一个字节表示操作

6、码,另一个字节表示操作数或 操作数所在的地址。其指令格式为:操作码立即数或地址3.三字节指令(17条)一个字节操作码,两个字节操作数,格式如下:操作码立即数或地址立即数或地址3.2 寻址方式寻址寻址:CPU根据指令,按一定的方式寻找操作数所在 的地址并取得操作数。求1020的结果,用高级语言,如C语言的语为:x=10;y=20;z=x+y;编程者只要知道10放在一个叫x的单元,20放在一个 叫y的单元,结果放在一个叫z的单元就足够的,至于他们 具体的存放地址则根本不必关心,但在汇编语言设计时, 要针对系统的硬件环境编程,编程者必须自始自终都必须 非常清楚操作数的位置。n89C51的寻址方式有七

7、种。即:寄存器寻址、直接寻址、寄存器间接寻址、立即寻址、基址寄存器加变址寄存器变址寻址、相对寻址和位寻址。若不特别声明,我们后面提到的寻址方式均指 源操作数的寻址方式。1.寄存器寻址操作数被放在寄存器之中,执行指令时,从 指定寄存器中取操作数。(寄存器指:寄存器组R0 R7中的某一个,或A,B,DPTR等。)例如:CLR A;A0INC DPTR;(DPTR)(DPTR+1)ADD R5,#20H ;(R5)(R5+#20H)MOV A,B ; (A) (B)MOV 30H,R0 ; (30H)(R0)MOV A,R1 ; (A) (R1)2.直接寻址指令中直接给出操作数所在的地址,此时,指令

8、中 操作数部分是操作数所在地址。 例如:MOV R1,1FH ;(R1) (1FH)MOV 30H,4AH ;(30H)(4AH)在本单片机中规定:访问特殊功能寄存器SFR只能采用直接寻址方式。 例如:MOV A, SP ; (A) (SP) MOV A, 81H ; (A) (SP) MOV P1, #5AH ; (P1)(#5AH)MOV 90H,#5AH ; (P1)(#5AH)MOV C, 20H ;位寻址,把位地址为20H中的值送入A中。3.立即寻址指令操作码后面紧跟的是一字节或两个字节的 操作数,用“”表示,与直接地址相区别。 如: MOV A,#30H 其机器码是而MOV A,3

9、0H的机器码是74 3030H的前面加一“#”作 为前缀表示它是立即 数,说明这条指令采 用了立即寻址方式。E5 3089C51有一条指令要求操作码后面紧跟的是两 个字节立即数,即MOV DPTR ,#DATA16例如:MOV DPTR, #2000H因为这条指令包括两个字节立即数,所以它是 三字节指令。机器码为: 1001000 0 0010000 0 0000000 0操作数立即数高8位立即数低8位4.寄存器间接寻址n 寄存器中的内容是一个地址,由该地址单元寻址 到所需的操作数。间接寻址的存储器空间包括内 部数据RAM和外部数据RAM。n 能用于寄存器间接寻址的寄存器有R0,R1, DPT

10、R,SP。其中R0、R1必须是工作寄存器组中 的寄存器。SP仅用于堆栈操作。注意:1)“间接”表示某寄存器中的“内容”只是一个“ 单元地址”,这个地址单元中存放的数据才是要找 的“操作数”。2)符号“”表示“在”,其含义与读音皆同 “at”。如指令:MOV A,Rj(j=0或1) 它的操作功能是(A) (Rj) 即将工作寄存器R0或R1的内容所示的片内RAM地 址单元中的数据送到累加器A中去。 若j=1,指令是: MOV A,R1 若(A)20H,(R1)37H,(37H)40H则执行上述指令后, (A)40H,(R1)37H,(37H)40H若用寄存器R1间接 寻址的方式,将片 内RAM40

11、H单元的 内容1AH送至累加 器A:MOV R1,#40HMOV A,R1片内RAM3E H 3FH40H1AH41H42H40HR11AHA若仍用寄存器R1间接 寻址的方式,R1的内 容仍为40H,改用MOV R1,#40HMOVX A,R1指令,执行的间接寻 址方式,则是将片外 RAM40H单元的内容 送至累加器A。3FH3EH1AH40H42H41HR140HR1A1AHA片外RAM在访问片内低128B和片外RAM低地址的256 个单元时,用R0或R1作地址指针,在访问全部 64K外部RAM时,使用DPTR作地址指针进行间 接寻址。如 MOV R0,#31HMOV A,R0 ;访问片内R

12、AMMOV R0,#31HMOVX A,R0 ;访问片外低256BRAMMOV DPTR, #1234HMOVX A ,DPTR ;访问片外64KRAM5变址寻址(基址寄存器变址寄存器间接寻址)这种寻址方式只用于访问程序存储器,访问范围为64K,只能读,不能写(只作为源地址,不作为目的地址)。它以PC或DPTR作为基本地址寄存器,以A作为变址寄存器,把它们内容的和作为程序存储器的地址,再寻址该地址单元,读取数据。MOVC A,A+DPTRMOVC A, A+PC例如指令MOVC A,A+DPTR当在DPTR中置入地址0400H,在A中置入数码(假定为3)之后,当执行该指令时,从加得地址4003

13、H单元读取相应的信息代码30H,并传送到累加器A。30HDPTR 0400HA 03H+0403HA 30H6相对寻址n以当前程序计数器PC的内容为基础,加上指令给出的一 字节补码数(偏移量)形成新的PC值的寻址方式。例如 “李同学20岁,张同学比李同学大3岁,问张同学多少岁 ?”n相对寻址用于修改PC值,主要用于实现程序的分支转移 。SJMP rel 操作:跳转到的目的地址 = 当前16位PC值 + rel 注意: 1)“当前PC值”指程序中下一条指令所在的首地址,是一个16位数; 2)符号“rel”表示“偏移量”,是一个带符号的单字节数,范围是:-128+127(80H7FH),例如指令J

14、C rel设rel75H,CY1,该指令表示当C中的内容 等于1时,程序跳转。由于 CY1,此指令为双字节 指令,所以程序转向(PC )75H单元去执行。其 执行过程如图。相对转移 指令JC rel的源地址为 1000H,转移的目标地址 为1077H。B4H FFH 1000H0100 0000 1001H 0111 0101 1002H1077HPCPCPC7.位寻址51单片机有很强位操作功能,片内RAM有16 个单元(20H2FH)和11个SFR的各位被赋予 了位地址。采用位寻址方式的指令的操作数将是8位二进 制数中的某一位,指令中给出的是位地址,即片 内RAM某一单元中的一位。如:CLR

15、 C SETB P1.0 在89C51中,位地址常用下列两种方式表示:(1)直接使用位地址,对于20H2FH的16个单元中的128位的位地址分布是00H7FH。如20H单元的07位的位地址是00H07H等。(2)对于特殊功能寄存器,可以直接用寄存器名字加位数表示,如PSW.3等。3.2.2 寻址空间及符号注释1. 寻址空间(见表32)89C51单片机对不同的存储空间采用的寻址方式 有:(1)程序存储器:一般采用变址寻址方式,如MOVC A , A+DPTR(2)特殊功能寄存器:只能采用直接寻址方式, 如MOV P1, A(3)外部数据存储器:采用寄存器间接寻址,如MOVX A, DPTR(4)内部数据存储器:00H7FH采用直接寻址、寄 存器间接寻址,对其中的寄存器区还可采用寄存器寻址 ,对其中的20H2FH还可采用位寻址。如:MOV 20H, 30HMOV C, 20H(5)内部数据存储器80HFFH:只能采用直接寻址。 MOV A , P1MOV A, 90H直 接 寻 址2. 寻址方式中常用符号注释:Rn: 表示当前工作寄存器R0R7中的一个。Ri: 表示寄存器间接寻址,常常作间接寻址的地址指针。

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

当前位置:首页 > 办公文档 > PPT模板库 > 教育/培训/课件

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