四章节80868088指令系统.ppt

上传人:sccc 文档编号:5378540 上传时间:2023-07-01 格式:PPT 页数:37 大小:165.51KB
返回 下载 相关 举报
四章节80868088指令系统.ppt_第1页
第1页 / 共37页
四章节80868088指令系统.ppt_第2页
第2页 / 共37页
四章节80868088指令系统.ppt_第3页
第3页 / 共37页
四章节80868088指令系统.ppt_第4页
第4页 / 共37页
四章节80868088指令系统.ppt_第5页
第5页 / 共37页
点击查看更多>>
资源描述

《四章节80868088指令系统.ppt》由会员分享,可在线阅读,更多相关《四章节80868088指令系统.ppt(37页珍藏版)》请在三一办公上搜索。

1、1,第四讲8086/8088的指令系统,复习7种寻址方式1.立即数寻址 MOV AX,09A0H2.寄存器寻址 MOV AX,BX3.直接寻址 MOV AX,(09A0H)4.寄存器间接寻址 MOV AX,BX5.相对的寄存器间接寻址 MOV AX,BX+55H6.基址加变址寻址 MOV BX+SI,AX7.相对的基址加变址寻址MOV 55HBX+SI,AX,2,第一部分指令系统概述8086/8088的指令系统中共有92种基本指令。可以分成6个功能组:1数据传送(Data transfer)2算术运算(Arithmetic)3逻辑运算和移位指令(Logic&Shift)4串操作(String

2、manipulation)5控制转移(Control Transfer)6处理器控制(Processor Control),3,介绍指令系统使用的符号:八位寄存器:AH,AL,BH,H,BL,CH,CL,DH,DL 十六位通用寄存器:AX,BX,CX,DX,SP,BP,SI,DI 堆栈指针 SP 指令指针 IP(或PC)标志位Flags目的和源变址寄存器DI,SI段寄存器CS,DS,ES,SS,4,src,dest源,目的操作数(下列寻址方式都可以用)BX+SI+n,BX+DI+n,BP+SI+n,BP+DI+nSI+n,DI+n,BP+n,BX+nN,r 存储器单元的内容(正常在数据段)ES

3、:附加存储器段的内容 OPRD 操作数Seg 段寄存器(CS,DS,ES,SS)i m 立即数(n 8位,nn 16位,nnnn 32位),5,8086/8088指令助记符表(自学),自学,6,自学,7,第二部分 8086/8088指令系统一、数据传送指令(Data transfer)(一)通用传送指令(General Purpose Transfer)(二)输入输出指令(Input and Output)(三)目的地址传送指令(Address-object transfer)(四)标志传送指令(Flag register transfer),8,(一)通用传送指令(General Purpo

4、se Transfer)8088提供方便灵活的通用的传送操作,适用于大多数操作数。通用传送指令(除了XCHG以外)是唯一允许以段寄存器为操作数指令。通用传送指令包括:1、MOV(Movement)2、PUSH(Push word onto stack)POP(Pop word off stack)3、XCHG(Exchange)4、XLAT(Translate),9,1MOVdest,src;(dest)(src)目的源目的 源功能:把一个字节(B)或一个字(W)操作数由源传送至目的。实现:寄存器 寄存器/存储器之间;立即数寄存器/存储器寄存器/存储器段寄存器之间的数据传送。,10,具体说,通

5、用数据传送指令能实现:CPU内部寄存器之间的数据的任意传送(除了码段寄存器CS和指令指针IP以外)。段寄存器之间不能传送。例:MOV DL,CH;8位寄存器 8位寄存器 MOV AX,DX;16位寄存器 16位寄存器 MOV SI,BP MOV DS,BX;通用寄存器 段寄存器 MOV AX,CS;段寄存器 通用寄存器,11,立即数传送至CPU内部通用寄存器组(AX、BX、CX、DX、BP、SP、SI、DI)。用于给寄存器赋初值。不能直接给段寄存器赋值例:MOV CL,04H;立即数8位寄存器 MOV AX,03FFH;立即数16位寄存器 PTR:属性定义符号,符号后面的变量(或地址单元)有符

6、号前面的属性 MOV WORD PTR SI,057BH;立即数存储器MOV BYTE PTR MEM,5;立即数存储器,12,CPU内部寄存器(除CS和IP外)与存储器(所有寻址方式)之间数据传送。可以实现一字节或一个字的传送。存储单元之间不能直接传送 例:MOV MEM,AX;累加器存储器,直接寻址MOV MEM,DS;段寄存器存储器,直接寻址MOV DISPBX,CX;寄存器存储器,变址寻址MOV AX,DISP SI;存储器累加器,变址寻址MOV DS,MEM;存储器段寄存器,直接寻址MOV CX,DISP BX SI;存储器累加器,相对基址加变址,13,注意:(1)不能用一条MOV指

7、令实现以下传送。存储单元之间的传送MOV MEM2,MEM1 错。MOV AX,MEM1MOV MEM2,AX 对。立即数送段寄存器 例:MOV DS,2000H 错。MOV AX,2000HMOV DS,AX 对。,14,段寄存器之间的传送MOV ES,DS;错MOV AX,DSMOV ES,AX;对。注意CS和IP的使用 CS和IP不能作为目标操作数,CS可以作为源操作数。例:MOV CS,AX;错 MOV AX,CS;对。MOV IP,AX;错 MOV AX,IP;错。,15,16,17,18,19,20,(2)段地址的默认BX、SI、DI间址默认段地址为DS,BP间址默认段地址SS。(

8、3)凡是遇到给SS赋值指令,系统自动禁止外部中断,执行本条指令和下条指令,恢复对SS寄存器赋值前的中断开放情况。这样做为了允许程序员连续用两条指令分别对SS和SP寄存器赋值,同时又防止堆栈空间变动过程出现中断。*在修改SS和SP的指令之间不要插入其他指令。(4)所有通用传送指令不影响标志位(除SAHF、POPF以外)。,21,2 PUSH(Push word onto stack)POP(Pop word off stack)这是两条堆栈操作指令。(1)先介绍一下什么是堆栈,为什么需要堆栈堆栈按照先进后出原则组织的一段内存区域,特点:下推式的(规定堆栈设置在堆栈段内)改变SP的内容,随着推入堆

