第3章8086指令系统

上传人:今*** 文档编号:110214767 上传时间:2019-10-29 格式:PPT 页数:74 大小:2.25MB
返回 下载 相关 举报
第3章8086指令系统_第1页
第1页 / 共74页
第3章8086指令系统_第2页
第2页 / 共74页
第3章8086指令系统_第3页
第3页 / 共74页
第3章8086指令系统_第4页
第4页 / 共74页
第3章8086指令系统_第5页
第5页 / 共74页
点击查看更多>>
资源描述

《第3章8086指令系统》由会员分享,可在线阅读,更多相关《第3章8086指令系统(74页珍藏版)》请在金锄头文库上搜索。

1、目的要求:,1.了解指令编码格式,以及其中各字段符号的含意。,2.掌握8086/8088微处理器的寻址方式及其分类。,3.掌握8086/8088微处理器的常用指令。,4.理解指令执行对标志寄存器FLAGS状态标志的影响。,第3章 8086指令系统,3.1 基本数据类型,字节(1B)、字(2B)、双字(4B)、四字(8B)、双四字(16B) 低字节占用内存中的最低地址,此地址也是此操作数的地址。 各基本数据类型的自然边界的地址应分别被1、2、4、8、16整除。,数字数据类型 无符号整数:原始的二进制值 符号整数:补码表示的二进制值,指针数据类型 近指针(Near):16位(8086)或32位(8

2、0386+) 远指针(Far): 32位(8086)或48位(80386+),一.指令编码的格式,1.指令与指令系统,(1)指令汇编语言中,要求微处理器进行特定的操作的命令称为指令。,(2)指令系统指某一微处理器所能够执行的指令的全体(集合)称为指令系统。,(3)程序使微处理器能够完成一个完整的任务的一系列指令的集合称为程序。,2.指令的组成,(1)操作码规定微处理器完成某种特定操作的二进制代码称为操作码。如:传数、算术/逻辑运算、输入/输出、转移等等操作。,(2)操作数参与操作的数据称为操作数。如:运算数据、数据所在地址(寄存器、存储器单元、I/O端口)等。,3.2 8086的指令格式,3.

3、指令的格式,(1)单字节指令 无操作数指令 单操作数指令,NOP 90H PUSH AX50H PUSH DS1EH AX 000 DS 11,(2)双字节指令 无操作数指令,单操作数指令,W字节/字操作;0字节,1字 MOD方式;11寄存器方式,00、01、10存储器方式 R/M 寄存器/存储器;由方式确定。,指令分为定长与变长指令格式。,8086微处理器的是变长指令格式。根据功能的不同,通常分 为:单、双、三、四、五与六字节指令。,(3)三字节指令,(4)四字节指令,(5)五、六字节指令,0100,3.3 8086指令的操作数寻址方式,寻址方式获得操作数或获得操作数所单元地址的方式。,1.

4、立即寻址(Immediate Addressing),01,00,AH AL AX,B8,CS,将立即数直接传送入寄存器或存储器中。,MOV AX,0100H,35,A4,AH AL AX,A1,00,01,DS,A4,00,01,CS,2.直接寻址(Direct Addressing),35,MOV AX,NUM ;变量NUM的地址为0001H,3.寄存器寻址(Registert Addressing),35,A4,BH BL BX,35,A4,AH AL AX,MOV AX,BX ;设(BX)=35A4H,操作数的地址在指令中,寻找数据段的对应的地址,然后将 其地址下的内容传送至目的地址。

5、,MOV AX,WORD PTR DS:0001H,设:(0001H)=A4H,(0002H)=35H,源操作数/目的操作数在寄存器中,该寄存器传送数/接收数。,大多数指令,源操作数/目的操作数在寄存器中。,CS,8B 07,35,00,01,00,01,BH BL,00,35,AH AL,DS,00,4.寄存器间接寻址(Register Indirect Addressing),MOV AX,BX ;(BX)=0001H,(0001H)=35H, (0002H)=00H,(2)通过BP寻堆栈段对应偏移地址。然后传送或接收数据。,CS,8B 4600,35,00,01,00,01,BP,00,

