网站大量收购独家精品文档,联系QQ:2885784924

第六章-指令系统2014.ppt

  1. 1、本文档共31页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第六章-指令系统2014

谢 谢! * 苗清影 qymiao@sjtu.edu.cn 80X86微处理器的指令系统 格式:XCHG dest,src; (dest)?(src) 执行操作: 把一个字节或一个字的源操作数与目的操作数相交换。 可以实现: 寄存器之间,寄存器和存储器之间 注意: 存储器之间不能交换,两个操作数中必须有一个在寄存器; 段寄存器不能作为一个操作数; 允许字或字节操作,不影响标志位。 交换指令 (Exchange) XCHG BL, DL XCHG AX, SI XCHG COUNT[DI], AX XCHG [BX], [DI] XCHG DS, AX 应用实例 例一:BL=88H, CL=17H, AX=2500H, DX=0100H XCHG AX, DX XCHG BL, CL DX=? CL=? 例二:BX= 6F30H, BP=0200H, SI=0046H, SS=2FOOH, (2F246H)=4154H XCHG BX, [BP+SI] BX=? (2F246H)=? 结果为: AX=0100H DX=2500H CL=88H BX=4154H (2F246H)=6F30H 应用实例 格式:XLAT str_table;(AL)←( (BX) + (AL) ) 或 XLAT str_table — 表格符号地址(首地址), 只是为了提高可读性而设置,汇编时仍用BX。 XLAT 换码指令 先建立一个字节表格; 表格首偏移地址存入BX; 需要转换代码的序号(相对与表格首地址位移量)存入 AL;表中第一个元素的序号为0) 执行XLAT指令后,表中指定序号的元素存于AL中。 (AL)为转换的代码。 XLAT 换码指令 若把字符的扫描码转换成ASCII码; 或数字0~9转换成7段数码所需要的相应代码(字形码)等就要用XLAT指令。 例:内存的数据段中有一张十六进制数字的ASCII码表。 首地址为:Hex_table, 欲查出表中第10个元素(‘A’)。 XLAT 指令实例 执行指令序列: MOV BX,OFFSET Hex_table MOV AL,0AH XLAT Hex_table 假设:(DS) = F000H, Hex_table = 0040H (AL) = 0AH 执行XLAT以后: (AL) = 41H = (F004AH), 即“A”的ASCII码。 30H 31H 32H ... 39H 41H 42H ... 46H ... Hex_table Hex_table+1 Hex_table+2 Hex_table+0AH Hex_table+0BH Hex_table+0FH F B A 9 1 2 0 16进制数的ASCII码表 XLAT 指令实例 例: BX=4040H, AL=0AH, DS=F000A, (F404AH)=20H XLAT AL=? 物理地址=? 答案: AL=20H 物理地址=F0000H+4040H+0AH=F404AH XLAT 指令实例 1、IN (Input byte or word) 2、OUT (Output byte or word) 输入指令用于CPU从外设端口接受数据, 输出指令用于CPU向外设端口发送数据。 无论接受还是发送数据,必须通过累加器AX或AL,又称累加器专用传送指令 。输入、输出指令不影响标志位。 输入输出指令 每个外设要占几个端口:数据口,状态口和控制口。 输入输出指令 信息交换要通过端口 在IBM PC机里,可以配接许多外部设备,每个外设与CPU之间交换数据,状态信息和控制命令,每一种信息交换都要通过一个端口来进行。 端口数:外部设备最多有65536个I/O端口。A0~A15译码形成。 端口号:端口号(即外设端口地址)为0000H~FFFFH。 PC机仅使用A0~A9译码形成I/O口地址,即1024H个口地址,端口号:0000H~03FFH,其中: A9=1,表示扩充槽上的口地址。 输入输出指令 长格式: 端口号中前256个端口(0~FFH),可以直接写在指令中,这就是长格式。端口号代替指令中的PORT,机器指令用二字节表示,第二字节就是端口号。 短格式: 当端口号≥256时,只能使用短格式,必须先把端口号放到DX寄存器中。不需要用任何段寄存器来修改它的值。 输入输出指令 格式:IN acc,port ; (acc) ? (port) 具体形式有四种: IN AL,data8 ;端口地址8位,输入

文档评论(0)

yaocen + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档