我叫阿良 發表於 2024-3-26 10:27:34

汇编语言中XLAT查表指令的使用

<p>如何正确使用查表指令XLAT ?<br />&nbsp;</p>
<p><strong>XLAT指令简介</strong></p>
<blockquote><p>①功能:完成一个字节的查表转换功能。将DS:指向的字节单元的内容送给AL。其中,BX存放的是DS段内表首元素的偏移地址,AL存放的是表内元素相对于表首的偏移<br />量。(可以看作是对一维数组的访问)<br />②说明:使用该指令需要先在数据段中建立一张字节类型的表,该表的最大长度为256字节。</p></blockquote>
<p><strong>简单举个例子</strong></p>
<ul><li>建立一个字符数组,其中为26个大写英文字 母,使用XLAT指令,获取其中的字母&ldquo;z&rdquo;,并进行输出</li></ul>
<div class="jb51code"><pre class="brush:plain;">data segment
      arr db 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
ends

code segment
      assume cs:code,ds:data
start:
      mov ax,data
      mov ds,ax
      mov es,ax
      
      lea bx,arr
      mov al,25
      xlat;把al中的值变为,即al地址变为bx+al
      
      mov dl,al
      mov ah,2
      int 21h
      
      mov ax,4ch
      int 21h
      
ends
end start
</pre></div>
<p><strong>实例</strong>:<br />设计程序(非子程序实现)利用XLAT指令把十六进制数转换成ASCII码。假设ASCII码存放在以DAT1为首地址的数据区中,对应的16进制数放在以DAT2为首地址的数据区中,转换结果送以DAT3为首地址的数据区中。分析:在数据区中建立所需要的ASCII码表。在非子程序结构中直接使用。</p>
<div class="jb51code"><pre class="brush:plain;">DATA   SEGMENT
    DAT1   DB   
    30H,31H,32H,33H,34H,35H,36H,37H,38H,39H
    DAT2   DB    5
    DAT3   DB    ?
DATA   ENDS
CODE   SEGMENT
             ASSUME CS:CODE,DS:DATA
START: MOV   AX,DATA
             MOV   DS,AX
             LEA      BX,DAT1;将表首地址送给BX
             MOV    AL,DAT2;将偏移量送给AL
             XLAT
             MOV    DAT3,AL
             MOV   AH,4CH
             INT      21H
CODE   ENDS
             END    START
         
</pre></div>
<p>查表程序设计</p>
<p style="text-align:center"><img alt="在这里插入图片描述" src="https://img.jbzj.com/file_images/article/202403/2024032610230619.png" /></p>
<p style="text-align:center"><img alt="在这里插入图片描述" src="https://img.jbzj.com/file_images/article/202403/2024032610230620.png" /></p>
<p style="text-align:center"><img alt="在这里插入图片描述" src="https://img.jbzj.com/file_images/article/202403/2024032610230621.jpg" /></p>
<p style="text-align:center"><img alt="在这里插入图片描述" src="https://img.jbzj.com/file_images/article/202403/2024032610230622.jpg" /></p>
<p>到此这篇关于汇编语言中XLAT查表指令的使用的文章就介绍到这了,更多相关汇编语言XLAT查表指令内容请搜索琼殿技术社区以前的文章或继续浏览下面的相关文章希望大家以后多多支持琼殿技术社区!&nbsp;</p>
                           
                            <div class="art_xg">
                              <b>您可能感兴趣的文章:</b><ul><li>汇编语言XOR指令:对两个操作数进行逻辑(按位)异或操作(推荐)</li><li>详解汇编语言RCL(带进位循环左移)和RCR(带进位循环右移)指令</li><li>常用的汇编指令与技巧(收藏)</li><li>汇编语言lea指令使用方法解析</li><li>详解汇编语言 dup伪指令</li><li>汇编语言中cmp指令用法笔记与总结</li><li>详解汇编语言MOV指令</li><li>汇编语言mov指令及基本用法</li><li>汇编指令-状态寄存器、cmp、test、jz等指令详细说明</li><li>汇编指令:JO、JNO、JB..的使用方法</li><li>汇编语言指令大全 X86和X87汇编指令大全(带注释)</li></ul>
                            </div>

                        </div>
                        <!--endmain-->
頁: [1]
查看完整版本: 汇编语言中XLAT查表指令的使用