6、35,AH AL,SS,00,(1)存储器与寄存器之间的操作,通过BX、SI、DI寻数据 段对应偏移地址。然后传送或接收数据。,按指令码寻BX,MOV AX,BP ;(BP)=0001H,(0001H)=35H, (0002H)=00H,按指令码寻BP,5.变址寻址(Indexed Addressing),MOV AX,NUMBX ;(BX)= 1000H,NUM=0010H,CS,8B 87,35,10,10,10,00,BX,00,35,AX,DS,00,NUM,00,10,+,MOV AX,10BP ;(BP)= 1000H,CS,8B 47,35,10,0A,10,00,BP,00,3

7、5,AX,SS,00,0A,+,10,10,0A,10,10,00,0A,存储器与寄存器之间的操作,通过BX、SI、DI、BP与变量及 常数之和,寻对应段所对应的偏移地址。然后传送或接收数据。,(1010H)=35H,(1011H)=00H,(100AH)=35H,(100BH)=00H,按指令码寻BX,按指令码寻BP,6.基址加变址寻址,MOV AX,10BXDI ;(BX)= 1000H,(DI)= 0100H,35,11,0A,10,00,BX,00,35,AX,DS,00,01,00,+,CS,8B 40,0A,DI,11,0A,注意:通过BX或BP与变量或常数之和,寻数据所在段对 应

8、偏移地址,又称“基址寻址”;,0A,存储器与寄存器之间的操作,通过BX或BP与SI或DI及变量或 常数之和,寻找对应段的偏移地址。然后传送或接收数据。,通过SI或DI与变量或常数之和,寻数据所在段对应 偏移地址,称为“变址寻址”。,与前寻址方式相同,BP对应SS段。,(110AH)=35H,(110BH)=00H,按指令码寻BX与DI,7寻址方式小结,(1)寻址的关键是获得正确有效地址EA,例一:以下的表示法是否代表同一有效地址? BX+SI+2 BX+2+SI BX+2SI BXSI+2 BXSI+2 2BXSI,例二:指令中存贮器操作数的有效地址及位移量各为何值? MOV AX,VARBX

9、+DI+2,结论:所有表示法正确,为同一地址。,解:EA=BX+DI+2+OFFSET VAR,(2)使用存贮器操作数的注意事项, 若出现基值指示器BP,其缺省段必为堆栈段的段寄 存器SS。, 若出基址寄存器BX及变址寄存器SI与DI,必须使用 数据段的段寄存器DS。, 在源或目的表达式中不能同时出现基值指示器BP和 基址寄存器BX,或者源变址寄存器SI和目的变址寄 存器DI;必须一个是BP或BX,另一个是SI或DI。, 数据寄存器DX不能写为存贮器操作数表达式中的寄 存器名。以用于I/O端口寻址方式中,作为I/O端口的 寻址。,例1:指出下列指令的错误,MOV AH,BX,MOV BX,SI

10、,;数类型不匹配,MOV AX,SIDI,;存贮器之间不能传数据,;SI,DI不能同时用于源或目的,MOV BYTE PTRBX,1000,MOV BX,OFFSET MYDATASI,;数类型不匹配,MOV CS,AX,;OFFSET使用不当,MOV DS,BP,;CS 不能随意改变,MOV AL,DX,;DS不能从基值寄存器送入,MOV AX,BXBP,;BX,BP不能同时用于源或目的,;DX不能作为存贮器操作数表达式,8.寄存器的应用,(1)加法与减法:AX、BX、CX、DX、BP、SI、DI、SP,(2)乘法与除法:DX、AX(字操作),AX、AL(字节操作),(3)循环计数:CX,(

11、4)保持段地址:CS,DS,SS,ES,(5)将要取出的指令的偏移地址:IP,(6)压入或弹出堆栈的数据的偏移地址:SP,(7)输入或输出堆栈的数据的偏移地址:BP,(8)可以指示存储器的地址偏移量:BX、BP、SI、DI,(9)作为间接I/O口的地址:DX,(10)数据串指令的操作:CX,SI,DI、ES,(11)存放查表转换指令的首偏移地址:BX,(12)表示运算特征与控制标志:FLAGS,(13)循环指令的操作:CL,以上寄存器的应用范围,在程序设计中应该注意,,通过机练习逐步的进行掌握与体会。,3.4 8086的通用指令,3.4.1 数据传送指令,SAHF,AH对位传送至S F、ZF、

