微机原理指令系统

上传人:宝路 文档编号:47097169 上传时间:2018-06-29 格式:PPT 页数:145 大小:3.06MB
返回 下载 相关 举报
微机原理指令系统_第1页
第1页 / 共145页
微机原理指令系统_第2页
第2页 / 共145页
微机原理指令系统_第3页
第3页 / 共145页
微机原理指令系统_第4页
第4页 / 共145页
微机原理指令系统_第5页
第5页 / 共145页
点击查看更多>>
资源描述

《微机原理指令系统》由会员分享,可在线阅读,更多相关《微机原理指令系统(145页珍藏版)》请在金锄头文库上搜索。

1、Pentium的指令系统微型机原理与技术上次课程小结三种操作数目的操作数源操作数rmim r mim r 上次课程小结n接口:CPU与外设之间的连接部件n接口的基本组成:一个/若干端口+控制逻辑n端口:可通过输入输出指令进行读/写操作的寄存器n端口地址:16位无符号2进制整数n端口分类:数据输入端口数据输出端口状态端口控制端口nIntel系列微处理器使用内存与I/O独立编址方式上次课程小结寻址方式 指出下列指令中源操作数的寻址方式 nMOV AX,ES:1100H nMOV AX,MARKBPDInMOV AX,1234nMOV AX, a(a为变量)nMOV AX,BXnMOV AX, 3E

2、BXESI*2nMOV AX,SInMOV AX,ESI*4+2直接寻址相对基址加变址寻址立即寻址直接寻址寄存器寻址相对基址加比例变址寻址寄存器间接寻址相对比例变址寻址上次课程小结寻址方式 指出下列指令中源操作数的寻址方式 nMOV AX, SI+200H nMOV AX,BXDInMOV EAX,EBXEDInIN AL, DXnOUT DX,ALnMOV AX, EBXESI*2nIN AL, 2nOUT 5,AL寄存器相对寻址基址加变址寻址基址加变址寻址I/O间接寻址寄存器寻址基址加比例变址寻址I/O直接寻址寄存器寻址概念n指令(Instruction):微处理器执行的基本操作n指令系统

3、(Instruction set):微处理器所能执行的全部指令的集合nPentium指令分类:传送指令算术运算指令逻辑运算和位操作指令串操作指令转移和调用类指令控制指令传送指令n功能:实现寄存器之间、寄存器与存储器 之间及寄存器与I/O端口之间的数据传送n按功能可分为5类:通用传送指令标志传送指令地址传送指令输入输出指令转换类指令通用传送指令n数据传送指令n堆栈操作指令n数据交换指令数据传送指令nMOV指令n符号扩展传送指令n零扩展传送指令传送指令(Move)n格式:MOV 目的, 源n功能:把一个字节/字/双字数据从源送至目的n标志:不影响n注意:立即数不能作目的;立即数不能送段r;若源为立

4、即数,目的 为m,在目的前应用 PTR标明其数据类型;段r之间不能传送;CS和IP不能作目的;源和目的不能同为m;源和目的类型一致。MOV指令应用举例n例1:立即数传送nmov al,4 ;al4,字节传送nmov cx,0ffffh ;cx0ffffh,字传送nmov byte ptrsi,0ahn;byte ptr说明是字节操作nmov word ptrsi2,0bh n;word 说明在该指令中操作数类型是字nmov dword ptrebxesi2,0ffffffffh n;dword 说明在该指令中操作数类型是双字MOV指令应用举例:n例2:存储器传送 mov al,12bxdi ;

5、alds:12bxdi mov edx,ebp ;edxss:ebp mov si, si ;ds:sisin例3:段寄存器传送 mov si,ds ;ds:sids mov es,ax ;esax两个操作数的类型要一致n双操作数指令中,目的操作数与源操作数必须 类型一致n例1:MOV AL,050AHn非法指令:050Ah已经超出AL的数值范围。n指令应改为:MOV AX,050AH n注意:有寄存器作操作数的指令,寄存器的类 型可确定指令操作数的类型两个操作数的类型要一致n例2:MOV AX,BLn非法指令:两个寄存器操作数类型应一致。n指令应改为:MOV AX,BX n或: MOV AL

6、,BLn例3:mov si2,0bh n非法指令:应该为mov word ptrsi2,0bh n若指令中只有内存操作数和立即数作操作数,必 须显式指明: byte ptr指示字节类型,word ptr指示字类型? ?双操作数不能同为内存操作数n除串操作指令外,不允许双操作数都是存储单元mov word ptr 2bxsi,din不能直接在存储器和存储器之间传送数据n指令应改为: mov ax,dimov 2bxsi,ax要小心段寄存器的操作n非法指令,不允许直接改变CS值;n说明:中断调用、过程调用及无条件转移指令可 以修改CS值mov ds,1234H n非法指令,立即数不能直接送段寄存器

