四章节80868088指令系统教学文稿

上传人:yuzo****123 文档编号:137194129 上传时间:2020-07-06 格式:PPT 页数:37 大小:362.50KB
返回 下载 相关 举报
四章节80868088指令系统教学文稿_第1页
第1页 / 共37页
四章节80868088指令系统教学文稿_第2页
第2页 / 共37页
四章节80868088指令系统教学文稿_第3页
第3页 / 共37页
四章节80868088指令系统教学文稿_第4页
第4页 / 共37页
四章节80868088指令系统教学文稿_第5页
第5页 / 共37页
点击查看更多>>
资源描述

《四章节80868088指令系统教学文稿》由会员分享,可在线阅读,更多相关《四章节80868088指令系统教学文稿(37页珍藏版)》请在金锄头文库上搜索。

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

2、est) (src) 目的源目的 源 功能: 把一个字节(B)或一个字(W)操作数由源传送至目的。 实现:寄存器 寄存器/存储器之间; 立即数寄存器/存储器 寄存器/存储器段寄存器之间的数据传送。,10, 具体说,通用数据传送指令能实现: CPU内部寄存器之间的数据的任意传送 (除了码段寄存器CS和指令指针IP以外)。 段寄存器之间不能传送。 例: MOV DL,CH ; 8位寄存器 8位寄存器 MOV AX,DX ; 16位寄存器 16位寄存器 MOV SI, BP MOV DS,BX ;通用寄存器 段寄存器 MOV AX, CS ;段寄存器 通用寄存器,11,立即数传送至CPU内部通用寄存

3、器组 (AX、BX、CX、DX、BP、SP、SI、DI)。 用于给寄存器赋初值。 不能直接给段寄存器赋值 例: MOV CL,04H;立即数8位寄存器 MOV AX,03FFH;立即数16位寄存器 PTR :属性定义符号,符号后面的变量(或地址单元)有符号前面的属性 MOV WORD PTR SI ,057BH ;立即数存储器 MOV BYTE PTR MEM, 5 ;立即数存储器,12,CPU内部寄存器(除CS和IP外) 与存储器(所有寻址方式)之间数据传送。 可以实现一字节或一个字的传送。 存储单元之间不能直接传送 例: MOV MEM , AX; 累加器存储器,直接寻址 MOV MEM

4、,DS;段寄存器存储器,直接寻址 MOV DISPBX ,CX;寄存器存储器,变址寻址 MOV AX , DISP SI;存储器累加器,变址寻址 MOV DS , MEM;存储器段寄存器,直接寻址 MOV CX , DISP BX SI ;存储器累加器,相对基址加变址,13, 注意: (1)不能用一条MOV指令实现以下传送。 存储单元之间的传送 MOV MEM2 , MEM1 错。 MOV AX , MEM1 MOV MEM2 , AX 对。 立即数送段寄存器 例 : MOV DS,2000H 错。 MOV AX, 2000H MOV DS , AX 对。,14,段寄存器之间的传送 MOV E

5、S , DS ; 错 MOV AX , DS MOV 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。 (3)凡是遇到给SS赋值指令,系统自动禁止外部中断,执行本条指令和下条指令,恢复对SS寄存器赋值前的中断开放情况。 这样做为了允许程序员连续用两条指令分别对SS和SP寄存器赋值,同时又防止堆栈空间变动

6、过程出现中断。 *在修改SS和SP的指令之间不要插入其他指令。 (4)所有通用传送指令不影响标志位 (除SAHF、POPF以外)。,21,2 PUSH (Push word onto stack) POP (Pop word off stack) 这是两条堆栈操作指令。 (1) 先介绍一下什么是堆栈,为什么需要堆栈 堆栈按照先进后出原则组织的一段内存区域, 特点: 下推式的(规定堆栈设置在堆栈段内)改变SP的内容, 随着推入堆栈内容增加,SP的值减少。 先进后出工作原则(Last In First Out 简称LIFO) 堆栈在内存中的情况: (10月20日课讲到此),22,堆栈在内存中的情况

7、: 例: 设: SS=2000H , SP40H,BX=2340H 运行PUSH BX后,SP=SP-2 堆栈在内存中的情况如右图所示:,堆栈在内存中的情况,23,堆栈用途: 存放CPU寄存器或存储器中暂时不使用的数据, 使用数据时将其弹出; 调用子程序, 响应中断时都要用到堆栈。 调用子程序(或过程)或发生中断时要保护断点的地址, 子程序或中断返回时恢复断点。 注意:SP堆栈指针,始终指向栈顶。 SP初值用MOV SP,i m来设定。,24,3、交换指令(Exchange) 格式:XCHG dest , src;(dest) (src) 执行操作: 把一个字节或一个字的源操作数与目的操作数相

8、交换。 可以 实现: 寄存器之间 寄存器和存储器之间 注意: 存储器之间不能交换,两个操作数中必须有一个在寄存器; 段寄存器不能作为一个操作数; 允许字或字节操作,不影响标志位。,25,应用举例: XCHG BL,DL XCHG AX,SI XCHG COUNTDI, AX XCHG BX,DI(错) XCHG DS, AX (错),26,XLAT(Translate)换码指令:该指令不影响标志位。 格式: XLAT str_table;(AL)(BX +AL) 或 XLAT str_table表格符号地址(首地址), 只是为了提高可读性而设置,汇编时仍用BX。,27,XLAT指令使用方法:

9、先建立一个字节表格; 表格首偏移地址存入BX; 需要转换代码的序号(相对与表格首地址位移量)存入AL; (表中第一个元素的序号为0) 执行XLAT指令后,表中指定序号的元素存于AL中。 (AL)为转换的代码。,28,XLAT指令应用: 若把字符的扫描码转换成ASCII码; 或数字09转换成7段数码所需要的相应代码(字形码)等就要用XLAT指令。 例:内存的数据段中有一张十六进制数字的ASCII码表。 首地址为:Hex_table ,欲查出表中第10个元素(A),29,执行指令序列: MOV BX,OFFSET Hex_table MOV AL,0AH XLAT Hex_table 假设: (D

10、S)=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(字节), 又称累加器专用传送指令 。 输入、输出指令不影响标志位。,31,每个外设要占几个

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

12、二字节就是端口号。 短格式: 当端口号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 wor

13、d) 输出指令 格式: OUT port, acc ;(port) (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备13022795号 | 川公网安备 51140202000112号