|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
assume cs:code,ds:data
data segment
dw 123,12666,1,8,3,38,9988,0
db 10 dup (0)
data ends
code segment
start:
mov bx,data
mov ds,bx
mov si,0 ;ds:si指向data首地址
mov bp,0
s2:mov ax,[si] ;第一个数123给AX......
mov cx,ax
jcxz ok1
call dtoc1
mov dh,8
mov dl,3
mov cl,2
call show_str
ok1:mov ax,4c00h
int 21h
dtoc1:push ax
push bx
push cx
push bp
push dx
push si
push di
mov di,0
d10: mov dx,0 ;设置被除数高位为0
mov bx,10 ;除数为10
div bx
add dx,30h ;ax/10的余数+30h,转为字符
push dx ;字符入栈
inc di ;记录字符个数
mov cx,ax
jcxz d11 ;当ax/10的商=0时,转到d11执行
jmp d10
d11: mov cx,di
d12: pop dx ;的字符出栈
mov [bp].10h,dl
inc bp ;ds:bp指向下一单元
loop d12
mov dl,0
mov [bp].10h,dl ;设置结尾符0
pop di
pop si
pop dx
pop bp
pop cx
pop bx
pop ax
ret
show_str:mov ax,0b800h
mov es,ax
mov ax,160
mul dh
mov bx,ax ;bx=160*dh
mov ax,2
mul dl ;ax=dl*2
add bx,ax ;mov bx,(160*dh+dl*2)设置es:bx指向显存首地址
mov al,cl ;把颜色cl赋值al
mov cl,0
show0: mov ch,[bp].10h
jcxz show1 ;(ds:si)=0时,转到show1执行
mov es:[bx+di],ch
mov es:[bx+di+1],al
inc bp
add di,2
jmp show0
show1:add si,2
jmp short s2
code ends
end start
|
|