您好,欢迎访问三七文档
当前位置:首页 > 办公文档 > 述职报告 > 第5章 指令与指令系统和汇编语言程序设计
第5章指令、指令系统和汇编语言程序设计计算机指令指挥计算机硬件运行的命令由若干个二进制位组成的位串(信息体)计算机硬件可直接识别和执行计算机运行的最小功能单元一台计算机提供的全部指令构成该计算机的指令系统指令概述、功能计算机系统硬件软件为使用硬件而编制的、由一系列的计算机指令组成CPU存储器外围设备具体一点说,可以把设计要求归纳如下:完备性:指令齐全,编程方便规整性:格式与运算规则统一高效性:占内存少,运行省时兼容性:同一系列机软件兼容使用者:程序员,希望用它设计程序简单、方便实现者:硬件设计者,希望节省、高效实际上,这两方面的要求经常矛盾。(如何折中?)对设计指令系统的要求确定指令系统的两种思路从降低硬件系统构成的复杂度、提高指令执行速度和并行性考虑,确定指令系统的两种思路:精简指令系统计算机指令数目较少、格式与功能简单、运行高效追求计算机控制器实现简单,运行高速,更容易在单块超大规模集成电路芯片内制做指令并行性好复杂指令系统计算机指令条数多,格式多样,寻址方式复杂,每条指令的功能强,汇编程序设计容易些计算机控制器的实现困难多,很多指令使用机会少。指令并行度差RISCReducedInstructionSetComputerCISCComplexInstructionSetComputer指令格式指令格式:指令字:完整的一条指令的二进制表示指令字长:指令字中二进制代码的位数机器字长:计算机能直接处理的二进制数据的位数指令字长(字节倍数)=0.5、1、2…个机器字长定长指令字结构vs.变长指令字结构操作码操作数指令的操作功能,确定、唯一指令的操作对象或操作对象的地址操作码组织与编码定长操作码用固定若干位表示操作码,有利于简化计算机硬件设计,提高指令译码和识别速度。例如:TEC-2000的16位机操作码位数限制指令系统中指令条数!操作码(mbit)操作数(nbit)变长操作码用固定长度的字段表示基本操作码,把较短操作数地址字段中多余位用作扩展指令操作码,可缩短平均指令长度,但增加了译码和分析难度。例如:TEC-2000的8位机基本指令操作码(mbit)操作数(nbit)扩展指令操作码(m+rbit)操作数(n-rbit)指令操作数个数无操作数指令(零地址指令)单操作数指令(一地址指令)双操作数指令(二地址指令)三操作数指令(二地址指令)多操作数指令(多地址指令)指令操作数来源和去向CPU内部的通用寄存器:寄存器编号或名称I/O设备(接口)的寄存器:端口地址主存储器的存储单元:内存地址操作数个数与来源OPA1A2OPA1OPOPA1A2A3OPA1A2更多假设某机器的指令长度为16位,包括4位基本操作码和三个4位地址码段。15…1211……87……43……0OPA1A2A34位基本操作码可表示16个状态,如用4位操作码,则能表示16条三地址指令,若用8位操作码,则可表示256条二地址指令,若用12位操作码,则可表示4096条一地址指令,若16位全用作操作码,则可表示65536条零地址指令操作码的扩展技术若需要在16位字长的指令中能够同时支持三地址、二地址、一地址指令各15条,零地址指令16条,则可以选用如下方案的变长操作码实现:16条零地址指令的操作码的高12位每位均用1,低4位随意,即:1111111111110000~111111111111111115条三地址指令的操作码为:0000~111015条二地址指令的操作码的高4位选用1111,低4位用0000~1110,即得到:11110000~1111111015条一地址指令的操作码的高8位选用11111111,低4位用0000~1110,即:111111110000~111111111110操作码的扩展技术实际上,只要各操作码的编码互不相同,就可区分不同的指令。当每次扩展的位数和保留的位数变化时,可扩指令条数就可变化。例如在16位指令字中,也可以选用如下方案支持三地址指令、二地址指令、一地址指令和零地址指令14、30、31、16条:16条零地址为:1111111111110000~111111111111111114条三地址为:0000~1101(保留1110、1111两个码)30条二地址为:11100000~11111101(保留2个码)31条一地址为:111111100000~111111111110(保留1个码)操作码的扩展技术寻址方式(又称编址方式):确定本条指令的数据或数据地址或下一条要执行的指令地址的方法。在指令中为每个操作数专设地址字段,用来表示数据的来源或去向的地址。指令中给出的操作数(或指令)的地址被称为形式地址,形式地址按一定的规则计算出来的数值才是数据(或指令)的实际地址。在指令的操作数地址字段,可能要指出:①运算器中的累加器的编号或专用寄存器名称(编号)②输入/输出指令中用到的I/O设备的入出端口地址③内存储器的一个存储单元(或一I/O设备)的地址寻址方式操作数在指令的地址字段直接给出。OP寻址特征Num适用于操作数固定的情况,当立即数值较小,其占用位数少,可在指令字第一个字中直接给出,否则需要用指令的第二个字提供。指令的第2个字(1)立即数寻址立即数,例如Num=1234H,则指令的一个操作数就是1234H。指令地址码字段直接给出操作数(或指令)在存储器中的地址。OP寻址特征AddrAddr为操作数在存储器中的地址,或转移指令的转移地址。例:Addr=5718H,可能是下一条指令的地址或一个操作数的地址,若[5718H]=3,则用5718H作地址,从内存储器单元中读出的操作数就是3。内存储器操作数(2)直接寻址寄存器寻址方式:指令地址码字段给出CPU中某寄存器的编号(地址),操作数在该寄存器中。寄存器间接寻址方式:寄存器中存放的是操作数在存储单元的地址。可通过指令操作码或另设特征来区分。OP寻址特征RegNo.例:RegNo.=5,使用5#累加器,此时若5#累加器中的内容为7,可记为(R5)=7,对寄存器寻址,操作数就是7对寄存器间接寻址,操作数是从7#存储单元读出来的数(3)寄存器寻址、寄存器间接寻址操作数的地址由指定的变址寄存器(由Reg指定)的内容和变址偏移量(Disp)相加得到。OP寻址特征RegDisp操作数存储器变址寄存器加法器例:Disp=18H,Reg=5,(R5)=5700H则操作数地址=5718H通常用于访问数组:变址寄存器内容(放数组下标)变化,变址偏移量(放数组名)不变。(4)变址寻址指令的地址由程序计数器PC的内容(即当前执行指令的地址)和相对寻址偏移量(Disp)相加得到。OP寻址特征Disp例:Disp=48H(PC)=5600H则实际地址=5648H(1)主要用于转移指令,对浮动程序也很有用。(2)偏移量可正可负,通常用补码表示。PC(5)相对寻址指令的地址码字段给出的是操作数(或指令)地址的地址,需要多读一次内存。OP寻址特征Addr操作数Addr1Addr可用其他寻址方式给出,例如变址寻址,成为变址与间接的复合寻址方式(6)间接寻址存储器设置专用的基址寄存器,操作数(或指令)的地址通过基址寄存器的内容和指令中的地址码(Disp)相加得到。OP寻址特征Disp基址寄存器加法器存储器操作数例:Disp=18H,[BS]=5700H则操作数地址=5718H主要用于为程序或数据分配存储区,对多道程序或浮动程序很有用,解决了程序在存储器中的定位和扩大寻址空间等问题。(7)基址寻址堆栈:内存储器、后进先出用专用寄存器(堆栈指针SP)给出栈顶地址,读写通常在栈顶进行,故不必在指令中给出堆栈地址,读写前后伴随自动修改SP,确保SP指向栈顶。入栈:先SP-1SP、AR(地址寄存器),再把数据写入堆栈。出栈:SPAR,读栈顶,再SP+1SP。以上入出栈操作针对递减、满栈结构。(8)堆栈寻址15200HACCSPX栈顶200H栈底主存151FFHACCSP15栈顶200H栈底主存X1FFHPUSHA前PUSHA后POPA前POPA后Y1FFHACCSPX栈顶200H栈底主存151FFH15200HACCSP栈顶200H栈底主存X15堆栈寻址举例输入设备输出设备入出接口和总线外存设备主存储器高速缓存控制器运算器ADDSUBANDORMVRRSHRRCLOUTSTOREPUSHJUMPJRCCALLRETLOADPOPIN计算机应配置的基本指令教学机的基本指令(29条)算术逻辑运算指令ADD、SUB、AND、XOR、TEST、CMP、OR、DEC、INC、SHL、SHR数据移动指令MVRR、MVRD、LDRR、STRR堆栈操作指令PUSH、POP、PSHF、POPF输入输出指令IN、OUT转移指令JMPA、JR、JRC、JRNC、JRZ、JRNZ子程序调用与返回指令CALA、RETMV:MOVELD:LOADST:STORESH:SHIFTJMP:JUMPCAL:CALLRET:RETURNJR:JUMPRELATIVER:REGISTERD:DATAA:ADDRESSF:FLAGS指令命名规则请说明下列各指令的寻址方式、指令字格式及长度、执行时访问存储器/外设次数。1、数据传送类:MVRRR1,R2MVRDR1,2003LDRRR1,[R2]LDRAR1,[2003]LDRXR1,R2[2003]2、算术运算类:ADDR1,R2INCR13、转移类:JMPA2003,JR20034、堆栈类:PUSHR0你觉得教材的指令系统中为什么没有包含以下指令?ADRDR1,0001ADRRR1,[R2]ADRAR1,[0001]思考题教学机指令格式单字无数单字单数单字双数双字单数双字双数8位操作码IR15-IR8含义00000000DRSRADDDR,SR00000111DRSRMVRRDR,SR10000001DRSRLDRRDR,[SR]11100100DR0000LDRADR,[ADR]1100111000000000CALAADR指令格式汇编语句操作数个数CZVS指令类型功能说明00000000DRSR00000001DRSR00000010DRSR00000011DRSR00000100DRSR00000101DRSR00000110DRSR00000111DRSR00001000DR000000001001DR000000001010DR000000001011DR000001000001OFFSET01000100OFFSET01000101OFFSET01000110OFFSET01000111OFFSETADDDR,SRSUBDR,SRANDDR,SRCMPDR,SRXORDR,SRTESTDR,SRORDR,SRMVRRDR,SRDECDRINCDRSHLDRSHRDRJRADRJRCADRJRNCADRJRZADRJRNZADR22222222111111111********·*··****·*··****·*······*********···*·······················A组指令DR←DR+SRDR←DR-SRDR←DRandSRDR-SRDR←DRxorSRDRandSRDR←DRorSRDR←SRDR←DR-1DR←DR+1DR,C←DR*2DR,C←DR/2无条件跳转到ADRC=1时跳转到ADRC=0时跳转到ADRZ=1时跳转到ADRZ=0时跳转到ADR100000000000000ADR(16位)10000001DRSR10000010I/OPORT10000011DRSR1000010000000000100001010000SR10000110I/OPORT10000111DR000010001000DR0000DATA(16位)10001100000000001000111100000000JMPAADRLDRRDR,[SR]INI/OPORTSTRR[DR],SRPSHFPUSHSROUTI/OPORTPOPDRMVRDDR,DA
本文标题:第5章 指令与指令系统和汇编语言程序设计
链接地址:https://www.777doc.com/doc-3350068 .html