12、AF、PF、CF,1.MOV指令,(1)应用MOV指令的注意事项, 立即数只能为“源”,不能直接送入段寄存器;, 存储器之间不能传数,即“目的”与“源”不能 同时为存储器;, 代码段段寄存器(CS)不能为“目的”;, 应区分是“字节”传送,或“字”传送。,(2)MOV指令举例,例1:执行以下语句后,AX中的内容是多少? MOV AX,DATABXSI 设:(BX)= 2000H,(SI)=0200H OFFSET DATA = 0100H,解:有效地址EA = BX+SI+OFFSET DATA = 2000H+0200H+0100H=2300H,结果:(AL)= 偏移地址为2300H单元的内

13、容 (AH)= 偏移地址为2301H单元的内容,例2:将段基值送入数据段/附加段的段寄存器? (设:DATA为某数据段的段名),解:MOV AX,DATA MOV DS,AX MOV ES,AX,2.PUSH(A)、POP(A)堆栈操作指令,(1)应用堆栈操作指令注意事项, 堆栈操作均为“字”操作;, 代码段段寄存器不能参与操作。,(2)堆栈操作举例,例:将AX与BX的内容交换。,方法一:MOV CX,AX MOV AX,BX MOV BX,CX,PUSH AX PUSH BX POP AX POP BX,方法二:运用堆栈操作,3.XCHG(交换)指令,4.XLAT(查表)指令,(2) 例:将

14、内存中两个单元的内容交换。,(1)应用交换指令注意事项, 段寄存器不能作为操作数;, 两操作数不能同时为存储器;,(2) 例:将内存数据表中的第10个单元的内容送入。,(1)应用查表指令注意事项, 源操作数:BX为基址,AL为变址;, 目的操作数:AL;,解:MOV AL,9 MOV BX,OFFSET TAB XLAT,5.LEA(目标地址传送)指令,(1)LEA(Load Effective Address)指令与MOV指令,设:(DS)= 093AH,OFFSET BUFF = 0023H,MOV BX,BUFF,LEA BX,BUFF,45,00,45,00,093A:,0023,45

15、00,23,00,093A:,0023,23,00,DS,DS,BH BL,BH BL,4500,(2)LEA指令与OFFSET伪指令,MOV BX,OFFSET BUFF,LEA BX,BUFF,6.LDS、LES、LSS(目标地址传送)指令,(1)应用LDS、LES、LSS指令的注意事项, 为32位操作指令;, 传送的是预置的偏移地址与段地址;, LDS传送的段地址为数据段的段地址,LES传送的段地 址为附加数据段的段地址,LSS为堆栈段地址。,(2) LDS应用举例,(1)应用IN与OUT指令的注意事项, I/O口地址为8位时,口地址为“立即数”;, I/O口地址为16位时,口地址应存放在 “DX”中;, IN与OUT指令,必须应用累加器AX或AL。,(2)8086的IN与OUT指令的格式,输入指令格式,IN AL,n,IN AX,n,IN AL,DX,IN AX,DX,输出指令格式,OUT n , AL,OUT n , AX,OUT DX , AL,OUT DX , AX,“ n”为小于或等于8位立即数I/O口地址 “DX”存放大于8位等于16位I/O口地

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

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

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