9、栈内容增加,SP的值减少。先进后出工作原则(Last In First Out 简称LIFO)堆栈在内存中的情况:(10月20日课讲到此),22,堆栈在内存中的情况:例:设:SS=2000H,SP40H,BX=2340H 运行PUSH BX后,SP=SP-2堆栈在内存中的情况如右图所示:,堆栈在内存中的情况,23,堆栈用途:存放CPU寄存器或存储器中暂时不使用的数据,使用数据时将其弹出;调用子程序,响应中断时都要用到堆栈。调用子程序(或过程)或发生中断时要保护断点的地址,子程序或中断返回时恢复断点。注意:SP堆栈指针,始终指向栈顶。SP初值用MOV SP,i m来设定。,24,3、交换指令(E

10、xchange)格式:XCHG dest,src;(dest)(src)执行操作:把一个字节或一个字的源操作数与目的操作数相交换。可以 实现:寄存器之间 寄存器和存储器之间注意:存储器之间不能交换,两个操作数中必须有一个在寄存器;段寄存器不能作为一个操作数;允许字或字节操作,不影响标志位。,25,应用举例:XCHG BL,DLXCHG AX,SIXCHG COUNTDI,AXXCHG BX,DI(错)XCHG DS,AX(错),26,XLAT(Translate)换码指令:该指令不影响标志位。格式:XLAT str_table;(AL)(BX+AL)或 XLAT str_table表格符号地址

11、(首地址),只是为了提高可读性而设置,汇编时仍用BX。,27,XLAT指令使用方法:先建立一个字节表格;表格首偏移地址存入BX;需要转换代码的序号(相对与表格首地址位移量)存入AL;(表中第一个元素的序号为0)执行XLAT指令后,表中指定序号的元素存于AL中。(AL)为转换的代码。,28,XLAT指令应用:若把字符的扫描码转换成ASCII码;或数字09转换成7段数码所需要的相应代码(字形码)等就要用XLAT指令。例:内存的数据段中有一张十六进制数字的ASCII码表。首地址为:Hex_table,欲查出表中第10个元素(A),29,执行指令序列:MOV BX,OFFSET Hex_tableMO

12、V AL,0AH XLAT Hex_table假设:(DS)=F000H,Hex_table=0040H(AL)=0AH执行XLAT以后:(AL)=41H=(F004AH),即“A”的ASCII码。,16进制数的ASCII码表,30,(二)输入输出指令(Input and Output)输入输出指令共两条:1、IN(Input byte or word)2、OUT(Output byte or word)输入指令用于CPU从外设端口接受数据,输出指令用于CPU向外设端口发送数据。无论接受还是发送数据,必须通过累加器AX(字)或AL(字节),又称累加器专用传送指令。输入、输出指令不影响标志位。,

13、31,每个外设要占几个端口:数据口,状态口和控制口。,32,信息交换要通过端口,在IBMPC机里,可以配接许多外部设备,每个外设与CPU之间交换数据,状态信息和控制命令,每一种信息交换都要通过一个端口来进行。端口数:外部设备最多有65536个I/O端口。A0A15译码形成。端口号:端口号(即外设端口地址)为0000HFFFFH。PC机仅使用A0A9译码形成I/O口地址,即1024H个口地址 端口号:0000H03FFH其中:A9=1,表示扩充槽上的口地址。,33,长格式:端口号中前256个端口(0FFH),可以直接写在指令中,这就是长格式。端口号代替指令中的PORT,机器指令用二字节表示,第二

14、字节就是端口号。短格式:当端口号256时,只能使用短格式,必须先把端口号放到DX寄存器中。不需要用任何段寄存器来修改它的值。,34,1、IN(Input byte or word)输入指令格式:IN acc,port;(acc)(port)具体形式有四种:IN AL,data8;端口地址8位,输入一个字节IN AX,data8;端口地址8位,输入一个字IN AL,DX;端口地址16位,输入一个字节IN AX,DX;端口地址16位,输入一个字 必须通过累加器AX(字)或AL(节)输入数据。,35,2、OUT(Output byte or word)输出指令格式:OUT port,acc;(por

15、t)(acc)具体形式有四种:OUT data8,AL;端口地址8位,输出一个字节OUT data8,AX;端口地址8位,输出一个字OUT DX,AL;端口地址16位,输出一个字节 OUT DX,AX;端口地址16位,输出一个字 必须通过累加器AX(字)或AL(节)输出数据。,36,例1:实现(29H)(28H)(DATA_WORD)IN AX,28H MOV DATA_WORD,AX例2:从端口3FCH 送一个字到AX寄存器MOV DX,3FCH IN AX,DX;(AL)(3FCH),(AH)(3FDH)例3:实现将(AL)(05H)OUT 5,AL;(05H)(AL),37,作业:,3.39(1)(6),3.44,3.46,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 农业报告


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号