data segment
db 10 dup (0)
data ends
code segment
start:
mov ax,12666
mov bx,data
mov ds,bx
mov si,0
call dtoc
mov dh,8
mov dl,3
mov cl,2
call show_str
ok: mov ax,4c00h
int 21h
dtoc:mov bx,10
toc1:div bx
add dx,30h
push dx
mov dx,0
inc si
mov cx,ax
jcxz r
jmp short toc1 ;此循环求出12666各位对应的ASCII码,压入栈中,商为0时跳走,用SI计次
r:mov cx,si ;把计次SI数据传给CX, 下面出栈用
mov bx,0
p:pop dx
mov ds:,dx
inc bx
loop p ;此循环出栈,用上面的SI,顺序出栈12666ASCII码,复制到data段中
ret
show_str: ;子程序,dh为行数,dl为列数,cl为属性,ds从第0个字节开始,遇0结束!
mov ax,0B800H
mov es,ax ;给显示缓冲区段地址
mov si,0 ;si为字符定位变量
sub dh,1
mov al,0a0h
mul dh ;算出行偏移
mov dh,0
sub dl,1
add dx,dx ;算列偏移
add dx,ax ;算出总偏移
mov di,dx
mov ah,cl
s: mov al,
mov es:,ax
inc si
add di,2
mov cl,al
jcxz damn ;判断数据是否为0,为0结束循环!
jmp short s
damn: ret
code ends
end start
页:
[1]