1 / 11

3.1 指令系统简介

3.1 指令系统简介. 一、几个概念 二、汇编语言指令格式 三、指令的分类 四、指令的符号说明. 主讲:吴政江. 下一页. 几个概念. 指令:要求计算机完成某种特定操作的命令。由操作码和操作数两部分组成。操作码用来规指令完成的具体操作。操作数表示操作的对象,可能是一个具体的数据,也可能是数据的地址。 指令系统:计算机能够执行的所有指令的集合。不同的 CPU 有不同的指令系统, MCS-51 共有 111 条指令。 程序:为解决某一特定问题而用某一种语言编写的指令的有序集合。

Download Presentation

3.1 指令系统简介

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 3.1 指令系统简介 一、几个概念 二、汇编语言指令格式 三、指令的分类 四、指令的符号说明 主讲:吴政江 下一页

  2. 几个概念 指令:要求计算机完成某种特定操作的命令。由操作码和操作数两部分组成。操作码用来规指令完成的具体操作。操作数表示操作的对象,可能是一个具体的数据,也可能是数据的地址。 指令系统:计算机能够执行的所有指令的集合。不同的CPU有不同的指令系统,MCS-51共有111条指令。 程序:为解决某一特定问题而用某一种语言编写的指令的有序集合。 计算机语言:人与计算机进行交流的工具。按其与计算机硬件的接近程度可分为两大类:低级语言,与硬件最接近,即能直接操作硬件。如:机器语言、汇编语言等。高级语言,不能直接操作硬件,必须有操作系统的支持。如:C、QBASIC、PASCAL、FORTRAN语言等等。 机器语言:一种能被机器直接识别和执行的语言,用二进制数“0”和“1”形式表示。它存在于计算机存储器内,直接指挥机器的运行。为了阅读和书写的方便,机器语言常写成十六进制形式。 汇编语言:一种面向机器的程序设计语言,用助记符形式表示,能直接操作硬件,属于低级语言。 汇编语言源程序:用汇编语言编写的程序。不能被机器直接执行,必须由“汇编程序”翻译成机器语言的目标程序。 汇编程序:由计算机公司提供的,用于将汇编语言源程序翻译成目标程序(机器语言)的系统程序。如微机的MASM、ASM等。 下一页 上一页 返回

  3. 汇编语言指令格式 [标号:]〈操作码助记符〉 [第一操作数] [,第二操作数] [,第三操作数] [;注释] 1、标号:表示该指令位置的符号地址,在程序汇编时,它被赋以该指令在ROM中存放的具体地址。它是以英文字母开头的1~6个字母或数字组成的字符串,并以“:”结尾。通常在子程序的入口或转移指令的目标地址处才赋予标号。 2、操作码助记符:由助记符表示的字符串,它规定了指令的功能(如加、减等),是指令的核心部分,不可缺省。 3、操作数:指参加操作的数据或数据的地址,即指令的操作对象。可以是1个、2个或3个也可以没有。操作数之间以“,”分隔,操作码与操作数之间以空格分隔。 4、注释:是对该条指令功能的解释,以便人们交流、阅读、修改和调试程序。注释以“;”开始。它不是程序的功能部分,不影响指令的执行,但最好养成附带注释的习惯。 例: WZJ:MOV 20H,A ;(20H)←A 返回 上一页 下一页

  4. 指令的分类 • 1、按指令的长度分 • 单字节指令(50条):只占一个字节的存储单元,操作码和操作数同存储在一个字节中。 • 双字节指令(45条):占有二个字节的存储单元,其中第一字节为操作码,第二字节为操作数或操作数的地址。 • 三字节指令(16条):占有三个字节的存储单元,操作码占一个单元,操作数占两个单元。操作数既可以是数据,也可以是数据的地址。 • 2、按指令的执行时间分(以机器周期计算) • 单周期指令(64条):执行时需一个机器周期。 • 双周期指令(45条):执行时需二个机器周期。 • 四周期指令(乘、除法2条):执行时需四个机器周期。 • 3、按指令的功能分 • 数据传送类指令(29条) • 算术运算类指令(24条) • 逻辑运算类指令(24条) • 控制转移类指令(17条) • 位操作(布尔操作)类指令(17条) 上一页 下一页 返回

  5. 指令的符号说明 • 1、44种助记符及其意义(基本上是英文单词的缩写) • MOV、MOVC、MOVX、PUSH、POP、XCH、XCHD、ANL、ORL、XRL|SETB、CLR、CPL、RL、RLC、RR、RRC、SWAP、ADD、ADDC、INC、MUL、DIV、DA、AJMP、LJMP、SJMP、JMP、JZ、JNZ、JB、JNB、JBC、CJNE、DJNZ、ACALL、LCALL、RET、RETI、NOP、DEC。 • 2、指令描述中的符号及其意义(见教材27页~28页) Rn、Ri、@Ri、@DPTR、#DATA、#DATA16、direct、addr16、addr11、rel、bit、A、B、C、/、X、(X)、((X))、← 例:MOV A,@R1;A ←((R1)) 上一页 返回

  6. 寻址方式:取得操作数的方式,即如何找到了操作数。MCS-51共有七种寻址方式。寻址方式:取得操作数的方式,即如何找到了操作数。MCS-51共有七种寻址方式。 一、立即寻址:操作码后直接给出操作数(立即数)。采用立即寻址的指令是双字节或三字节指令,第一字节为指令的操作码,第二、三字节是立即数。立即数前必须加“#”标志。例:MOV A,#40H;将立即数40H送至A中 MOV DPTR,#3456H;DPTR←3456H 片内SFR 片内SFR 00110100 01000000 01010110 3.2 寻址方式 高位立即数34H DPH A DPL 低位立即数56H 立即数40H

  7. 直接寻址与寄存器寻址 二、直接寻址:在操作码后面直接给出操作数所在单元的地址。采用直接寻址的指令一般是双字节或三字节,第一字节为操作码,第二、三字节为操作数的地址码。这种寻址方式可进行内数据存储器的访问。 1、访问SFR,指令中direct以单元地址或寄存储器符号形式表示 。 例:MOV A,81H;两条指令的功能完全相同,SP的地址为81H MOV A,SP 2、访问内部RAM的低128B,指令中direct以单元地址形式表示。 例:MOV A,35H;A←(35H),设35H单元的内容为55H,则指令 执行后A的内容为55H 三、寄存器寻址:操作数存放在某一寄存器中,指令中指出相应的寄存器。即寄存器的内容就是操作数。可用于访问选定的工作寄存器R0~R7,累加器A,寄存器B和位累加器C中的数。 例:MOV R0,#55H;将数据55H送至A中 MOV A,R0

  8. 四、寄存器间接寻址 • 用寄存器的内容作为操作数的地址,该地址对应的单元的内容才是操作数。用符号@作为间址标志。用于访问片内RAM或片外RAM。 • 1、当访问片内RAM或片外RAM的低256B空间时,可用R0或R1作为间址寄存器。 • 例:MOV R0,#25H • MOV A,@R0 • 设25H单元的内容为73H,则执行结果:以R0的内容25H为地址,把25H地址单元的内容73H送到累加器A中,A的内容为73H。 • 2、当访问片外RAM时,用DPTR作间址寄存器。由于DPTR是16位寄存器,所以它可访问片外RAM整个64KB的地址空间。 • 例:MOV DPTR,#2345H;将片外RAM2345H单元中的内容送入A中 • MOV A,@DPTR • 3、堆栈指令PUSH、POP也可算寄存器间接寻址,其间址寄存器为SP。即以SP的内容为地址,把该地址单元中的内容压入堆栈或弹出到目标地址。

  9. 五、基址加变址寻址 • 以DPTR或PC为基址寄存器,以A作为变址寄存器,两者内容之和为操作数的地址。MCS-51中有两条基址加变址寻址指令,用于访问固化在ROM中的常数,称为查表指令。 • 1、以PC作基地址加变址形成操作数地址(@A+PC )指令 • MOVC A,@A+PC • 2、以DPTR作基地址,A作变址,由@A+DPTR形成操作数地址指令 • MOVC A,@A+DDPTR • 例:MOV DPTR,#0300H;DPTR←0300H • MOV A,#02H ;A←02H • MOVC A,@A+DPTR;A←(0300H+02H) • 将ROM中0302H单元的数(设为55H)取出送A中。

  10. 六、相对寻址 • 以PC作为基址寄存器,将其当前值(执行完转移指令后的PC值)与指令中给出的偏移量(rel)相加,所得的和即为转移的目标地址。即目标地址=转移指令地址+转移指令字节数+偏移量rel=PC当前值+偏移量rel。rel为补码表示的8位带符号数,其值为-128~+127,故转移的范围为PC-128~PC+127。 • 在MCS-51中有两类转移指令:二、三字节。在计算PC当前值 时要注意指令的字节数。(除非手工汇编,编程时只要在目标地址处打上标号即可,然后由汇编程序自动计算) • 例:SJMP 08H;指令代码为双字节,即80 08H • 现设PC=2000H为本指令地址,则转移目标地址=(2000H+2)+08H=200AH • 将偏量08H送入A,再与PC当前值 2002H相加,结果就是目的地址。

  11. 七、位寻址 • 位寻址是指对片内RAM的位寻址区(20H~2FH)和可位寻址的SFR进行位操作时的寻址方式。 • 在进行位操作时,借助于进位C作为位累加器,操作数直接给出该位的地址或位名称,然后再根据操作的性质进行操作。注意:位寻址的位地址与直接寻址的字节地址形式完全一样,主要由指令码来区分,应注意区分。 • 例:MOV C,20H;C←(20H),20H是位寻址的位地址 • MOV A,20H;A←(20H),20H是直接寻址的字节地址 • SETB RS0 ;(RS0)←1 • 位地址的表示方法: • 1、直接地址形式。如:MOV C,35H;Cy←(35H) • MOV C,20H; Cy←(20H) • 2、位名称表示法。如:MOV C,RS1;Cy←(RS1) • RS0、RS1、Cy、Ac、F0、F1、P、Ov等等。 • 3、加位表示法。 如:MOV C,Acc.5;Cy←( Acc.5) • P0.0~P0.7、P1.0~P1.7、25H.4、 Acc.0~ Acc.7等等。

More Related