7、mov ax,1234h mov ds,axmov cs,di要小心段寄存器的操作nMOV DS,ES n非法指令,不允许段寄存器之间直接传送数据指令应改为:MOV AX,ESMOV DS,AX符号扩展传送指令 (Move with sign-extend)n格式:MOVSX 目的, 源n功能:把数据从源送至目的的同时将符号扩展到 目的寄存器的高位n标志:不影响n注意:源位数少,目的位数多n可由8位扩展到16/32位,也可由16位扩展到32位源:r/m;目的:rn例:MOVSX EBX,DL若DL=80H,EBX=0FFFF FF80H零扩展传送指令(Move with zero-extend

8、)n格式:MOVZX 目的, 源n功能:把数据从源送至目的的同时将0扩展到目 的寄存器的高位n标志:不影响n注意:源位数少,目的位数多n可由8位扩展到16/32位,也可由16位扩展到32位源:r/m;目的:rn例:MOVZX BX,DL若DL=80H,BH=0,BL=80H堆栈操作指令n堆栈n进栈 指令n出栈指令n16位通用寄存器进栈 /出栈指令n32位通用寄存器进栈 /出栈指令堆栈n堆栈:按照“后进先出” (Last In First Out)或按照“ 先进后出” (First In Last Out)原则组织的一段内存 区域n软件堆栈:由程序设计人员用软件在内存划出的 一块区域。该区域一端

9、固定,另一端浮动,所有 的信息存取操作都在浮动端进行n段基址:堆栈段中地址最小的单元,由SS指向;n栈底:堆栈内地址最大的单元(固定端)n栈顶:栈操作时存取最后一个数据的内存单元( 浮动端)堆栈n堆栈指针寄存器SP: 堆栈初始化时,指向栈 底+1的内存单元;栈 操作时,始终指向栈顶SP内始终存放着段基址 与栈顶之间的距离(字 节数)堆栈深度:堆栈所含内 存单元字节数n堆栈的用途:暂存数据在过程调用或处理中断 前暂存断点信息SS堆栈段栈底SP初始化时的栈顶进栈指令(Push word onto stack)n格式:PUSH 源操作数( r16/32/m16/32/seg )n功能:将操作数从源存

10、入由SP/ESP指向的栈顶n例1:push cs操作: nSPSP-2 ;先修改栈顶nSP数据 ;将源存入SP指向的字单元n例2:push dword ptr ebx+esi操作: nESPESP-4 ;先修改栈顶nESP数据 ;将源存入ESP指向的双字单元78H 56H 34H 12H78H 56H 34H 12H 00H 04HSS段首地址10000H10010HESP(原栈顶)ESP(压入CS 后栈顶)0400HESP(压入EBX+ESI 后的栈顶)12345678H08000HDS段首地址EIPCS段首地址04000HESIpush cspush dword ptr ebx+esi设:

11、CS=400H,DS=800H, SS=1000HESP=10H,EBX=200H,ESI=20H初始栈顶地址=SS10H+ESP=1000H10H+10H=10010H数据地址=DS10H+EBX+ESI=800H10H+200H+20H=08220H出栈指令(Pop word off stack)n格式: POP 目的操作数( r16/32/m16/32/seg )n功能:将SP/ESP指向的栈顶字操作数送指定目的n例:pop eax操作: neaxESP ;将ESP指向的4个字节的内容送eaxnESPESP+4 ;栈指针加478H 56H 34H 12H 00H 04HESP(弹出数据后

12、栈顶)12345678HEAX10010HSS段首地址10000H08000HDS段首地址CS段首地址04000H设:该条指令位于上述2 条PUSH指令之后16位通用寄存器进栈/出栈指令n格式:PUSHA (PUSH all registers)功能:将8个16位通用寄存器的内容全部压入堆栈操作:nSP (SP-16)n依次将AX,CX,DX,BX,SP(减16之前的值),BP,SI,DI压入堆栈n格式:POPA (Pop all registers)功能:将栈顶数据弹出至8个16位通用寄存器操作:n弹出至DI,SI,BP,SP,BX,DX,CX,AX nSP (SP+16)32位通用寄存器进

13、栈/出栈指令n格式:PUSHAD (PUSH all double)功能:将32位通用寄存器内容压入堆栈操作:nESP (ESP-32)n依次将EAX,ECX,EDX,EBX,ESP(减32之前的值),EBP,ESI,EDI 压入堆栈n格式:POPAD (Pop all double)功能:自堆栈弹出至32位通用寄存器操作:n弹出至EDI,ESI,EBP,ESP,EBX,EDX,ECX,EAX nESP (ESP+32)栈操作指令应用须知n栈操作指令的操作数不能是立即数nPOP指令的操作数不能是CSn例1:push 1234hmov ax,1234hpush axn例2:pop byte pt

14、r sipop word ptr si堆栈操作指令应用举例n例1:设(SS)=3E4BH,堆栈长度=200字节,计算(1) SP初始值(2) SP初始值指向的物理地址(3) 堆栈底部字单元物理地址0C8H3E576H0C8H 3E578Hn例2:设(SP)=50HPUSH AXPUSH BXn执行上述2条指令后,(SP)= 4CH交换指令(Exchange)n格式:XCHG 目的, 源n功能:将源操作数与目的操作数内容互换n注意:立即数不能作该指令的操作数;段r之间不能互换;源和目的不能同为m;源和目的类型一致。交换指令应用举例:n例1:寄存器间交换xchg ax,sin例2:寄存器与内存间交换xchg eax,ebxxchg 1234bxsi,ax交换指令应用举例:n例3: xchg ax,1234hn非法指令,立即数不能作该指令的操作数;mov bx,1234h ;bx 1234hxchg ax,bx ;ax bxn例4: xchg bx,si n非法指令,源和目的不能同为内存操作数;mov cx,si ;cx ds:sixchg cx,bx ;cx ds:bxxchg cx,si ;cx ds:si标志传送指令(Flag transfer)n无操作数指令(隐含操作数是Flags)n功能:传送标志寄存器的内容,以便用户能对各个 标志位直接进行操作n指令分类:提取标志指令L

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号