汇编学习
换码指令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
不摆烂了,写题