汇编学习

换码指令XLAT

将BX指定的缓冲区中、AL指定的位移处的一个字节数据取出赋给AL

XLAT ;al←ds:[bx+al]

换码指令执行前:
在主存建立一个字节量表格,内含要转换成的目的代码
表格首地址存放于BX,AL存放相对表格首地址的位移量
换码指令执行后:
将AL寄存器的内容转换为目的代码

查表法,实现一位16进制数转换为ASCII码显示

assume cs:codesg, ds:datasg

datasg segment
        ASCII 	db 30h,31h,32h,33h,34h,35h
	       	 	db 36h,37h,38h,39h	   ;0~9的ASCII码
	        	db 41h,42h,43h,44h,45h,46h ;A~F的ASCII码
        hex     db 09h                     ;任意设定了一个待转换的一位16进制数,这里以'0f'为例
datasg ends

codesg segment
start:
        mov ax, datasg
        mov ds, ax

        mov bx, offset ASCII ;bx存储标号ASCII的偏移地址(将其作为基准值)
        mov al, hex          ;将待转换的16进制数放到低位寄存器
        and al, 0fh          ;按位与,对8位的前4位清0(因为实验只要求输出后4位)
       	
        xlat                 ;换码:al<- DS:[BX+AL] 基准值(ASCII的offset)+位移量(待转换)
       
        mov dl, al           ;入口参数:dl<-al        
        mov ah, 2            ;02号DOS功能调用
        int 21h              ;显示一个ASCII码字符

        mov ah, 4ch
        int 21h
codesg ends
end start
posted @ 2020-12-21 00:15  hunxuewangzi  阅读(114)  评论(0编辑  收藏  举报