王爽汇编语言,直接定址表的例题编程出错,求大神纠错

2025-05-20 21:17:52
推荐回答(1个)
回答(1):

;把al保存的数值以16进制字符的形式显示在屏幕中央
assume cs:code
code segment

start:
mov al, 0abh ;设置参数
call showbyte
mov ah, 0
int 16h
mov ax, 4c00h
int 21h

showbyte:
jmp short show
table db '0123456789ABCDEF' ;用table[bx]来访问字符表

show:
push bx
push cx
push es
mov ah, al
mov cl, 4
shr ah, cl
and al, 00001111b

mov bl, ah ;通过用table[bx]查表
mov bh, 0 ;把ah里的数值转换成对应的ASCII码
mov ah, table[bx]
mov bx, 0b800h
mov es, bx
mov es:[160 * 12 + 40 * 2], AH ;改
mov bl, al
mov BH, 0 ;改
mov ah, table[bx]
mov es:[160 * 12 + 41 * 2], AH ;改
pop es
pop cx
pop bx
ret
code ends
end start

共改了三处。