1、华师大计算机指令l指令指令是指挥机器完成某种操作的是指挥机器完成某种操作的命令。命令。l指令系统指令系统是某计算机能直接识别、是某计算机能直接识别、正确执行的所有指令的集合。正确执行的所有指令的集合。l指令系统指令系统是计算机软件与硬件的是计算机软件与硬件的界面。界面。1.1.指令系统的发展指令系统的发展2.2.指令的格式指令的格式3.3.寻址方式寻址方式4.4.指令的分类和功能指令的分类和功能5.5.典型指令系统的模型典型指令系统的模型1 1、理解指令中应包含的信息。、理解指令中应包含的信息。2 2、掌握常用的指令及指令格式。、掌握常用的指令及指令格式。3 3、深入理解常用的寻址方法及、深入
2、理解常用的寻址方法及 其用途。其用途。4 4、了解常见指令的种类和功能。、了解常见指令的种类和功能。1 1 指令格式。指令格式。2 2 指令的寻址方式指令的寻址方式 1.1.寻址方式方式的应用。寻址方式方式的应用。2.2.操作码的编码技术。操作码的编码技术。l本章学习需要本章学习需要6 6个学时。个学时。4 41 1 指令系统的发展与性能要求指令系统的发展与性能要求4 42 2 指令格式指令格式 4 43 3 指令和数据的寻址方式指令和数据的寻址方式 4 44 4 堆栈寻址方式堆栈寻址方式4 45 5 典型指令典型指令 一、一、程序程序是若干条指令的有序集合。是若干条指令的有序集合。二、二、指
3、令指令就是要计算机执行某种操作就是要计算机执行某种操作的命令。的命令。三、从计算机组成的层次结构来说,三、从计算机组成的层次结构来说,计算机的指令有微指令、机器指令计算机的指令有微指令、机器指令和宏指令之分。和宏指令之分。微指令微指令是微程序级的命令,它属是微程序级的命令,它属于硬件;于硬件;宏指令宏指令是由苦干条机器指令组成是由苦干条机器指令组成的软件指令,它属于软件;的软件指令,它属于软件;机器指令机器指令则介于微指令与宏指令则介于微指令与宏指令之间,通常简称为指令。每一条指之间,通常简称为指令。每一条指令可完成一个独立的算术运算或逻令可完成一个独立的算术运算或逻辑运算操作。辑运算操作。本
4、章所讨论的指令是机器指令。本章所讨论的指令是机器指令。指令系统是表征一台计算机指令系统是表征一台计算机性能的重要因素,它的格式与功性能的重要因素,它的格式与功能不仅直接影响到机器的硬件结能不仅直接影响到机器的硬件结构,而且也直接影响到系统软件,构,而且也直接影响到系统软件,影响到机器的适用范围。影响到机器的适用范围。一一台计算机中所有机器指令台计算机中所有机器指令的集合,称为这台计算机的的集合,称为这台计算机的指令指令系统系统。系列计算机系列计算机是指基本指令系统相同、是指基本指令系统相同、基本体系结构相同的一系列计算机。基本体系结构相同的一系列计算机。其必要条件是同一系列的各机种有其必要条件
5、是同一系列的各机种有共同的指令集。而且新推出的机种共同的指令集。而且新推出的机种指令系统一定包含所有旧机种的全指令系统一定包含所有旧机种的全部指令,即实现一个部指令,即实现一个“向上兼容向上兼容”。因此旧机种上运行的各种软件可以因此旧机种上运行的各种软件可以不加任何修改便可在新机种上运行,不加任何修改便可在新机种上运行,大大减少了软件开发费用。系列机大大减少了软件开发费用。系列机解决了各机种的软件兼容解决了各机种的软件兼容问题问题 。复杂指令系统计算机(复杂指令系统计算机(CISCCISC)精简指令系统计算机(精简指令系统计算机(RISCRISC)一个完善的指令系统应满足如下四方一个完善的指令
6、系统应满足如下四方面的要求:面的要求:完备性完备性 有效性有效性规整性规整性兼容性兼容性 完备性完备性是指用汇编语言编写是指用汇编语言编写各种程序时,指令系统直接提供各种程序时,指令系统直接提供的指令足够使用,而不必用软件的指令足够使用,而不必用软件来实现。完备性要求指令系统丰来实现。完备性要求指令系统丰富、功能齐全、使用方便。富、功能齐全、使用方便。有效性有效性是指利用该指令系统是指利用该指令系统所编写的程序能够高效率地运行。所编写的程序能够高效率地运行。高效率主要表现在程序占据存储高效率主要表现在程序占据存储空间小、执行速度快。空间小、执行速度快。规整性规整性包括指令系统的对称性、匀齐性、
7、包括指令系统的对称性、匀齐性、指令格式和数据格式的一致性。指令格式和数据格式的一致性。1 1、对称性是指在指令系统中所有的寄存器和、对称性是指在指令系统中所有的寄存器和存储器单元都可同等对待,所有的指令都可存储器单元都可同等对待,所有的指令都可使用各种寻址方式;使用各种寻址方式;2 2、匀齐性是指一种操作性质的指令可以支持、匀齐性是指一种操作性质的指令可以支持各种数据类型;各种数据类型;3 3、指令格式和数据格式的一致性是指:指令、指令格式和数据格式的一致性是指:指令长度和数据长度有一定的关系,以方便处理长度和数据长度有一定的关系,以方便处理和存取。和存取。兼容性兼容性要能做到要能做到“向上兼
8、容向上兼容”,即低档机,即低档机上运行的软件可以在高档机上运行。上运行的软件可以在高档机上运行。要能做到要能做到“向后兼容向后兼容”,即先生产,即先生产机器上运行的软件可以在后生产的机器上运行的软件可以在后生产的机器上运行。机器上运行。计算机语言有高级语言和低级语言计算机语言有高级语言和低级语言之分。之分。高级语言语句和用法与具体机器的高级语言语句和用法与具体机器的指令系统无关。指令系统无关。低级语言分机器语言(二进制语言)低级语言分机器语言(二进制语言)和汇编语言(符号语言),这两种语和汇编语言(符号语言),这两种语言都是面向机器的语言,它们和具体言都是面向机器的语言,它们和具体机器的指令系
9、统密切相关。机器的指令系统密切相关。机器语言汇编语言高级语言机器能直接识别正确机器能直接识别正确执行的语言。用二进执行的语言。用二进制形式表示。制形式表示。面向机器的符号语言。面向机器的符号语言。接近自然语言,通接近自然语言,通过编译解释的语言。过编译解释的语言。低低级级语语言言l表示一条指令的机器字,就称为表示一条指令的机器字,就称为指令宇指令宇,通常简称指令。通常简称指令。l指令格式指令格式是指令字用二进制代码表示的是指令字用二进制代码表示的结构形式。结构形式。l一条指令的结构可用如下形式来表示:一条指令的结构可用如下形式来表示:l操作码字段操作码字段 l地址码字段地址码字段 指令的操作码
10、指令的操作码表示该指令应进表示该指令应进 行什么性质的操作。行什么性质的操作。组成操作码字段的位数一般取组成操作码字段的位数一般取 决于计算机指令系统的规模。决于计算机指令系统的规模。n n位操作码能描述的操作最多有位操作码能描述的操作最多有 2 2n n。固定长度操作码:便于译码,扩展固定长度操作码:便于译码,扩展性差性差可变长度操作码:能缩短指令平均可变长度操作码:能缩短指令平均长度长度根据一条指令中有几个操作数地址,可根据一条指令中有几个操作数地址,可将该指令称为几操作数指令或几地址指将该指令称为几操作数指令或几地址指令。令。单地址单地址二地址二地址三地址三地址零地址零地址目前二地址和单
11、地址指令格式用的得最多。目前二地址和单地址指令格式用的得最多。lOP A1,A2,A3,A4l一条非跳转的双操作数操作的指一条非跳转的双操作数操作的指令中应该包含令中应该包含4 4个地址。个地址。lA1 OP A2A3 A1 OP A2A3 下条将要执行的下条将要执行的指令地址为指令地址为A4A4。四地址四地址lOP A1,A2,A3 lA1 OP A2A3 A1 OP A2A3 l下条将要执行的指令地址为下条将要执行的指令地址为 PC+1 PCPC+1 PC。三地址三地址lOP A1,A2lA1 OP A2A1 A1 OP A2A1 二地址二地址lOP A1 lA1 OP A A A1 OP
12、 A A 有一个隐地址在累有一个隐地址在累加器或堆栈中。加器或堆栈中。l例:例:MUL CXMUL CXl例:例:PUSH BXPUSH BX单地址单地址lOP l两个隐地址两个隐地址 l例:例:MOVSMOVSl例:例:XLAHXLAH零地址零地址1 1、零地址指令的指令中只有操作码,、零地址指令的指令中只有操作码,而没有地址码。而没有地址码。例如:例如:NOPNOP CLI CLI CBW CBW XLAT XLAT2 2、一地址指令常称单操作数指令。可以、一地址指令常称单操作数指令。可以 只有一个操作数也可以有两个操作数,只有一个操作数也可以有两个操作数,一个指令指明,另一个在堆栈或累加
13、一个指令指明,另一个在堆栈或累加 器中。器中。(AC)OP(A)AC(AC)OP(A)AC 例如:例如:INC OPD INC OPD 单操作数指令单操作数指令 MUL OPD MUL OPD 双操作数指令双操作数指令 PUSH OPS PUSH OPS 双操作数指令双操作数指令3 3、二地址指令常称双操作数指令,它、二地址指令常称双操作数指令,它有两个地址码字段有两个地址码字段A1A1和和A2A2,分别指明,分别指明参与操作的两个数在内存中或运算器参与操作的两个数在内存中或运算器通用寄存器的地址,其中地址通用寄存器的地址,其中地址A1A1兼做兼做存放操作结果的地址。存放操作结果的地址。(A1
14、)OP(A2)A1(A1)OP(A2)A1 例如:例如:ADD OPDADD OPD,OPSOPS AND OPD AND OPD,OPSOPS MOV OPD MOV OPD,OPS OPS 4 4、三地址指令字中有三个操、三地址指令字中有三个操作数地址作数地址A1A1,A2A2和和A3A3。(A1)OP(A2)A3(A1)OP(A2)A3 例如:例如:ADD R1ADD R1,R2R2,R3R3 (R3R3)=(R1R1)+(R2R2)从操作数的物理位置来说,又可从操作数的物理位置来说,又可归结为三种类型:归结为三种类型:1 1、访问内存的指令格式,我们称这、访问内存的指令格式,我们称这类
15、指令为存储器存储器类指令为存储器存储器(SSSS)型型指令;指令;数据多数据多 2 2、访问寄存器的指令格式,我们称、访问寄存器的指令格式,我们称这类指令为寄存器寄存器这类指令为寄存器寄存器(RRRR)型指令;型指令;速度快速度快 3 3、第三种类型为寄存器存储器、第三种类型为寄存器存储器(RSRS)型指令。型指令。一个指令字中包含二进制代码的一个指令字中包含二进制代码的位数,称为位数,称为指令字长度指令字长度。机器字长机器字长是指计算机能直接处理是指计算机能直接处理的二进制数据的位数,它决定了的二进制数据的位数,它决定了计算机的运算精度。计算机的运算精度。l指令长度指令长度固定长度:取指快、
16、译码简单。固定长度:取指快、译码简单。单字长、双字长、多字长单字长、双字长、多字长可变长度:可提高编码效率可变长度:可提高编码效率l指令助记符指令助记符伪指令、累加器,通用寄存器伪指令、累加器,通用寄存器指令字的长度主要取决于操作码的长指令字的长度主要取决于操作码的长度、操作数地址的长度和操作数地址度、操作数地址的长度和操作数地址的个数。的个数。指令长度并不是固定的指令长度并不是固定的 ,指令长度通,指令长度通常是字节的整数倍。常是字节的整数倍。例如:例如:80868086的指令长度为:的指令长度为:8 8、1616、3232、4040和和4848位六种。位六种。1 1、霍夫曼编码、霍夫曼编码
17、频率相关编码方法2 2、操作码的设计、操作码的设计 霍夫曼树 扩展霍夫曼树例例 某计算机有某计算机有1010条指令,它们的使用频条指令,它们的使用频率分别为率分别为:0.30,0.20,0.16,0.09,:0.30,0.20,0.16,0.09,0.08,0.07,0.04,0.03,0.02,0.010.08,0.07,0.04,0.03,0.02,0.01(1)(1)用霍夫曼编码对它们的操作码进行编用霍夫曼编码对它们的操作码进行编码,并计算平均代码长度。码,并计算平均代码长度。(2)(2)用扩展霍夫曼编码法对操作码进行编用扩展霍夫曼编码法对操作码进行编码,限两种操作码长度,并计算平均代码
18、,限两种操作码长度,并计算平均代码长度。码长度。0.151.000.390.190.100.060.030.310.610.010.020.030.040.070.080.090.160.200.30霍夫曼编码的结果以及各编码的长度如下所霍夫曼编码的结果以及各编码的长度如下所示:示:0.30 0.20 0.16 0.09 0.08 0.07 0.04 0.03 0.02 0.010.30 0.20 0.16 0.09 0.08 0.07 0.04 0.03 0.02 0.01 11 01 101 001 1001 1000 0001 00001 000001 000000 11 01 101
19、001 1001 1000 0001 00001 000001 000000 2 2 3 3 4 4 4 5 6 6 2 2 3 3 4 4 4 5 6 6平均代码长度为平均代码长度为(0.30+0.20)(0.30+0.20)2+(0.16+0.09)2+(0.16+0.09)3 3+(0.08+0.07+0.04)+(0.08+0.07+0.04)4+0.034+0.035+5+(0.02+0.01)(0.02+0.01)6 6=1+0.75+0.76+0.15+0.18=1+0.75+0.76+0.15+0.18=2.84=2.84(2)(2)用扩展霍夫曼编码法对操作码进行编码,限用扩展
20、霍夫曼编码法对操作码进行编码,限两种操作码长度,并计算平均代码长度。两种操作码长度,并计算平均代码长度。(2)(2)采用长度为采用长度为2 2和长度为和长度为4 4两种编码:两种编码:0.30 0.20 0.16 0.09 0.08 0.07 0.04 0.03 0.02 0.010.30 0.20 0.16 0.09 0.08 0.07 0.04 0.03 0.02 0.01 00 01 1000 1001 1010 1011 1100 1101 1110 1111 00 01 1000 1001 1010 1011 1100 1101 1110 1111平均代码长度为平均代码长度为 (0.
21、30+0.20)(0.30+0.20)2+(1-0.30-0.20)2+(1-0.30-0.20)4=3.04=3.0指令字长度等于机器字长度的指指令字长度等于机器字长度的指令,称为令,称为单字长指令单字长指令;指令字长度等于半个机器字长度指令字长度等于半个机器字长度的指令,称为的指令,称为半字长指令半字长指令;指令字长度等于两个机器字长度指令字长度等于两个机器字长度的指令,称为的指令,称为双字长指令双字长指令。使用多字长指令的目的使用多字长指令的目的 提供足够的地址位来解决提供足够的地址位来解决访问内存任何单元的寻址问题,访问内存任何单元的寻址问题,但是主要缺点是必须两次或多但是主要缺点是必
22、须两次或多次访问内存以取出整条指令,次访问内存以取出整条指令,这就降低了这就降低了CPUCPU的运算速度,同的运算速度,同时又占用了更多的存储空间。时又占用了更多的存储空间。如果在一个指令系统中,如果各如果在一个指令系统中,如果各种指令字长度是相等的,称为种指令字长度是相等的,称为等等长指令字结构长指令字结构,这种指令字结构,这种指令字结构简单,且指令字长度是不变的。简单,且指令字长度是不变的。如果各种指令字长度随指令功能如果各种指令字长度随指令功能而异,就称为而异,就称为变长指令字结构变长指令字结构。这种指令字结构灵活,能充分利这种指令字结构灵活,能充分利用指令长度,但指令的控制较复用指令长
23、度,但指令的控制较复杂。杂。为便于书写和记忆而设定为便于书写和记忆而设定的,与机器指令一一对应。的,与机器指令一一对应。l例例 若某计算机要求有如下形式的若某计算机要求有如下形式的指令:三地址指令指令:三地址指令4 4条,单地址指令条,单地址指令254254条,零地址指令条,零地址指令1616条条(不要求有不要求有二地址指令二地址指令)。设指令字长为。设指令字长为1212位,位,每个地址码长为每个地址码长为3 3位,试用扩展操作位,试用扩展操作码为其编码。码为其编码。l解:在三地址指令中三个地址字段占解:在三地址指令中三个地址字段占3 33=93=9位。剩下位。剩下12-9=312-9=3位作
24、为操作码,四条指令的操位作为操作码,四条指令的操作码分别为作码分别为000000、001001、010010、011011。在单地址指令中,操作码可以扩展到在单地址指令中,操作码可以扩展到12-3=912-3=9位,其中前位,其中前3 3位的代码是上述四个操作码以外的位的代码是上述四个操作码以外的4 4个编码,即首位为个编码,即首位为1 1。编码范围是。编码范围是1xxxxxxxx1xxxxxxxx。共有共有2 28 8=256=256个编码,取其前个编码,取其前254254个,个,100000000100000000111111101111111101。剩下。剩下2 2个作为扩展用。个作为扩
25、展用。对于零地址指令,全部对于零地址指令,全部1212位指令代码都是位指令代码都是操作码,其中前操作码,其中前9 9位剩下位剩下2 2个编码与后个编码与后3 3位的位的8 8个个编码正好构成编码正好构成1616个操作码。个操作码。操作码操作码111111101000111111111111零地址指100000000111111101000011单地址指三地址指地址码 1操作码地址码 1 地址码 2 地址码 3lIntel 8086/8088Intel 8086/8088指令格式指令格式opcode单字长指令单字长指令opcodeA双字长指令双字长指令opcodeA1A2三字长指令三字长指令lI
26、BM 370IBM 370系列指令格式系列指令格式IBM370IBM370系统是系统是IBMIBM公司于公司于19701970年推出的年推出的3232位位大型机,大型机,19831983年年IBMIBM推出了推出了370370扩充结构扩充结构IBM370-XAIBM370-XA,后来有扩充结构,后来有扩充结构ESA/370ESA/370。第一个半字第一个半字第二个半字第二个半字第三个半字第三个半字第一字节第一字节第一字节第一字节第三字节第三字节第四字节第四字节第一字节第一字节第二字节第二字节第五字节第五字节第六字节第六字节OPR1R2RRRR型型OPR1R2RRERRE型型OPR1X2B2D2
27、RXRX型型OPR1R2B2D2RSRS型型OPI2B1D1SISI型型OPB2D2S S型型OPLB1D1B2D2SSSS型型OPL1L2B1D1B2D2SSSS型型OPB1D1B2D2SSESSE型型操作码的第操作码的第0 0位和第位和第1 1位组成位组成4 4种不同编码,代表种不同编码,代表不同类型的指令:不同类型的指令:0000表示表示RRRR型指令型指令0101表示表示RXRX型指令型指令1010表示表示RRERRE型、型、RSRS型、型、S S型、型、SISI型指令型指令1111表示表示SSSS型、型、SSESSE型指令型指令OPR1R2RRRR型型OPR1R2RRERRE型型属于
28、寄存器属于寄存器-寄存器型指令,参加运算寄存器型指令,参加运算的操作数都在通用寄存器中。的操作数都在通用寄存器中。OPR1X2B2D2RXRX型型OPR1R2B2D2RSRS型型属于寄存器属于寄存器-存储器型指令。存储器型指令。RXRX是两地址指令,第一操作数与结果在是两地址指令,第一操作数与结果在寄存器寄存器R1R1中,第二操作数在存储器中,中,第二操作数在存储器中,地址地址=(X2X2)+(B2B2)+D2+D2。RSRS是三地址指令,结果在寄存器是三地址指令,结果在寄存器R1R1中,中,R2R2存放源操作数;另一个源操作数在存存放源操作数;另一个源操作数在存储器中,地址储器中,地址=(B
29、2B2)+D2+D2。OPI2B1D1SISI型型属于存储器属于存储器-立即数型指令,将立即数立即数型指令,将立即数immimm送到地址送到地址=(B2B2)+D2+D2的存储器中。的存储器中。OPB2D2S S型型属于单操作数指令,操作数地址属于单操作数指令,操作数地址=(B2B2)+D2+D2的存储器中。的存储器中。OPLB1D1B2D2SSSS型型OPL1L2B1D1B2D2SSSS型型OPB1D1B2D2SSESSE型型属于存储器属于存储器-存储器型指令。存储器型指令。SSSS、SSESSE指令的两个操作数都在存储器指令的两个操作数都在存储器中地址为(中地址为(B1B1)+D1+D1
30、和(和(B2B2)+D2+D2,(B1B1)+D1+D1 为目的地址。它们属于可变为目的地址。它们属于可变长指令,用于十进制运算和字符串的运长指令,用于十进制运算和字符串的运算和处理。算和处理。lP133 例例1lP134 例例24 43 3 寻址方式寻址方式 一、一、寻址方式寻址方式是寻找操作数是寻找操作数或指令地址的方式。或指令地址的方式。二、寻址方式的分类:二、寻址方式的分类:指令寻址指令寻址 操作数寻址操作数寻址指令寻址指令寻址是确定下一条将要执行是确定下一条将要执行指令地址的方法。指令地址的方法。指令寻址的基本方式有两种:指令寻址的基本方式有两种:顺序顺序寻址方式:下条将要执行的指令
31、在寻址方式:下条将要执行的指令在本条指令的后面。本条指令的后面。跳跃跳跃寻址方式寻址方式 :下条将要执行的指令在:下条将要执行的指令在本条指令的后面。本条指令的后面。0PC+1PC1PC+1PC2PC+1PC3PC+1PC66PC跳跃寻址7PC+1PC操作数的寻址方式是形成操操作数的寻址方式是形成操作数的有效地址的方法。作数的有效地址的方法。操作数的物理位置:操作数的物理位置:v指令指令v寄存器寄存器v存储单元存储单元vI/OI/O端口端口在很多情况下,形式地址在很多情况下,形式地址FAFA并不并不是有效地址是有效地址EAEA。FAFAEAEA 寻址方式寻址方式典型的寻址方式典型的寻址方式 隐
32、含寻址隐含寻址:这种类型的指令,不:这种类型的指令,不是明显地给出操作数的地址,而是明显地给出操作数的地址,而是在指令中隐含着操作数的地址。是在指令中隐含着操作数的地址。例:例:MUL OPS POP OPS XLAT CBW操作数在累加操作数在累加器中或者在堆器中或者在堆栈中。栈中。典型的寻址方式典型的寻址方式 立即寻址立即寻址:指令的地址字段指出的:指令的地址字段指出的不是操作数的地址,而是操作数本不是操作数的地址,而是操作数本身,这种寻址方式称为立即寻址。身,这种寻址方式称为立即寻址。例:例:MOV AX,0 MOV AL,6 MOV BX,OFFSET BUF MOV AL,PI 典型
33、的寻址方式典型的寻址方式 直接寻址直接寻址:是一种基本的寻址方法,:是一种基本的寻址方法,其特点是:在指令格式的地址字段其特点是:在指令格式的地址字段中直接指出操作数的地址中直接指出操作数的地址D D。操作。操作数可以在存储器中也可能在累加器数可以在存储器中也可能在累加器中。中。例:例:MOV AX,BUF MOV AL,ES:2000H MOV AX,BUF+2?典型的寻址方式典型的寻址方式 寄存器寻址方式寄存器寻址方式:当操作数不放在:当操作数不放在内存中,而是放在内存中,而是放在CPUCPU的通用寄存的通用寄存器中时,可采用寄存器寻址方式。器中时,可采用寄存器寻址方式。例:例:MOV A
34、X,DS MOV AL,BH 典型的寻址方式典型的寻址方式 间接寻址间接寻址:是相对于直接寻址而言:是相对于直接寻址而言的,在间接寻址的情况下,指令地的,在间接寻址的情况下,指令地址字段中的形式地址址字段中的形式地址D D不是操作数不是操作数的真正地址,而是操作数地址的指的真正地址,而是操作数地址的指示器,或者说示器,或者说D D单元的内容才是操单元的内容才是操作数的有效地址。作数的有效地址。例:例:MOV BX,BP IN AX,DX典型的寻址方式典型的寻址方式 寄存器间接寻址方式寄存器间接寻址方式:指令中的指令中的寄存器内容不是操作数,而是操作寄存器内容不是操作数,而是操作数的地址,该地址
35、指明的操作数在数的地址,该地址指明的操作数在内存中。内存中。例:例:MOV AX,BX IN AX,DX典型的寻址方式典型的寻址方式 相对寻址相对寻址:是把程序计数器:是把程序计数器PCPC的内的内容加上指令格式中的形式地址容加上指令格式中的形式地址D D而而形成操作数的有效地址。形成操作数的有效地址。例:例:JMP L1lJMPJMP指令的地址码为指令的地址码为20002000,要跳,要跳到到20082008单元,问偏移地址是多少?单元,问偏移地址是多少?答:答:6 6。lJMPJMP指令的地址码为指令的地址码为20002000,要跳,要跳到到1FF81FF8单元,问偏移地址是多少?单元,问
36、偏移地址是多少?答:答:-10-10。JMPJMP占两个字节。占两个字节。?典型的寻址方式典型的寻址方式 基址寻址方式基址寻址方式:将:将CPUCPU中基址寄存中基址寄存器的内容加上指令格式中的形式地器的内容加上指令格式中的形式地址而形成操作数的有效地址。址而形成操作数的有效地址。例:例:LEA BX,TAB MOV AX,BX+3典型的寻址方式典型的寻址方式 变址寻址方式变址寻址方式:把:把CPUCPU中某个变值中某个变值寄存器的内容与偏移量寄存器的内容与偏移量D D相加来形相加来形成操作数的有效地址。成操作数的有效地址。例:例:MOV SI,100 XOR AX,AX MOV CX,20L
37、OP:ADD AX,TAB SI INC SI LOOP LOP立即寻址立即寻址操作数操作数存储器直接寻址存储器直接寻址间接寻址间接寻址变址寻址变址寻址基址寻址基址寻址基址加变址寻址基址加变址寻址在指令中在指令中在寄存器中在寄存器中在主存中在主存中在在I/O端口中端口中直接寻址(直接寻址(8位)位)间接寻址(间接寻址(16位位 DX)寄存器直接寻址寄存器直接寻址寄存器寻址寄存器寻址存储器寻址存储器寻址问问:下图所指的寻址方式的名称下图所指的寻址方式的名称:操作操作数指令操作码寄存器指令操作数R操作码存储器指令操作数A操作码操作数A存储器寄存器指令R存储器指令操作码操作数AA操作码操作数PC指令
38、存储器AIA存储器寄存器R指令操作码操作数PCIA存储器寄存器R指令操作码操作数IA存储器寄存器R指令操作码操作数A寻址方式的特点寻址方式的特点 速度速度 FAFA地址的长度地址的长度 编程的灵活性编程的灵活性 适用的场合适用的场合PDP/11PDP/11系列机系列机PentiumPentium的寻址方式。的寻址方式。堆栈和其他形式的存储堆栈和其他形式的存储器之间的差别就在于,它们器之间的差别就在于,它们对数据的对数据的存取方法存取方法或寻址方或寻址方法有所不同。法有所不同。4 44 4 堆栈寻址方式堆栈寻址方式 堆栈是满足先进后(堆栈是满足先进后(FILOFILO)、)、后进先出(后进先出(
39、LIFOLIFO)存储规则的存)存储规则的存储区。储区。l栈顶栈顶l栈底栈底l堆栈指针(堆栈指针(SPSP)串行堆栈是由串行堆栈是由CPUCPU当中的当中的一组专门的寄存器构成。串行一组专门的寄存器构成。串行堆栈的最大优点是速度快。堆栈的最大优点是速度快。串行堆栈存的容量有限,为了突串行堆栈存的容量有限,为了突破这种限制,使用了存储器堆栈,其破这种限制,使用了存储器堆栈,其优点在于:优点在于:堆栈能够具有程序员要求的任意长度;堆栈能够具有程序员要求的任意长度;只要程序员喜欢,愿意建立多少堆栈,只要程序员喜欢,愿意建立多少堆栈,就能建立多少堆栈;就能建立多少堆栈;可以用对存储器寻址的任何一条指令
40、可以用对存储器寻址的任何一条指令来对堆栈中的数据进行寻址。来对堆栈中的数据进行寻址。存储器堆栈使用存储器堆栈使用CPUCPU中的一个特中的一个特殊寄存器作为殊寄存器作为堆栈指示器堆栈指示器SPSP。串联堆栈和存储器堆栈的操作串联堆栈和存储器堆栈的操作方式不同,在串联堆栈中,移方式不同,在串联堆栈中,移动的是数据,而在存储器堆栈动的是数据,而在存储器堆栈中,移动的是栈顶。这主要和中,移动的是栈顶。这主要和两种堆栈的速度有关。两种堆栈的速度有关。4 45 51 1 指令的分类指令的分类 4 45 52 2 基本指令系统基本指令系统 4 45 53 3 精简指令系统精简指令系统 一个较完善的指令系统
41、应当包括一个较完善的指令系统应当包括:数据传送类指令数据传送类指令:move,load,storemove,load,store算术运算类指令算术运算类指令:add,sub,mult,div,compadd,sub,mult,div,comp逻辑运算类指令逻辑运算类指令:and,or,neg,shiftand,or,neg,shift程序控制类指令程序控制类指令:jump,branch,jsr,ret,jump,branch,jsr,ret,intint输入输出指令输入输出指令:in,outin,out堆栈操作:堆栈操作:push,poppush,pop字符串类指令字符串类指令系统控制类指令系
42、统控制类指令451 指令的分类指令的分类指令系统的基本指令指令系统的基本指令 指令的访存类型指令的访存类型l堆栈型堆栈型l累加器型累加器型l通用寄存器型:寄存器通用寄存器型:寄存器-寄存器寄存器型,寄存器存储器型,存储器型,寄存器存储器型,存储器-存储器型存储器型在不同地址结构的机器中完成 z=x-y 操作的代码序列堆栈结构累加器结构寄存器/存储器结构存存型结构存取型结构PUSHA LOADA LOADR1,A SUBC,A,B LOADR1,A PUSHB SUBB SUBR1,B LOADR2,B SUB STOREC STOREC,R1 SUBR3,R1,R2 POPC STOREC,R
43、3 CISCCISC早期早期CISCCISC设计风格的主要特点:设计风格的主要特点:(1)(1)指令系统复杂。具体表现在指令数多、寻址方式指令系统复杂。具体表现在指令数多、寻址方式多、指令格式多。多、指令格式多。(2)(2)绝大多数指令需要多个时钟周期才能执行完成。绝大多数指令需要多个时钟周期才能执行完成。(3)(3)各种指令都可访问存储器。各种指令都可访问存储器。(4)(4)采用微程序控制。采用微程序控制。(5)(5)有专用寄存器。有专用寄存器。(6)(6)难以用优化编译生成高效的目标代码程序。难以用优化编译生成高效的目标代码程序。RISC的发展:IBM801斯坦福MIPS伯克利SPARCD
44、ECAlphaHPPAIBMPowerPCRISCRISC指令系统的主要特征:指令系统的主要特征:1 1、选取使用频率最高的一些简单指令;、选取使用频率最高的一些简单指令;2 2、指今长度固定,指令格式种类少,、指今长度固定,指令格式种类少,寻址方式种类少;寻址方式种类少;3 3、只有取数存数指令访问存储器,、只有取数存数指令访问存储器,其余的指令操作都在寄存器之间进行。其余的指令操作都在寄存器之间进行。RISCRISC的的CPUCPU的寄存器较多。的寄存器较多。RISCRISC技术的主要特征:技术的主要特征:l 简化的指令系统。表现在指令数较少、基本寻简化的指令系统。表现在指令数较少、基本寻
45、址方式少、指令格式少、指令字长度一致。址方式少、指令格式少、指令字长度一致。l 以寄存器寄存器方式工作。以寄存器寄存器方式工作。l 以流水方式工作,从而可在一个时钟周期内执以流水方式工作,从而可在一个时钟周期内执行完毕。行完毕。l 使用较多的通用寄存器以减少访存,不设置或使用较多的通用寄存器以减少访存,不设置或少设置专用寄存器。少设置专用寄存器。l 采用由阵列逻辑实现的组合电路控制器,不用采用由阵列逻辑实现的组合电路控制器,不用或少用微程序。或少用微程序。l 采用优化编译技术,保证流水线畅通,对寄存采用优化编译技术,保证流水线畅通,对寄存器分配进行优化。器分配进行优化。RISCRISC技术的主
46、要特征:技术的主要特征:l 简化的指令系统。表现在指令数较少、基本寻址方简化的指令系统。表现在指令数较少、基本寻址方式少、指令格式少、指令字长度一致。式少、指令格式少、指令字长度一致。l 以寄存器寄存器方式工作。以寄存器寄存器方式工作。l 以流水方式工作,从而可在一个时钟周期内执行完以流水方式工作,从而可在一个时钟周期内执行完毕。毕。l 使用较多的通用寄存器以减少访存,不设置或少设使用较多的通用寄存器以减少访存,不设置或少设置专用寄存器。置专用寄存器。l 采用由阵列逻辑实现的组合电路控制器,不用或少采用由阵列逻辑实现的组合电路控制器,不用或少用微程序。用微程序。l 采用优化编译技术,保证流水线
47、畅通,对寄存器分采用优化编译技术,保证流水线畅通,对寄存器分配进行优化。配进行优化。MIPSMIPS处理器的主要特征:处理器的主要特征:指令系统简单。指令系统简单。MIPSMIPS所有的指令都是所有的指令都是3232位宽度。指令数总共位宽度。指令数总共6 6类。指令格式共三种,即立即数型、转移型类。指令格式共三种,即立即数型、转移型和寄存器型,如图和寄存器型,如图4-154-15所示。操作数寻址方所示。操作数寻址方式有基址加式有基址加1616位位移量的访存寻址、立即数位位移量的访存寻址、立即数寻址及寄存器寻址三种。寻址及寄存器寻址三种。o p rsrtrd sh am tfu n cto p
48、rsrtad d ress/im m ed iateo p target6 5 5 5 5 6 算 术 指 令 R 数 据 传 输、转 移、立 即 数 运 算指 令 IJJu m p 指 令 MIPSMIPS处理器的主要特征:处理器的主要特征:l指令系统简单。指令系统简单。l不采用硬件流水互锁。不采用硬件流水互锁。MIPSMIPS依靠优化编译器进行指令依靠优化编译器进行指令序列的重新安排,以防止流水线中出现的相互冲突。序列的重新安排,以防止流水线中出现的相互冲突。l使用较多寄存器。使用较多寄存器。MIPSMIPS中有中有3232个通用寄存器、一对存个通用寄存器、一对存储储6464位数据的寄存器
49、位数据的寄存器Hi,LoHi,Lo以及异常以及异常PCPC寄存器寄存器epcepc。3232个通用寄存器分别表示为个通用寄存器分别表示为$0$0到到$31$31,其中,其中$0$0固定为固定为0 0。Hi,LoHi,Lo寄存器用于存放定点乘法的结果。寄存器用于存放定点乘法的结果。l采用采用“比较与转移比较与转移”指令。使比较和转移这两个动作指令。使比较和转移这两个动作在一条指令内便可完成,如在一条指令内便可完成,如beq$1,$2,1000beq$1,$2,1000。MIPSMIPS没有状态寄存器。没有状态寄存器。指令举例操作说明and$1,$2,$3$1=$2&$3与操作or$1,$2,$3
50、$1=$2|$3或操作andi$1,$2,100$1=$2&100立即数与操作ori$1,$2,100$1=$2|100立即数或操作sll$1,$2,10$1=$210逻辑右移指令举例操作说明lw$1,100($2)$1=M$2+100装入字sw$1,100($2)M$2+100=$1存储字lui$1,100$1=100216装入立即数到高位指令举例操作说明beq$1,$2,100if($1=$2)go to PC+4+100相等时转移bne$1,$2,100if($1!=$2)go to PC+4+100不相等时转移slt$1,$2,$3if($2$3)$1=1;else$1=0小于时置位s