满意答案
deuej
2013.05.31
采纳率:43% 等级:12
已帮助:9924人
data segment
data ends
stack segment
db256 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
14分享举报