微机原理课件chapter3_qsq.ppt
上传人:qw****27 上传时间:2024-09-12 格式:PPT 页数:132 大小:3.7MB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

微机原理课件chapter3_qsq.ppt

微机原理课件chapter3_qsq.ppt

预览

免费试读已结束,剩余 122 页请下载文档后查看

15 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

第3章80X86/Pentium指令系统第三章80X86/Pentium指令系统3.1.1指令格式以8086/8088指令格式为例:1~6字节第一字节:操作码——操作类型W——操作数类型=(字操作标志位)D——Reg.操作数传送方向=(Reg.寻址标志位)若指令中两个操作数都是Reg,则D=1。当:D=0,Reg.为源操作数,由modr/m决定目的。D=1,Reg.为目的操作数,由modr/m决定源。机器码存放在内存中例2.ADDDISP[BX][DI],DX机器语言:0000000110010001以上例子说明:汇编语言指令可手工汇编成机器码.即使是同一种指令,寻址方式和操作数的不同,机器码的长度也不同。编程时应选择合理算法、数据结构、寻址方式等节省MEM。执行时间:指令的指令时间包括取指、译码和执行的时间,跟该指令的机器码的长短没有直接关系。3.1.2寻址方式有效地址有四个分量组成:EA=[基址Reg]+([变址Reg]×比例因子)+位移量四个分量的取值规定,对于16位寻址和32位寻址有所不同。第3章80X86/Pentium指令系统1.立即寻址操作数包含在指令中,紧跟着操作码并与操作码一起存放在代码段中,与代码一起被取入CPU的指令队列,在指令执行时不需要再访问存贮器。例:INCSIMOVAX,BX(1)直接寻址(EA=立即数)有效地址EA直接在指令中给出,它存放在代码段操作码之后。操作数一般在数据段DS中,这是一种默认方式。②直接寻址中EA可以以变量名的形式给出。例:VALUEDB12HMOVAL,[VALUE]等效于:MOVAL,VALUE;VALUE又称为符号地址寄存器间接寻址示意图(3)基址寻址EA=(基址Reg)+位移量位移量在指令中给出并与代码一起存放在代码段中。Reg使用规定如下:①16位寻址时BP、BX作基址Reg,其中BP默认在SS段,BX默认在DS段,位移量是8或16位,且跟在操作码之后存放在代码段中。第3章80X86/Pentium指令系统(4)变址寻址EA=(变址寻址)+位移量书写格式、寻址过程皆同基址寻址16位寻址时SIDI(5)基址加变址寻址EA=(基址Reg)+(变址Reg)16位寻址时BXSIBPDI(6)带位移量的基址加变址寻址(又称为相对基址变址寻址)EA=(基址Reg)+(变址Reg)+位移量基址Reg与变址Reg的规定同前,对段Reg的默认同前。三、存贮器寻址时的段约定存贮器寻址时,一般并不在指令中给出段Reg,而是遵寻一种约定(默认)方式。见下表所示。寻址方式总结操作数的分类3.28086/8088指令系统16位立即数共有14条指令,分为4组,见表3-4。一、通用数据传送指令共5条,它们(除XCHG外)是唯一允许以段寄存器(Sreg)作为操作数的指令。例:MOVAL,CH;通用寄存器之间传送字节数据MOVDS,AX;通用寄存器→段寄存器(CS不能是目标)MOVAX,0FF3BH;立即数→通用寄存器MOVAL,BUFFER;存储器→通用寄存器MOVDAT[BP+DI],ES;段寄存器→存储器MOV[1000H],25H;立即数→存储器(该指令有二义性)MOVCX,[1000H];存储器→通用寄存器2.堆栈操作指令PUSH/POP注:1.程序中有一个PUSH,必有一个对应的POP。2.遵循后进先出原则。3.按字进行操作(PUSHAH;POPBL(错误))4.PUSHCS;POPCS(可以)(错误)指令PUSHAX的执行情况3.交换指令XCHG将待转换的代码组成表格,首地址→BX,AL存放查找对象在表中下标,指令执行后,[BX+AL]→AL,BX内容不变。例:LEAAX,[2728H];AX=2728HLEABX,[BP+SI];BX=BP+SI的值。LEASP,[0482H];SP=0482H例:比较LEABX,BUFFERMOVBX,BUFFER两指令的不同例2:LDSSI,[10H]设指令执行前,DS=C000H,[C0010H]=0180H,[C0012H]=2000H则执行后,SI=0180H,DS=2000H2.PUSHF/POPF(标志Reg入栈/出栈)四、输入/输出数据传送指令IN/OUT具体指令有:INAL,imm8OUTimm8,ALINAX,imm8OUTimm8,AXINAL,DXOUTDX,ALINAX,DXOUTDX,AX8086/8088存储器中存放数的方法(右图示):num1单元中有一个16位数(字