收藏 分销(赏)

微型计算机系统与接口42.ppt

上传人:xrp****65 文档编号:13336101 上传时间:2026-03-03 格式:PPT 页数:48 大小:343.50KB 下载积分:10 金币
下载 相关 举报
微型计算机系统与接口42.ppt_第1页
第1页 / 共48页
微型计算机系统与接口42.ppt_第2页
第2页 / 共48页


点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,Home,4.1,指令格式与寻址方式,4.2 8086/8088,CPU,的指令系统,4.指令系统,内容简介,习题解答,重点,/,难点,本章以,8086,微处理器为例介绍微型计算机的指令系统,包括指令格式、寻址方式和各类指令功能。,Home,内容简介,4.指令系统,Home,操作码、操作数的基本概念,8086的6,种基本寻址方式及有效地址的计算,各类指令的汇编格式、功能、对标志位的影响和注意事项,重点与难点,4.指令系统,Home,Next,4.1 指令格式与寻址方式,1,1.,指令格式,操作码,操作数,操作数,指令格式是指令的编码格式,其体现了指令系统的概貌,说明指令系统的机器目标代码是如何构成的。,指令的构成:,2.,寻址方式,2,4.1 指令格式与寻址方式,立即数寻址,寄存器寻址,存储器寻址,I/O,端口寻址,段内直接寻址,段内间接寻址,段间直接寻址,段间间接寻址,转移地址寻址方式,数 据 寻 址 方 式,Home,Next,Back,3,1.立即数寻址,例如,,MOV AX,,,2000H,;,将,2000,H,送入,AX,1.数据寻址方式,点击演示!,Home,Next,Back,4,2.,寄存器,寻址,例如:,MOV SI,,,CX,1.数据寻址方式,点击演示!,Home,Next,Back,5,3.,存储器,寻址直接寻址,例如:,MOV AX,,,2000H,;,设,(,DS)=3000H,。,1.数据寻址方式,点击演示!,Home,Next,Back,6,1.数据寻址方式,点击演示!,3.,存储器,寻址寄存器间接寻址,例如:,MOV AX,,,BX,;,PA=,(,DS,),16+,(,BX,),Home,Next,Back,7,1.数据寻址方式,点击演示!,3.,存储器,寻址寄存器相对寻址,例如,,MOV AX,,,COUNTDI,;,操作数,PA=,(,DS,),16+,(,DI,),+COUNT,COUNT,代表一个位移量常数,Home,Next,Back,8,1.数据寻址方式,点击演示!,3.,存储器,寻址基址变址寻址,例如,,MOVAX,,,MASKBXSI,Home,Next,Back,9,1.数据寻址方式,(4),I/O,端口寻址,直接端口寻址,可寻址的端口号的范围为0 255。,例如,:,IN AL,n,间接端口寻址,可寻址的端口号的范围为,0 65535,。先将16位,I/O,端口地址,(,0000,H FFFFH,),存放在规定的,DX,寄存器中,即通过,DX,对端口间接寻址。,例如,:,MOV DX,350,OUT DX,AL,Home,Next,Back,10,2 转移地址寻址方式,1.,段内直接转移,寻址,转移地址是一个8位或16位的相对地址偏移量,disp,,,在,指令中直接给出,用,标号,(为存放指令的存储单元地址所起的名字,即符号地址)表示。,例如,:,JMP LT0,;,LT0,是,标号,2.,段内间接转移,寻址,转移地址是16位的寄存器的内容或存储器中两个连续单元的内容。,例如,:,JMP,BX,JMP,WORD PTR BX,Home,Next,Back,11,2 转移地址寻址方式,3.,段间直接转移,寻址,指令码中直接给出目标地址的16位段基址和16位段内偏移地,址,。,例如,:,JMP FAR PTR P1,4.,段间间接转移,寻址,目标地址存放在4个连续存储单元。,例如,:,JMP DWORD PTR BX+020AH,Home,Next,Back,Home,Next,4.2 8086/8088指令系统,1,8086/8088,CPU,的指令可分为六大类,l,数据传送类指令(,Data transfer instructions,),l,算术运算类指令(,Arithmetic instructions,),l,位操作类指令(,Bit manipulation instructions,),l,串操作类指令(,String instructions,),l,控制转移类指令(,Program transfer instructions,),l,处理器控制类指令(,Processor control instructions,),可实现,存储器,寄存器,I/O,数据传送指令又可分为如下四种:,通用传送,目标地址传送,标志传送,输入输出,数据传送指令,2,Home,Next,Back,1.,通用传送指令,(1),MOV,dest,,,src,;,dest,src,传送的是字节还是字取决于指令中涉及的寄,存器是,8,位还是,16,位。,具体来说可实现:,MOV mem/reg1,mem/reg2,指令中两操作数中至少有一个为寄存器,例,:,MOVCL,DL,MOVAX,BX,MOVSI,CX,MOVCL,BX+5,MOV,reg,,data ;,立即数送寄存器,MOV,mem,,data ;,立即数送存储单元,MOV acc,,mem,;,存储单元送累加器,MOV,mem,,acc ;,累加器送存储单元,MOV,segreg,,,mem,/,reg,;,存储单元,/,寄存器送,段寄存器,MOV,mem,/,reg,,,segreg,;,段寄存器送存储单,元,/,寄存器,MOV,指令使用规则:,1),IP,不能作目的寄存器,2),不允许,mem,mem,3),不允许,segreg,segreg,4),立即数不允许作为目的操作数,5),不允许,segreg,立即数,6),源操作数与目的操作数类型要一致,几个不能,传,送的解决办法:,用,AX,作桥梁,存储器,存储器:,MOV AX,MEM1,MOV MEM2,AX,段寄存器,段寄存器:,MOV AX,DS,MOV ES,AX,段寄存器,立即数:,MOV AX,DATA,MOV DS,AX,应用举例:将,1000,H,开始的,100,个存储单元,全部填充为,ASCII,码2,AH(*)。,程序段如下:,MOV DI,1000H,MOV CX,64H,MOV AL,2AH,AGAIN:MOV DI,AL,INC DI,DEC CX,JNZ AGAIN,HLT,上程序段存放在,代码段,中,設(,CS)=109EH,则各条指令存放地址如下:,CS :IP,指令,109,E:0100,MOV DI,1000H,109E,:,0103 MOV CX,64H,109E,:,0106 MOV AL,2AH,109E,:,0108 MOV DI,AL,109E,:,010A INC DI,109E:010B,DEC CX,109E,:,010C JNZ 0108,109E,:,010E HLT,109E,:,0110,写入,2,AH(*),后,数据段中相应存储单元的内容改变如下:,DS:1000,2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A,DS:1010,2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A,DS:1020,2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A,DS:1030,2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A,DS:1040,2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A,DS:1050,2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A,DS:1060,2A 2A 2A 2A,什么是堆栈?,按,“,后进先出,(,LIFO),”,方式工作的存储区域。堆栈,以字为单位,进行压入弹出操作。,为什么要设置堆栈?,为什么要按,“,后进先出,”,方式工作?,参见下图,(2),堆栈操作指令,主程序,IP,继续执行,主程序,执行子程序,转子程序,压栈,弹出,返回主程序,主程序,IP,IP(下),继续执行,主程序,转子程序,1,返回主程序,IP,执行子程序,2,转子程序,2,返回子程序,1,IP(下),执行子,程序,1,继续执行,子程序,1,(a),(b),子程序调用示意图,(,a),主程序调子程序;,(,b),子程序嵌套示意图,压栈,弹出,IP(下),规定由,SS,指示堆栈段的段基址,堆栈指针,SP,始终指向堆栈的顶部,,SP,的初值规定了所用堆栈区的大小。堆栈的最高地址叫栈底。,SP,SS,堆栈段,进栈方向,退栈方向,栈底,栈顶,压栈指令,PUSH,src,;,src,为16,位操作数,例:,PUSHAX;,将,AX,内容压栈,执行操作:(,SP)-1,高字节,AH,(SP)-2,低字节,AL,(SP)(SP)-2,设(,AX)=1020H,,执行示意图如图,低地址,存储区,(,SS,段),执行前,(,AX)=1020,(,SP),存储区,(,SS,段),进栈方向,执行后,20,10,(AL),(AH),2-8,PUSH AX,指令执行示意图,(SP),-,2,(,SP),高地址,低地址,高地址,(,SP),-,1,压栈指令的格式为:,PUSH,reg,PUSH,mem,/,reg,PUSH,segreg,例如:,PUSH AX,PUSH BX,PUSH DS,注意进栈方向是,高地址,向,低地址,发展。,弹出指令,POP,dest,例:,POPBX;,将栈顶内容弹至,BX,执行操作:(,BL)(SP),(BH)(SP)+1,(SP)(SP)+2,POP BX,的执行示意图如下图所示,低地址,存储区,(,SS,段),出栈方向,执行前,20,10,POP BX,指令执行示意图,(,SP),存储区,(,SS,段),执行后,(,BX)=1020,(SP),(SP)+1,(SP)+2,BX,20,10,高地址,低地址,高地址,堆栈指令使用时应注意几点:,堆栈操作总是按,字,进行,不能从栈顶弹出一个字给,CS,堆栈指针为,SS:SP,SP,永远指向栈顶,SP,自动进行增减量(,-2,+2),格式:,XCHG,reg,,,mem,/,reg,功能:交换两操作数的内容。,要求:两操作数中必须有一个在寄存器中;,操作数不能为段寄存器和立即数;,源和目地操作数类型要一致。,举例:,XCHGAX,BX,XCHG2000,CL,(3),交换指令,XCHG,(4),查表指令,XLAT,执行的操作:,AL(BX)+(AL),又叫,查表转换指令,,它可根据表项序号查出表中对应代码的内容。执行时先将表的首地址(偏移地址)送到,BX,中,表项序号存于,AL,中。,例如:内存数据段有一张,16,进制数的,ASCII,码表,设首地址为,2000,H,,如欲查出表中第,11,个代码(代码序号从,0,开始)即十六进制数,B,的,ASCII,码。,ASCII,表在,DS,段中,并假设,(,DS)=4000H。,见下页图。,30,31,32,.,39,41,42,.,45,46,.,42000H+,0,42000H+,0BH,0,1,2,9,A,B,E,F,十六进制数,ASCII,码表,存储器,则可用如下几条指令实现,:,MOV BX,2000H,;(BX),表首地址,MOV AL,0BH,;(AL),序号,XALT,;,查表转换,执行后得到:(,AL)=42H=,B,注意:转换表长度最大为,256,个表项,(,字节,),。,(5),字节,-,字转换指令,格式:,CBW ;,把,AL,的符号位复制到,AH,CWD ;,把,AX,的符号位复制到,DX,用途:用于有符号数的除法。,例如:,(,AL)=A7H,,则执行,CBW,后,,AH,的内,容为,FFH。,2.,输入输出,(,I/O),指令,只限于用,累加器,AL,或,AX,来传送信息。,功能,:(,累加器,),I/O,端口,(1),输入指令,IN,格式,:,IN acc,PORT;PORT,端口号,0255,IN acc,DX ;DX,表示的端口范围,达64,K,例:,IN AL,80H ;(AL)(80H,端口,),IN AL,DX ;(AL)(DX),例:,OUT 68H,AX ;(69H,68H)(AX),OUT DX,AL ;(DX)(AL),在使用间接寻址的,IN/OUT,指令时,要事先用传送指令把,I/O,端口号设置到,DX,寄存器,如:,MOV DX,220H,IN AL,DX ;,将220,H,端口内容读入,AL,(2),输出指令,OUT,格式:,OUT port,acc OUT DX,acc,3.,地址传送指令,共有三条,:,格式:,LEA,reg,,,mem,;,将指定存储器的,16,位偏移,地址送指定寄存器,LDS,reg,mem32;DS:,reg,(,mem,开始的四,个内存单元,),LES,reg,mem32;,同上,但,DS,改为,ES,要求,源操作数,必须是一个,内存操作数,,目的操作数必须是一个,16,位的通用寄存器。,设:(,SI)=1000H,则执行该指令后,(,BX)=1010H,注意以下两条指令差别:,LEA BX,BUFFER,MOV BX,BUFFER,前者表示将符号地址为,BUFFER,的存储单元的偏侈地址取到,BX,中;,后者表示将,BUFFER,存储单元中的内容取,到,BX,中.,例:,LEABX,SI+10H,下面两条指令等效:,LEA BX,BUFFER,MOV BX,OFFSET BUFFER,其中,OFFSET BUFFER,表示存储器单元,BUFFER,的偏移地址。,二者都可用于取,存储器单元的偏移地址,,但,LEA,指令可以取动态的地址,,OFFSET,只能取静态的地址。,4.,标志传送指令,共有四条:,(1),读标志指令,LAHF,LAHF,把标志寄存器低,8,位中的,5,个标志位传送到,AH,中的指定位,如下图所示,:,OF,DF,IF,TF,SF,ZF,AF,PF,CF,AH,LAHF,指令的功能,FLAG,(2),设置标志指令,SAHF,SAHF,的功能与,LAHF,的功能正好相反,用图来示意,只要将上图中,5,个箭头方向反一下即可。,OF,DF,IF,TF,SF,ZF,AF,PF,CF,AH,SAHF,指令的功能,FLAG,执行的操作,:(,SP)-1,标志寄存器高,8,位,(,SP)-2,标志寄存器低,8,位,(,SP),(SP)-2,(4),从栈顶弹出标志寄存器指令,POPF,执行的操作,:,标志寄存器,低,8位,(,SP),标志寄存器,高,8位,(,SP)+1,(SP),(SP)+2,PUSHF,和,POPF,指令用于保护和恢复标志寄存器内容。,(3),把标志寄存器推入栈顶指令,PUSHF,例如:,PUSHAX,PUSHCX,PUSHF,;,保护标志寄存器内容,;,这段程序要用到,AX,CX,以及标志位,POPF,;,恢复标志寄存器内容,POPCX,POPAX,.,数据传送指令中,除,SAHF,和,POPF,这两条指令外,其余所有指令均不影响标志位。,小 结,通过本章的学习:,明确各种寻址方式的区别和特点,;,掌握有效地址和物理地址的计算方法,;,掌握各类指令的功能、对标志位的影响和使用上的一些特殊限制;,能够编写小汇编程序,初步掌握汇编程序的编写和调试方法。,Home,Back,4.指令系统,
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 百科休闲 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服