data segment
data ends
stack segment
db 256 dup(?)
stack ends
code segment
assume cs:code, ds:data, ss:stack
start:
mov ax, data
mov ds, ax
mov ax, stack
mov ss, ax
mov al, 0c5h
call disp_al
mov al, 065h
call disp_al
mov ah, 04ch
int 21h
;disp_al子程序将寄存器AL中的数值以十六进制显示出来
disp_al:
mov dh, al
mov bx, 2 ;bx用于循环,一个字节最多可以显示成两个字符,所以循环次数是2次
mov cl, 4 ;首先显示高4位,在下次循环进再显示低4位
shr al, cl
again:
and al, 0fh
cmp al, 9
ja hex
add al, '0' ;如果小于9,加上字符'0'将数字转换字符
jmp disp
hex:
sub al, 10 ;如果大于9,先减去10,再加上字符'A',就可以将数字转换成相应的'A'~'F'
add al, 'A'
disp:;利用中断显示字符
mov dl, al
mov ah, 02h
int 21h
mov al, dh
dec bx
test bx, bx
jnz again
ret
code ends
end start
温馨提示:答案为网友推荐,仅供参考