- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
教学目标 理解指令与指令系统的概念 理解指令格式与寻址的概念 掌握各类寻址方式的特点及应用(存储器寻址方式中有效地址和物理地址的计算) 典型微处理器(8086)的指令系统 掌握各类指令的功能及其应用 理解Pentium微处理器新增指令特点 3.2.8 I/O端口寻址 8086系统的I/O端口采用独立编址方式,有专门的输入输出指令(IN/OUT) 可访问64K个字节端口或32个字端口,其寻址方式有直接端口寻址和间接端口 寻址两种: 直接端口寻址 :指令中直接给出要访问的端口地址。 例如:IN AL,20H IN AX,30H 注:访问的端口数为:0~255,并且访问的端口地址采用两位的16进制数表示。 间接端口寻址:访问端口数超过256个,采用的端口间接寻址,I/O端口的地 址先送入到寄存器DX中,用DX作为间接寻址的寄存器 例如:MOV DX, 240H OUT DX, AL 注:访问端口数0~65535。 ⑵ 出栈指令:POP OPRD 功能:将数据弹出堆栈 执行步骤同入栈指令。不同的是: 先将数据弹出堆栈,然后修改堆栈指针SP 。 ( SP )= ( SP )+2 例如: POP [BX] 规定: (1)堆栈段SS、栈指针SP,堆栈只有一个入/出口。 (2)栈指针SP在初始化中需要设置。在入、出栈操作中,栈指针SP是自动修 改的,以保证SP始终指向栈顶。 (3)操作数OPRD可以是CPU内部的16位通用寄存器、段寄存器(CS除外) 和内存单元,也可以用除立即寻址外的所有寻址方式。入、出栈操作对象必须 是16位数。 (4)PUSH、POP指令必须成对使用,在一个程序中不能出现非成对的PUSH、 POP指令 3.交换操作指令 格式:XCHG OPRD1,OPRD2; [目的操作数OPRD1]←→ [源操作数OPRD2] 功能:完成数据交换,把一个字节或一个字的源操作数与目的操作数相 交换。 规定: (1)可实现8位或16位数据的交换。两个操作数的位数必须相同。 (2)交换能在通用寄存器与累加器之间、通用寄存器之间、通用寄存器 与存储器之间进行。两个操作数中必须有一个为寄存器。即不允许在两个存 储器单元之间直接交换数据。 (3)段寄存器和立即数不能作为一个操作数。 (4)交换指令XCHG不影响标志位。 4.XLAT表转换指令(累加器换码指令) 指令格式: XLAT ; ( AL )←(DS)×16+((BX)+(AL)) 功能: 将一个字节从一种代码 (表索引)转换成另一种代码(表项)。 (AL)←((BX)+(AL)) 即将BX的内容加上AL的内容作为操作数的偏移地址,从这个地址 取一个字节内容送入AL中,完成一个字节的换码转换。主要用于数制 转换、函数表查表、代码转换等场合。 使用XLAT指令之前必须先建立一个表格,并将转换表的起始地址装入 BX寄存器中。AL中事先也要送一个初值,这个值等于表头地址与所要查找 的某一项之间的位移量。表格中的内容则是所需要转换的代码,表格最多包含 256个字节. 【例】在内存以TABLE开始的数据段中依次存放着数字0~9对应的LED七段 码3FH、06H、5BH、4FH、66H、 6DH、7DH、07H、7FH、6FH。现要把8 转换成对应的LED七段码,可以用以下几条指令实现: MOV BX, OFFSET TABLE;将转换表的起始地址装入BX寄存器中 MOV AL,8; 送一个初值到AL中,作为操作数的偏移地址 XLAT 结果(AL)=7FH,为8所对应的LED七段码。 5. I/O(输入/输出)操作指令 指令功能:从8位端口读入一个字节到AL寄存器,或从16位端口读一个字到 AX寄存器。注意:端口地址为8位时可直接写在指令中,为16位时要事先放入 DX中。 规定: (1)输入指令允许把一个字节或一个字由一个输入端口传送到AL或AX中 (2)当端口地址≤ 255时,PORT为8位端口直接地址。 (3)当端口地址≥255时,则必须用DX间址( 16位端口直接地址)保存端 口地址,这样用DX作端口寻址最多可寻找64K个端口。 【例】输入/输出指令。 IN
文档评论(0)