- 1、本文档共57页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
哈工程微机原理3.2概要
(4)换码指令 该指令对于进行代码转换非常有用——利用该指令查表。 执行操作:(AL) ? ( (BX) + (AL) ) 功能:使用换码指令时,要求BX指向表的首地址,AL中为表中某一项与表格首地址之间的位移量。执行指令时,会将BX和AL的内容相加,把得到的值作为地址,然后将此地址所对应的单元中的值取到AL中。 说明(使用方法): 先在存储器的数据段中建立一个字节表格,表格的内容则是要换取的代码。 表格的首地址送到寄存器BX中。 对应编码相对于表格首地址的位移量送到寄存器AL中。 指令XLAT指令,AL中即为转换后的编码。 (4)换码指令 换码指令:XLAT 或 XLAT OPR XLAT?opr,opr为字节表格的首地址,因为opr所表示的偏移地址已存入BX寄存器,所以opr在换码指令中可有可无,有则可提高程序的可读性。 (4)换码指令 (4)换码指令 Hex_table+0 Hex_table+1 Hex_table+2 Hex_table+8 Hex_table+9 ‘0’ ‘1’ ‘2’ ‘8’ ‘9’ 30H 31H 32H 38H 39H 例: 在内存的数据段中存放有一张数值0~9的ASCII码转换表,首地址为Hex_table,如右图所示。现要把数值8转换成对应的ASCII码,可用以下几条指令实现: LEA BX,Hex_table ;(BX)←表首偏移地址 MOV AL, 8 ; (AL)←8 XLAT ;查表转换 执行指令: MOV BX, offset Hex_table ; BX←表首地址 MOV AL,8 ;AL←元素符号 XLAT Hex_table ;查表转换代码 执行后:AL=38H(A的ASCII码) 例:MOV BX, OFFSET TABLE ; (BX)=0040H,表首地址 MOV AL, 3 XLAT TABLE 指令执行后 (AL)=33H 注意: * 不影响标志位 * 字节表格(长度不超过256) 首地址? (BX) * 需转换代码 ? (AL) (BX) ? 30 H F0040 31 H F0041 (AL) = 3 32 H F0042 33 H F0043 TABLE (DS)=F000H 2.地址传送指令 (1)有效地址传送指令 格式:LEA DEST,SRC 功能:这是一条取有效地址的指令(Load effective address)。它用来将源操作数的偏移地址传送到通用寄存器、指针或变址寄存器中。 注意:对于该指令,原操作数一定是存储单元的操作数地址,目的操作数一定是16位的通用寄存器。 例3-18 有效地址传送指令 MOV BX,[3200H] ;将3200H单元的内容送BX LEA BX,[3200H] ;将有效地址3200H送BX LEA SI,ADDR ;将ADDR的有效地址送SI (2)地址指针传送指令 格式:LDS DEST,SRC LES DEST,SRC 功能:将源操作数指定的连续4个存储器单元中存放的32位地址指针(包括一个段地址和一个偏移地址)传送到两个16位寄存器 。 前两个字节(偏移量) 非段寄存器 后两个字节(段基址) DS/ES 例3-19 地址指针传送指令 POINT DD ;设定POINT的段地址和偏移地址 LDS BX,POINT ;(BX)=3344H,(DS)=5566H LES BX,POINT ;(BX)=3344H,(ES)=5566H 例:LDS SI, [10H] 例:LES DI, [BX] 前:(DS)=C000H (C0010H)=0180H (C0012H)=2000H 后:(SI)= 0180H (DS)=2000H 前:(DS)=C000H (BX)=0010H (C0010H)=0180H (C0012H)=2000H 后:(DI)= 0180H (ES)=2000H 例: (DS):1000H 40 H 00 H
文档评论(0)