主题:最简单的问题"数据显示"
Leslies2
[专家分:10] 发布于 2005-12-14 10:27:00
如果我已将16H送入AX
MOV AX,16H
如何能把AX中的数据在屏幕上显示出来?
回复列表 (共2个回复)
沙发
erping [专家分:3660] 发布于 2005-12-14 11:51:00
print proc ;提供多种进制的输出
;ax 存放要输出的数
;cx 存放进制形式 (2 <= 进制 <= 35)
cmp cx, 2
jl _error_
cmp cx, 35
ja _error_
push bx ;保存 bx
push dx ;...
sub sp, 16 ;16 (2 * 8)个字节的临时变量
mov bx, sp ;bx 指向变量地址
xor dx, dx
_loop:
cmp ax, 0
jne _next
cmp dx, 0
je _print
_next:
div cx
cmp dx, 9 ;比较余数是否大于 9
ja _than_nine
add dl, '0'
jmp _save_dl
_than_nine:
add dl, 'A' - 0AH ;大于 9 的数转换处理
_save_dl:
mov ss:[bx], dl
inc bx
cwd
jmp _loop
_print:
dec bx
_print_next:
cmp bx, sp
jl _end
mov dl, ss:[bx]
mov ah, 2
int 21H
dec bx
jmp _print_next
_error_:
xor ax, ax ;return false
ret
_end:
add sp, 16 ;恢复堆栈
pop dx
pop bx
mov ax, 1 ;return true
ret
print endp
板凳
Leslies2 [专家分:10] 发布于 2005-12-14 15:44:00
多谢高人指点,但我更想了解的是:INT 21H调用AH 2的时候,只能显示的是DL中的字符,这时候有没有办法将AX中的数据直接转换成字符输出.比如说:
MOV AX 31H
这时候有没有办法直接将31H显示出来
我来回复