微型计算机原理与接口技术

电脑提示虚拟内存不足  时间:2021-01-19  阅读:()
(第十讲)5寻址方式和指令系统指令系统的格式和编码80x86的寻址方式8086/8088CPU的指令系统Intel80x86系列CPU扩充的指令5.
1指令系统的格式、编码基本概念–机器指令:计算机硬件能识别,由0、1代码组成的,并直接能被执行的操作命令.
–程序:为计算完成一个完整的任务,需要执行的一组指令指令通常应提供哪些信息1.
做什么操作2.
操作数从哪里来3.
操作结果放在哪里4.
下一步如何操作(下一条指令的地址)指令系统是指计算机所具有的各种指令的集合.
其中每条指令都对应着处理器要完成的一种规定的功能操作.
指令系统表征了计算机的基本功能Instruction:Amachinecodetellingacomputertoperformaparticularoperation.
每一条CPU指令完成一系列计算机特定的操作功能,一般由两部分组成(功能构成):操作码(OP):说明本指令执行操作的性质和功能.
地址码(AD):说明本指令在执行操作的过程中,如何取得相关操作数或操作数的地址,或给出下一条指令地址.
指令长度:固定格式(精简指令计算机RISC)、可变格式(复杂指令计算机CISC)操作码(OP)地址码(AD)1、指令的组成格式(1)零地址无需操作数或操作数隐含(2)单地址(3)二地址分别表示源/目的操作数(4)三地址(5)四地址两个源操作数、一个目的操作数及下一条指令地址源操作数:参与指令操作的数据来源目的操作数:指令操作后数据存储目的地操作数存在形式:数值、存储地址(直接、间接等)(参见P114-115操作码和寻址方式字节格式)OPOPADOPAD1OPAD1OPAD1AD2AD2AD3AD2AD3AD4同一个源/目的操作数,或一个隐含两个源操作数、一个目的操作数2、指令的地址格式微型计算机大中型计算机例:8086/8088指令编码格式指令由1~6个字节组成,包括操作码、寻址方式以及操作数三个部分组成;在操作码字节中第D1、D0位分别用于表示指令中数据传送的方向和操作数类型寻址方式字节被分为三个域,分别为mod(方式)、reg(寄存器)、和r/m(寄存器/存储器)域,指出两个操作数的存放地址、以及寻求存储器中操作数有效地址的方法;思考:可变字长指令格式意味着什么,CPU如何正确读取指令图5-18086/8088不同字长的指令格式类型图5-2操作码和寻址方式字节格式D:0Reg->R/m;1RegR/m;1Reg<-R/m;W:08bit;116bit;5.
2寻址方式概念:–指令寻址方式:求得下一条要执行指令的地址的方法;–操作数寻址方式:指令中如何提供操作数或操作数地址的方式.
5.
2.
1指令寻址方式指令寻址的类型:–顺序寻址:按指令存放的地址,顺序读取并执行指令的过程;–转移地址寻址:由指令字节包含的信息给出下一条指令的地址,或由预先设置好的转移地址来获得下一条指令地址;段内转移和段间转移JMP直接转移和间接转移中断转移INT返回转移RET5.
2.
2操作数寻址方式概念:–操作数:当CPU执行一条指令时,它要对数据完成某种特定操作,这些数据称为操作数;源操作数、目的操作数;–有效地址(EA):存放操作数的段内偏移地址(偏移量);–物理地址(PA):存放操作数的存储器单元的实际地址;指令中操作数的类型:–立即数:只能作源操作数使用;–寄存器操作数:既可以是源操作数,也可作目的操作数;–存储器操作数:不可同时为源操作数或目的操作数;80x86不同工作方式下的寻址方式–实地址方式寻址立即寻址、寄存器寻址、存储器寻址(直接、间接)–保护方式寻址(仅80386/486)立即寻址、寄存器寻址、存储器寻址(直接、间接+比例因子)–要求熟练掌握8086实地址方式下的寻址方式;为什么需要多种寻址方式–不同寻址方式实质上就是多种构成段内偏移量EA的方法–CPU内部完成有效地址EA的计算并产生相应物理地址PA–EA由几个部分组成,可以适应多种数据结构访问的需要指令格式:MOVDST,SRC;操作:DST<―SRC功能:实现CPU内部寄存器或寄存器与内存间数据传送例:MOVAL,BL;MOVCX,[1000H];MOVBL,40通用数据传送指令:MOV(1)立即数寻址方式操作数直接包含在指令字节中(代码段),可以是8/16位,在取出指令的同时也就取出了可以立即使用的操作数;例如:MOVBL,12H;(BL)←12HMOVAX,1234H;(AX)←1234H12H34H操作码AXAHAL低地址高地址低字节高字节高字节低字节代码段特点:–立即数从指令队列中直接取得,执行速度快;–立即数只能是整数,只能作为源操作数;–主要用来给寄存器或存储器赋初值;(2)寄存器寻址方式操作数存放在指令规定的CPU内部的寄存器中,对于16位操作数可以是:AX、BX、CX、DX、SI、DI、SP、BP、DS、SS、ES、CS(CS不能作目的操作数),对于8位操作数可以是:AH、AL、BH、BL、CH、CL、DH、DL;例如:MOVDS,AX;将AX中的内容送到DSMOVAH,BL;将BX中的低8位送到AH特点:–操作数在寄存器中,不需要访问存储器,执行速度快;–指令字长(目标代码)较短,常用于CPU内部传送数据;(3)存储器寻址方式直接寻址寄存器间接寻址寄存器相对寻址(基址寻址、变址寻址)基址变址寻址(基址加变址寻址)相对基址变址寻址(带位移量的基址加变址寻址)1)直接寻址有效地址EA就包含在指令字节中,它存放指令操作码之后,从有效地址中能获得操作数,默认从数据段中取操作数;物理地址:PA=(DS)*10H+EA例如:MOVAX,[2000H];(AX)←(DS:2000H)4567……AXAHAL低地址高地址低字节高字节高字节低字节2000操作码DS*16=10000HEA=2000H12000H12000H12001H代码段数据段特点:–一般情况下,操作数存放在数据段,默认段寄存器为DS–根据有效地址(EA)直接从主存中访问操作数,但地址不能修改,因此直接寻址方式适用于处理单个变量–如果操作数在其它段(CS、SS、ES),允许用"段超越前缀"指定段名,其格式为:"段寄存器名:有效地址"例如:MOVAX,ES:[1200H]物理地址:PA=(ES)*10H+1200H2)寄存器间接寻址操作数在存储器中,操作数的有效地址(EA)由指令中指定的寄存器给出(即,EA的值存放在CPU内部的寄存器中).
EA=(寄存器)例如:MOVAX,[SI];(AX)←(DS:SI)2827……AXAHAL低地址高地址低字节高字节高字节低字节DS*16=A0000HEA=SI=2000HA2000HA000:2000A000:2001数据段A000:0000段首址物理地址逻辑地址特点:–由寄存器BX、BP、SI或DI,间接给出操作数的偏移地址;–这种寻址方法可以用于一维表格处理.
–默认方式下,操作数段地址取决于选择哪个间址寄存器:BX,SI,DI默认在数据段BP默认在堆栈段–指令中可通过指定"段超越前缀"来访问其他段中的数据例如:MOVAX,DS:[BP];(AX)←(DS:BP)MOVAX,[COUNT+DI];(AX)←(DS:DI+COUNT)7856……3000操作码AXAHAL高字节低字节DS*16=40000HDI=2000HCOUNT=3000H45000H45000HA0000段首址3)寄存器相对寻址操作数的有效地址(EA)是由一个基址寄存器(BX或BP)或变址寄存器(SI或DI)中的内容与指令中8位或16位位移量相加而得,可以理解为带位移量的寄存器间接寻址;EA=(寄存器)+位移量例如:特点:–使用寄存器BX、SI、DI时,段寄存器默认为DS,使用寄存器BP时,段寄存器默认为SS;–使用基址寄存器(BX、BP)时也称为基址寻址方式,当使用变址寄存器(SI、DI)时也称为变址寻址方式;–指令中可通过指定"段超越前缀"来访问其他段中的数据–该寻址方式常用于一维线性表的访问;例如:MOVAX,[BX+200H];将DS段中EA=[BP+200H]的2字节数据送到AXMOVAX,[COUNT+DI];COUNT为符号常量MOVAX,COUNT[DI];这两条语句两者等价4)基址变址寻址存放操作数的有效地址EA是基址寄存器(BX或BP)的内容加上一个变址寄存器(SI或DI)的内容;基址寄存器选用BX时,则段寄存器约定使用DS;选用BP时,段寄存器约定使用SS;EA=(基址寄存器)+(变址寄存器)例如:MOVAX,[BX][SI];EA=(BX+SI)MOVAX,[BX+SI];这两条语句等价ARRAYARRAY+1ARRAY+2ARRAY+3ARRAY+4ARRAY+5存储器元素ARRAYBXSI特点:–这种寻址方式同样适用于数组或表格处理,表格首地址基址寄存器中,用变址寄存器来访问数组中的元素;–两个寄存器都能修改,所以比直接变址方式更灵活,可用于在二维数组中检索数组元素;5)相对基址变址寻址存放操作数的有效地址(EA)是一个基址寄存器(BX、BP)和变址寄存器(SI、DI)的内容再加上8位或16位的位移量之和.
基址寄存器选用BX,则段寄存器约定使用DS;基址寄存器选用BP,则段寄存器约定使用SS;EA=(基址寄存器)+(变址寄存器)+位移量例如:MOVAX,[BX+SI+ARRAY];ARRAY为符号常量MOVAX,ARRAY[BX][SI];这两条语句等价特点:–主要用于二维数组操作,位移量即为数组启始地址;图4-16相对基址变址寻址用于二维数据阵列寻址方式小结:8086/8088CPU的寻址方式:①立即数寻址②寄存器寻址③直接寻址④寄存器间接寻址⑤寄存器相对寻址⑥基址加变址寻址⑦相对基址加变址寻址80386、80486、80586、Pentium扩充了三种寻址方式:①带比例因子的变址寻址②基址加比例因子的变址寻址③相对基址加比例因子的变址寻址本课程以8086CPU中8/16位的实地址操作数寻址方式为主寻址方式的格式汇总:(1)立即寻址MOVAX,2000H有效地址EA=物理地址PA=(2)寄存器寻址MOVDS,AX有效地址EA=物理地址PA=(3)直接寻址MOVAX,[2000H]有效地址EA=2000H物理地址PA=DS*10H+2000H(4)寄存器间接寻址MOVAX,[BX]有效地址EA=BX物理地址PA=DS*10H+BX(5)寄存器相对寻址MOVAX,[BX+50H]有效地址EA=BX+50H物理地址PA=DS*10H+BX+50H(6)基址变址寻址MOVAX,[BX+SI]有效地址EA=BX+SI物理地址PA=DS*10H+BX+SI(7)相对基址变址寻址MOVAX,[BX+SI+50H]有效地址EA=BX+SI+50H物理地址PA=DS*10H+BX+SI+50H5.
38086/8088CPU的指令系统8086/8088指令的分类–基本指令133条,按功能可分为6大类:数据传送类指令(通用数据、目的地址、标志位传送、输入/输出)算术运算类指令(加法、减法、乘法、除法、BCD调整)逻辑运算与移位指令(逻辑运算、移位、循环移位)串操作指令(字符串的传送、存和取、扫描和比较、重复前缀)控制转移类指令(转移指令、循环控制指令、调用子程序和返回)处理器(CPU)控制指令(标志位操作指令、同步指令、暂停指令)–重点掌握8086微处理器的寻址方式与指令系统8086与80286/80386/80486在实地址方式时,机器代码级完全向上兼容,可访问的存储器区域均为1MB的范围,其物理地址的计算方法基本相同.
1、数据传送类指令:通用数据传送指令–MOVOpd,Ops将字节或字数据由源送至目的交换指令–XCHGOpd,Ops字节或字交换–XLAT/XLATB寻址内存表中一个字节值送入AL中堆栈操作指令–PUSH/POPOps字压入堆栈/字弹出堆栈地址传送指令–LEAREG,MEM将存储器地址装入一个寄存器–LDS/LESREG,MEM装入偏移地址和数据段/附加段基址输入/输出指令–IN/OUTAX,Port/Port,AX从端口传送字节/字到AX/AX输出标志位传送指令–LAHF/SAHF标志REG低8位送AH/AH送标志REG–PUSHF/POPF标志REG压入堆栈/栈顶弹出标志REG掌握要点:①数据传送指令的执行过程不影响标志寄存器FR中的标志位状态;②输入/输出指令必须通过累加器(AL/AX)进行I/O端口的数据传送;(1)通用数据传送指令通用数据传送指令MOV(Move)格式:MOVdest,src功能:srcdest举例:MOVAL,BL说明:①两操作数的字长必须相同;②两操作数不允许同时为存储器操作数或段寄存器;③不允许对段寄存器直接用立即数赋值;④IP和CS不作为目标操作数.
例:试判断下列指令的正确性:MOVAL,BXMOVAX,[SI]05HMOV[BX][BP],BXMOVDS,2000HMOVDX,09HMOV[1200],[SI]MOV[1200],AX*√**√*√(2)交换指令1)交换指令XCHG(Exchange)格式:XCHGREG/MEM,MEM/REG功能:交换两个操作数的值说明:两操作数必须有一个是寄存器操作数;举例:XCHGAX,BXXCHG[2000],CL2)查表转换指令XLAT(TranslateBytetoAL)格式:XLAT功能:(BX+AL)AL说明:用BX的内容代表表格首地址,AL内容为表内位移量,BX+AL得到要查找元素的偏移地址执行指令序列:LEABX,Hex_tableMOVAL,0AHXLAT执行XLAT以后:30H31H32H.
.
.
39H41H42H.
.
.
46H.
.
.
Hex_tableHex_table+1Hex_table+2Hex_table+0AHHex_table+0BHHex_table+0FH'F''B''A''9''1''2''0'内存的数据段中有一张十六进制数字的ASCII码表.
其首地址为:Hex_table,欲查出表中第10个元素的编码.
16进制数的ASCII码表例:(AL)=41H即'A'的ASCII码.
(3)堆栈操作指令1)压栈指令PUSH(Push)格式:PUSHOP1功能:将源操作数内容(字)压入堆栈2)出栈指令POP(Pop)格式:POPOP1功能:从栈顶内容(字)弹出至目的操作数地址中说明:①指令的操作数必须是16位的;②操作数可以是寄存器或存储器;③出栈指令的操作数不能是立即数;④不能从栈顶弹出一个字给CS,IP;堆栈的操作压入:格式:PUSHSRC先修改指针:SP=SP-2后压入:SRC→(SP+1,SP)弹出:格式:POPDST先弹出:(SP+1,SP)→DST后修改指针:SP=SP+2最后一项…高地址栈底压入堆栈(SS)栈顶(SP)弹出堆栈操作的特点:"向上生长"、"按字操作"思考:利用堆栈可以完成什么功能1)装入偏移地址指令LEA(LoadEAtoRegister)格式:LEAOP1,OP2功能:把指令中指定的存储器操作数EA装入指定的寄存器;2)装入寄存器和数据段寄存器指令LDS(LoadPointertoDS)格式:LDSOP1,OP2功能:将指令指定32位地址指针送指令指定寄存器和DS;3)装入寄存器和附加段寄存器指令LES(LoadPointertoES)格式:LESOP1,OP2功能:将指令指定32位地址指针送指令指定寄存器和ES;(4)地址传送指令设,已知:(DS)=3000HBUFFER=1000H,(31000H)=0040H(a)LEA指令与MOV的区别LEABX,BUFFER;(BX)=1000HMOVBX,BUFFER;(BX)=0040H等价形式:LEABX,BUFFER;(BX)=1000HMOVBX,OFFSETBUFFER;(BX)=1000H(b)LEA指令中的目标寄存器必须是16位的通用寄存器,源操作数必须指向存储器单元.
思考下列指令的正、误:LEADX,BETA[BX][SI];LEADX,AX;√*例1:例2:假设:(DS)=C000H指令:LDSSI,[0010H]执行指令后:(SI)=0180H(DS)=2000H等价于如下三条MOV指令:MOVSI,[0010H]MOVAX,[0012H]MOVDS,AX(5)输入/输出指令1)输入指令IN(Inputfrom)格式:INOP1,OP2功能:输入指令用于CPU从外设端口接收数据;2)输出指令OUT(Outputto)格式:OUTOP1,OP2功能:输出指令用于CPU向外设端口发送数据;说明:无论接受还是发送数据,必须通过累加器AX(字)或AL(字节),又称累加器专用传送指令.
输入、输出指令不影响标志位.
在微机系统中,可配置多个外部设备,每个外设与CPU之间交换数据,状态信息和控制命令,每一种信息交换都要通过一个端口来进行.
每个外设要占几个端口:数据口,状态口和控制口.
访问外部设备最多有64K个I/O端口,由A0~A15译码形成端口号:端口号(即外设端口地址)为0000H~FFFFH.
CPU与外设的信息交换:格式:INacc,port;(acc)(port)具体形式有四种:INAL,imm8;端口地址8位,输入一个字节INAX,imm8;端口地址8位,输入一个字INAL,DX;端口地址16位,输入一个字节INAX,DX;端口地址16位,输入一个字必须通过累加器AX(字)或AL(节)输入数据.
1)输入指令IN格式:OUTport,acc;(port)(acc)具体形式有四种:OUTimm8,AL;端口地址8位,输出一个字节OUTimm8,AX;端口地址8位,输出一个字OUTDX,AL;端口地址16位,输出一个字节OUTDX,AX;端口地址16位,输出一个字必须通过累加器AX(字)或AL(节)输出数据.
2)输出指令OUT例1:实现(29H)、(28H)→(DATA_WORD)INAX,28HMOVDATA_WORD,AX例2:从端口3FCH读入一个字到AX寄存器MOVDX,3FCHINAX,DX;(AL)←(3FCH),(AH)←(3FDH)例3:实现将(AL)→(05H)OUT5,AL;(05H)←(AL)输入/输出指令举例:(6)标志位操作指令1)标志读/写指令LAHF/SAHF格式:LAHF(LoadAHwithFlags)功能:将标志寄存器的低字节读出后,装入AH中;格式:SAHF(StoreAHintoFlags)功能:将AH寄存器的内容写入标志寄存器的低字节;2)标志入栈/出栈指令PUSHF/POPF格式:PUSHF(PushFlags)功能:将标志寄存器的内容压入堆栈;格式:POPF(PopFlags)功能:从栈顶内容(字)弹出至标志寄存器中;OFDFIFTFSFZFAFPFCFD15D14D13D12D11D10D9D8D7D6D5D4D3D2D1D0状态标志(依据运算结果特征置0/1,程序可读)CF(CarryFlag):进位标志,(运算产生进位或借位时,置1)PF(ParityFlag):奇偶标志,(低8位满足偶校验时,置1)AF(AuxiliarycarryFlag):辅助进位标志,(低4位向高4位进位借位)ZF(ZeroFlag):零标志,(运算结果为0,置1)SF(SignFlag):符号标志,(和运算结果的最高位状态相同)OF(OverflowFlag):溢出标志,(有符号数运算,结果超出范围时)控制标志(由指令设置0/1,控制CPU操作)DF(DirectionFlag):方向标志位,控制串操作指令的步进方向IF(Interrupt-enableFlag):中断允许标志位,控制CPU响应可屏蔽中断TF(TrapFlag):陷阱标志位,控制CPU进入单步执行指令的工作方式图4-38086/8088CPU标志寄存器思考:什么情况下使用

