微机原理-寻址方式指令系统.ppt
《微机原理-寻址方式指令系统.ppt》由会员分享,可在线阅读,更多相关《微机原理-寻址方式指令系统.ppt(71页珍藏版)》请在三一办公上搜索。
1、微机原理及应用,聊城大学物理系技术物理实验室,2002年10月7日,第2章8086/8088的寻址方式和指令系统,指令执行时间2.3 8086/8088指令系统2.3.1 数据传送指令2.3.2 算术运算指令作业:习题集P6 2-2 2-5 2-8 2-10 2-17 2-25 2-30,2.3 8086/8088指令系统,可分成如下6类:数据传送指令算术运算指令逻辑运算和位移指令串操作指令控制转移指令处理器控制指令,2.3.1 数据传送指令,用来实现:寄寄,CPU存CPUI/O 之间的数据传送。这是一种最基本、最重要的操作。这类指令又可分为如下四种:通用传送累加器专用传送地址传送标志传送,1
2、.通用传送指令(1)MOV dst,src;dstsrc 传送的是字节还是字取决于指令中涉及的寄存器是8位还是16位。具体来说可实现:MOV mem/reg1,mem/reg2式中两操作数中至少有一个为寄存器 例:MOVCL,DLMOVAX,BXMOVSI,CXMOVCL,BX+5,MOVreg,data;立即数送寄存器MOVmem/reg,dataMOVac,mem;存储单元送累加器MOVmem,ac;累加器送存储单元MOVsegreg,mem/reg;段寄 存/寄MOVmem/reg,segreg;存/寄 段寄,对MOV指令小结,可执行:寄寄;但CS,IP不能作目的寄存器寄存;不能:存存寄
3、,存段寄;不能:段寄段寄寄立即数;不能:段寄立即数存立即数,几个不能送的解决办法:MOVAL,mem1;通过寄存器AL作桥梁MOVmem2,AL;用来解决存存MOVAX,DS;通过AX解决:MOVES,AX;段寄段寄MOVAX,data;通过AX解决:MOVDS,AX;段寄立即数,举例:将1000H开始的100个存储单元送上ASCII码2AH(*)。程序段如下:MOVSI,1000H MOVCX,64H MOVAL,2AHAGAIN:MOVSI,AL INCSI DECCX JNZ AGAIN INT20H;若(CX)=0,返回DOS,上程序段存放在码段中,设(CS)=109EH,则各条指令存
4、放地址如下:109E:0100 MOV SI,1000H109E:0103 MOV CX,64H109E:0106 MOV AL,2AH109E:0108 MOV SI,AL109E:010A INC SI109E:010B DEC CX109E:010C JNZ 0108109E:010E INT 20H109E:0110,送上2AH(*)后。数据段中相应存储单元的内容改变如下: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
5、 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 00 00 00 00 00 00 00 00 00 00 00 00*,堆栈:在内存中开辟若干单元作为
6、栈区,按 后进先出 方式工作。为什么要设置堆栈?为什么要按 后进先出 方式工作?参见图2-7,“,“,”,”,(2)堆栈操作指令,主程序,IP,IP(下),继续执行,主程序,执行子程序,转子程序,压栈,弹出,返回主程序,主程序,IP,IP(下),继续执行,主程序,转子程序1,返回主程序,IP,执行子程序 2,转子程序2,返回子程序1,IP(下),执行子程序1,继续执行,子程序1,(a),(b),图2-7 子程序调用示意图,(a)主程序调子程序;(b)子程序嵌套示意图,堆栈规定设置在堆栈段SS内,堆栈指针SP始终指向堆栈的顶部,SP的初值规定了所用堆栈区的大小。压栈指令 PUSH src例:PU
7、SHAX;将AX内容压栈 执行操作:(SP)-1高字节AH(SP)-2低字节AL(SP)(SP)-2,设(AX)=1020H,执行示意图如图,(SP),低地址,存储区(SS段),执行前(AX)=1020,(SP),低地址,存储区(SS段),进栈方向,执行后,20,10,AL,AH,图2-8 PUSH AX指令执行示意图,2-8,图2-8 PUSH AX指令执行示意图,(SP)-1,(SP)-2,压栈指令的格式为:PUSH regPUSH mem/regPUSH segreg 弹出指令POPdst例:POPBX;将栈顶内容弹至BX执行操作:(BL)(SP)(BH)(SP)+1(SP)(SP)+2
8、,注意进栈方向是高地址向低地址发展。,POPBX 的执行示意图如图2-9所示,(SP),低地址,存储区(SS段),出栈方向,执行前,20,10,图2-9 POP BX指令执行示意图,(SP),低地址,存储区(SS段),执行后(BX)=1020,20,10,(SP)+1,(SP)+2,POP指令的格式同PUSH指令,堆栈指令使用时应注意两点:堆栈操作总是按字进行不能从栈顶弹出一个字给CS,格式为:XCHG reg,mem/reg要求两操作数中必须有一个在寄存器中,不允许使用段寄存器。举例:XCHGAX,BX XCHG2000,CL,(3)交换指令XCHG,2.累加器专用传送指令,所谓专用只限于用
9、累加器AL或AX来传送信息。完成的操作:CPUI/O端口(1)输入指令IN格式:IN ac,port;port端口号0255H IN ac,DX;DX表示的端口范围达64K例:IN AL,80H;(AL)(80H)IN AX,DX;(AX)((DX)+1,(DX)),例:OUT 68H,AX;(68+1,68H)(AX)OUT DX,AL;(DX)(AL)在使用间接的IN/OUT指令时,在指令执行前,应先用传送指令对DX寄存器设置好端口号,如:MOVDX,220HINAL,DX;将220H端口内容读 入AL累加器,(2)输出指令OUT格式:OUT port,ac OUT DX,ac,(3)换码
10、指令XLAT 执行的操作:(AL)(BX)+(AL)又叫查表转换指令,它可根据表中代码的序号查出表中对应代码的内容。执行时先将表的首地址(偏移地址)送到BX中,代码序号存于AL中。例如:内存数据段有一张16进制数的ASCII码表,设首地址为2000H,如图2-10所示,如欲查出表中第11个代码(代码序号从0开始)即 B 的ASCII码,(表中地址设(DS)=4000H),30,31,32,.,39,41,42,.,45,46,.,42000H+0,42000H+11,0,1,2,9,A,B,E,F,图2-10 十六进制数ASCII码表,存储器,MOV BX,2000H;(BX)表首地址 MOV
11、 AL,0BH;(AL)序号 XALT;查表转换 执行后得到:(AL)=42H 3。地址传送指令 共有三条,它们是:(1)LEA reg,mem;将指定存储器的16 位偏址送指定寄存器.指令要求源操作数必须是一个内存操作数,目的操作数必须是一个16位的通用寄存器。,则可用如下几条指令实现:,设:(SI)=1000H则执行该指令后,(BX)=1010H注意以下两条指令差别:LEABX,BUFFER 和 MOV BX,BUFFER下面两条指令等效:LEA BX,BUFFER 和 MOV BX,OFFSET BUFFER其中OFFSET BUFFER表示存储器BUFFER的偏移地址。,例:LEABX
12、,SI+10H,(2)LDS reg,mem32;把指定存储器的内 容送入指定的寄存器 传送的是一个32位的地址指针,将存储器的前两个单元的内容(16位偏址)送入指定的寄存器,后两个单元的内容(段地址)送入DS。例:LDSSI,0100H若指令执行前(DS)=3000H,(30100H)=0200H(30102H)=1000H,则指令执行后(SI)=0200H,(DS)=1000H,与LDS指令类似,将32位地址指针送指定的寄存器(常指定为DI)及ES.4。标志传送指令 共有四条:(1)读标志指令LAHF 本指令把标志寄存器低8位中的5个标志位传送到AH中的指定位,如下图2-11所示,(3)L
13、ES reg,mem32,OF,DF,IF,TF,SF,ZF,AF,PF,CF,AH,FLAG,图2-11 LAHF指令的功能,(2)设置标志指令SAHF SAHF的功能与LAHF的功能正好相反,用图来示意,只要将图2-11中5个箭头方向反一下即可。,执行的操作:(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 PU
14、SHF.这段程序要用到AX,CX以及标.志位,可能改变.POPF;恢复时,后入栈先弹出 POPCX POPAX 关于数据传送指令对标志位的影响,除SAHF和POPF这两条指令外,其余所有指令均不影响标志位。,2.3.2 算术运算指令,算术运算指令涉及两种类型数据,即无符号数和有符号数。对加法指令和减法指令而言,无符号和有符号数可采用同一套指令,其条件有两个:一是参加的操作数必须同为无符号数或同为有符号数。二是要采用不同标志位来检查无符号数和有符号数的运算结果是否溢出。,下面看一下两个8位数相加时的4种情况:,无符号数和有符号数均不溢出二进制相加 无符号数加有符号数加 0000 1000 8+8
15、+0001 1110+30+(+30)0010 0110 38+38 结果38 CF=0 OF=0,无符号数溢出 0000 1000 8+8+1111 1101+253+(-3)10000 0101 261+5 结果5 CF=1OF=0 有符号数溢出 0000 1000 8+8+0111 1101+125+(+125)1000 0101 133+133结果-123 CF=0 OF=1(补码表示),无符号数和有符号数均溢出 1000 1000 136-120+1111 0111+247+(-9)10111 1111 383-129 结果127 CF=1 OF=1上面四种情况清楚说明,CF标志可用
16、来表示无符号数的溢出,OF标志可用来表示有符号数的溢出。需要指出的是有符号数的溢出是一种出错,在运算过程中应当避免。,共有5条指令:(1)不带进位的加法指令ADD.格式有:ADDac,data ADDmem/reg,data ADDmem/reg1,mem/reg2例:ADDAL,30H ADDAX,BX+20H ADDCX,SI ADDDI,200HADD指令对标志位(指状态标志)都有影响.,1.加法指令,(2)带进位位的加法指令ADC,ADC指令在形式上和功能上都有与ADD类似,只是在相加时要把进位标志的现行值CF加到和中,例如:ADC AL,68H ADC AX,CX ADC BX,DI
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 原理 寻址 方式 指令系统

链接地址:https://www.31ppt.com/p-6363365.html