微机原理与接口技术的课件 第3章1

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1第3章指令系统2主要内容:指令系统的一般概念对操作数的寻址方式六大类指令的操作原理:操作码的含义指令对操作数的要求指令执行的结果3§3.1概述4了解:指令及指令系统;指令的格式;指令中的操作数类型;指令字长与机器字长;指令的执行时间CISC和RISC指令系统5一、指令与指令系统指令:控制计算机完成某种操作的命令指令系统:处理器所能识别的所有指令的集合指令的兼容性:同一系列机的指令都是兼容的。6二、指令格式指令中应包含的信息:运算数据的来源运算结果的去向执行的操作7指令格式操作码[操作数],[操作数]指令的功能(即执行何种操作)目标操作数源操作数指令的操作对象,指明参加操作的数据或数据存放的地址8指令格式:零操作数指令:操作码单操作数指令:操作码操作数双操作数指令:操作码操作数,操作数多操作数指令:三操作数及以上9三、指令中的操作数类型立即数操作数寄存器操作数存储器操作数表征参加操作的数据本身表征数据存放的地址10立即数操作数立即数只能作为源操作数。其本身是参加操作的数据,可以是8位或16位。例:MOVAX,1234HMOVBL,22H立即数无法作为目标操作数立即数可以是无符号或带符号数,其数值应在可取值范围内。11寄存器操作数:参加运算的数存放在指令给出的寄存器中,可以是16位或8位。例:MOVAX,BXMOVDL,CH12存储器操作数参加运算的数存放在存储器的某一个或某两个单元中。表现形式:[]立即数或寄存器13存储器操作数例例:MOVAX,[1200H]MOVAL,[1200H]22H11H1200H偏移地址AHAL┇14四、指令字长与机器字长指令字长:由操作码的长度、操作数地址长度、操作数个数决定;机器字长:计算机能够直接处理的二进制数的位数。15五、指令的执行速度指令的字长影响指令的执行速度。(常用指令的执行时间见表3-4)对不同的操作数,指令执行的时间不同:存储器快!立即数寄存器16六、CISC和RISC指令系统CISC(复杂)指令系统指令的功能强,种类多,高级语言和机器语言间的距离缩小;指令系统复杂,难使用。RISC(精简)指令系统指令功能较弱,种类少,格式简单;多数指令在一个计算机周期内完成;对存储器的结构和存取速度要求较高。17§3.2寻址方式18寻址方式寻找操作数所在地址的方法寻找转移地址的方法本节19一、立即寻址指令中的源操作数是立即数,即源操作数是参加操作的数据本身。主要用于给寄存器或存储单元赋初值。例:MOVAX,1200H12H00HAHALMOV代码段┇20二、直接寻址操作数在内存中,指令中直接给出操作数的偏移地址。操作数一般在DS段(默认)。例:MOVAX,[1200H]22H11H1200H偏移地址┇数据段AHAL21直接寻址直接寻址方式下,操作数的段地址默认为数据段,但允许段重设,即由指令定义段。例:MOVAX,ES:[1200H]22三、寄存器寻址参加操作的操作数在CPU的通用寄存器中。例:MOVAX,BXAXBX23四、寄存器间接寻址参与操作的操作数存放在内存中,用寄存器的内容表示操作数的偏移地址。24寄存器间接寻址由寄存器间接给出操作数的偏移地址;存放偏移地址的寄存器称为间址寄存器,它们是:BX,BP,SI,DI操作数的段地址(数据处于哪个段)取决于选择哪一个间址寄存器:BX,SI,DIBP默认在数据段默认在堆栈段25寄存器间接寻址例例:MOVAX,[BX]设BX=1200H22H11H1200H偏移地址AHAL┇1122数据段代码段MOV26寄存器间接寻址寄存器间接寻址基址寻址(间址寄存器为基址寄存器BX,BP)变址寻址(间址寄存器为变址寄存器SI,DI)27五、寄存器相对寻址操作数的偏移地址为寄存器的内容加上一个位移量。例:MOVAX,[BX+DATA]设:DS=2000H,BX=0220H,DATA=05H则:AX=[20225H]28六、基址、变址寻址操作数的偏移地址为一个基址寄存器的内容加上一个变址寄存器的内容,操作数的段地址由选择的基址寄存器决定。例3-9(P103):MOVAX,[SI+BX]29七、基址、变址、相对寻址操作数的偏移地址为一个基址寄存器的内容加上一个变址寄存器的内容,再加上一个位移量。操作数的段地址由选择的基址寄存器决定。例:3-10(P104)30八、隐含寻址指令隐含了的一个或两个操作数的地址,即操作数在默认的地址中。例:MULBL指令的执行:AL×BLAX31§3.38086指令系统32掌握:指令码的含义指令对操作数的要求指令的对标志位的影响指令的功能338086指令系统从功能上包括六大类:数据传送算术运算逻辑运算和移位串操作程序控制处理器控制34数据传送指令通用数据传送输入输出地址传送标志位操作35一、通用数据传送一般数据传送指令堆栈操作指令交换指令查表转换指令字位扩展指令特点:该类指令的执行对标志位不产生影响361.一般数据传送指令格式:MOVDST,SRC目的操作数源操作数功能:将源操作数传送至目的地址中,源保持不变。(SRC)→DST例:MOVAL,BL37一般数据传送指令注:两操作数字长必须相同;两操作数不允许同时为存储器操作数;两操作数不允许同时为段寄存器;在源操作数是立即数时,目标操作数不能是段寄存器;IP和CS不作为目标操作数,FLAGS一般也不作为操作数在指令中出现。3839一般数据传送指令判断下列指令的正确性:MOVAL,BXMOVAX,[SI]05HMOVDS,1000HMOV[BX][BP],BXMOVCS,BXMOVDX,09HMOV[1200],[SI]MOV2000H,AXX,类型不一致X,立即数不能送段寄存器X,CS不能做目的操作数X,不能同时为存储器操作数X,目的不能为立即操作数402.堆栈操作指令掌握:有关堆栈的概念栈顶、栈首、栈底堆栈指令的操作原理执行过程,执行结果41堆栈操作的原则先进后出以字为单位42堆栈操作指令压栈指令PUSH格式:PUSHOPRD出栈指令POP格式:POPOPRD43进栈指令PUSH指令执行过程:(SP)←(SP)-2(SP)-1←操作数高字节(SP)-2←操作数低字节过程:SP-1,存源操作数的高8位;SP-2,存源操作数的低8位,完成进栈操作。┇SP堆栈段SP高8位低8位44进栈指令的操作设AX=1234H,SP=1200H执行PUSHAX指令后堆栈区的状态:1200H┇堆栈段SP-2=11FEH12H34H1200H┇堆栈段12H34HAX入栈后入栈前45出栈指令POP指令执行过程:将SS:SP所指示的栈顶处的两个字节的数据传送到目的操作数中。SP+2,指示当前栈顶位置,完成出栈操作。SPSP+1SP←SP+2操作数低字节操作数高字节┇SP堆栈段SP高8位低8位46出栈指令的操作执行POPAX12H34H11FEH┇堆栈段代码段PUSH1234AXSP+21200H┇出栈后出栈前47堆栈操作指令说明指令的操作数必须是16位的;操作数可以是寄存器或存储器两单元,但不能是立即数;不能从栈顶弹出一个字给CS;PUSH和POP指令在程序中一般成对出现;PUSH指令的操作方向是从高地址向低地址,而POP指令的操作正好相反。48堆栈操作指令例PUSHAXPUSHBXPOPAXPOPBX┇如此,会使AX和BX的内容互换493.交换指令格式:XCHGREG,MEM/REG操作:(DST)(SRC)即源地址与目的地址中的内容互换注:两操作数必须有一个是寄存器操作数不允许使用段寄存器。例:XCHGAX,BXXCHG[2000],CL50例:XCHGAX,BX√XCHGBH,BL√XCHGAX,1122H×XCHGDS,AX×XCHG[SI],BP√XCHG[SI],[DI]×514.查表指令格式:XLAT操作:([BX+AL])→AL,即将BX为首址(偏移地址),AL为位移量的字节单元的内容→AL·该指令常用于进行代码转换,转换时先建立相应表。表首址→BX,与表有关的某个偏移值(一般为被传送的字节到表头地址的字节数)→AL。·该指令的操作数是隐含寻址,不带操作数或带表头地址。说明:用BX的内容代表表格首地址,AL内容为表内位移量,BX+AL得到要查找元素的偏移地址52查表指令例数据段中存放有一张ASCII码转换表,设首地址为2000H,现欲查出表中第11个代码的ASCII码303132...394142...45462000H+02000H+11‘0’‘1’‘2’‘9’‘A’‘B’‘E’‘F’53查表指令例可用如下指令实现:MOVBX,2000H;BX←表首地址MOVAL,0BH;AL←序号XALT;查表转换执行后得到:AL=42H54二、输入输出指令掌握:指令的格式及操作指令的两种寻址方式指令对操作数的要求55指令寻址方式直接寻址直接给出8位端口地址,可寻址256个端口间接寻址16位端口地址由DX指定,可寻址64K个端口56输入输出指令专门面向I/O端口操作的指令。输入指令:INacc(累加器AL或AX),PORT(端口地址)操作:从端口输入一个字节到AL或输入一个字到AX。指令格式为:INAL,nINAX,nINAL,DXINAX,DX直接寻址输入指令(n为8位端口地址)DX寄存器间接寻址输入指令(端口地址为16位)57输入输出指令输出指令:OUTPORT(端口地址),acc(累加器AL或AX)操作:将AL或AX的内容输出到指定端口。指令格式为:OUTn,ALOUTn,AXOUTDX,ALOUTDX,AX直接寻址输出指令(n为8位端口地址)DX寄存器间接寻址输出指令(端口地址为16位)58三、地址传送指令取偏移地址指令LEA*LDS指令*LES指令59取偏移地址指令LEA操作:将变量的16位偏移地址取出送目标寄存器格式:LEAREG,MEM指令要求:源操作数必须是一个存储器操作数,目标操作数通常是间址寄存器。60LEA指令比较下列指令:MOVSI,DATA1LEASI,DATA1MOVBX,[BX]LEABX,[BX]┇┇┇DATA1符号地址12H34H1100H88H77HBX=1100H615.字位扩展指令将符号数的符号位扩展到高位;指令为零操作数指令,采用隐含寻址,隐含的操作数为AX及AX,DX无符号数的扩展规则为在高位补062字节到字的扩展指令格式:CBW(convertBytetoWord)操作:将AL内容扩展到AX规则:若最高位=1,则执行后AH=FFH若最高位=0,则执行后AH=00H63字到双字的扩展指令格式:CWD操作:将AX内容扩展到DXAX规则:若最高位=1,则执行后DX=FFFFH若最高位=0,则执行后DX=0000H64字位扩展指令例判断以下指令执行结果:MOVAL,44HCBWMOVAX,0AFDEHCWDMOVAL,86HCBWAX=0044HDX=FFFFHAX=0AFDEHAX=FF86H65四、标志位操作指令LAHFSAHFPUSHFPOPF隐含操作数AH隐含操作数FLAGS661.LAHF,SAHF指令格式:LAHF操作:将FLAGS的低8位装入AHCFPFAFZFCF….AHFLAGSD15D0D7D0SAHF执行与LAHF相反的操作672.PUSHF,POPF针对FLAGS的堆栈操作指令将标志寄存器压栈或从堆栈弹出68算术运算类指令69算术运算类指令加法运算指令减法运算指令乘法指令除法指令算术运算指令的执行大多对状态标志位会产生影响70一、加法指令普通加法指令ADD带进位位的加法指令ADC加1指令INC加法指令对操作数的要求与MOV指令相同711.ADD指令格式:ADDDST,SRC操作:(DST)+(SRC)→DST即将目的操作数与源操作数相加,结果存入目

1 / 94
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功