Stablehost 美国主机商黑五虚拟主机四折

如今我们网友可能较多的会选择云服务器、VPS主机,对于虚拟主机的话可能很多人不会选择。但是我们有些外贸业务用途的建站项目还是会有选择虚拟主机的。今天看到的Stablehost 商家虚拟主机在黑五期间也有四折优惠,对于这个服务商而言不是特别的喜欢,虽然他们商家和我们熟悉的老鹰主机商有些类似,且在后来老鹰主机改版和方案后,Stablehost 商家也会跟随改版,但是性价比认为不如老鹰主机。这次黑色星期...

这几个Vultr VPS主机商家的优点造就商家的用户驱动力

目前云服务器市场竞争是相当的大的,比如我们在年中活动中看到各大服务商都找准这个噱头的活动发布各种活动,有的甚至就是平时的活动价格,只是换一个说法而已。可见这个行业确实竞争很大,当然我们也可以看到很多主机商几个月就消失,也有看到很多个人商家捣鼓几个品牌然后忽悠一圈跑路的。当然,个人建议在选择服务商的时候尽量选择老牌商家,这样性能更为稳定一些。近期可能会准备重新整理Vultr商家的一些信息和教程。以前...

VoLLcloud:超便宜香港CMI大带宽vps-三网CMI直连-年付四免服务-低至4刀/月-奈飞

