在屏幕上显示123,12666,1,8,3,38,9988,0
assume cs:code,ds:datadata 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,;第一个数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 .10h,dl
inc bp ;ds:bp指向下一单元
loop d12
mov dl,0
mov .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,.10h
jcxz show1 ;(ds:si)=0时,转到show1执行
mov es:,ch
mov es:,al
inc bp
add di,2
jmp show0
show1:add si,2
jmp short s2
code ends
end start
页:
[1]