vollcloud LLC创立于2020年,是一家以互联网基础业务服务为主的 技术型企业,运营全球数据中心业务。致力于全球服务器租用、托管及云计算、DDOS安 全防护、数据实时存储、 高防服务器加速、域名、智能高防服务器、网络安全服务解决方案等领域的智 能化、规范化的体验服务。所有购买年付产品免费更换香港原生IP(支持解锁奈飞),商家承诺,支持3天内无条件退款(原路退回)!点击进入:vollclo...

电脑提示虚拟内存不足为你推荐
网络域名注册如何注册网络域名全能虚拟主机那家虚拟主机服务商比较不错,比较有名?info域名注册百度还收录新注册的info域名吗?虚拟主机代理谁给推荐个好的虚拟主机无限级代理ip代理地址ip代理有什么用?网站空间价格1M网站空间是多少钱手机网站空间手机网页空间需要多大?什么是虚拟主机什么是“虚拟主机”?请解释祥细些!北京虚拟主机北京的虚拟主机提供商哪个经济实惠?成都虚拟主机个人申请网址如何申请。
电信服务器租用 唯品秀 ddos hkbn softbank官网 创宇云 html空间 qq数据库下载 qingyun 服务器干什么用的 t云 电信宽带测速软件 中国联通宽带测试 zcloud 认证机构 nic studentmain 留言板 阿里云主机 衡天主机 更多