子函数描述
名称:dtoc
功能:将word型数据转变为表示十进制数的字符串,字符串以0为结尾符。
参数:(ax)=word型数据
ds:si指向字符串的首地址
返回:无
应用举例:编程,将数据12666以十进制的形式在屏幕的8行3列,用绿色显示出来。在显示时我们调用本次试验中的第一个子程序show_str
图片附件: 游客没有浏览图片的权限,请
登录 或
注册
程序代码:
assume cs:code,ds:data
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
mov ax,4c00h
int 21h
dtoc:
push si
push dx
push cx
push bx
push ax
s: mov dx,0;循环s用于得到所求数字每个字符,但是顺序与实际显示的相反
mov cx,10
div cx
add dl,30h
mov [si],dl
inc si
mov cx,ax
inc cx
loop s
dec si
mov bx,0
go_on: mov al,[bx];循环go_on用于调整字符的顺序
mov cl,[si]
mov [bx],cl
mov [si],al
dec si
inc bx
cmp si,bx
ja go_on
over: pop ax
pop bx
pop cx
pop dx
pop si
ret
show_str:
push ax
mov ax,0B800h
mov es,ax
call clean_screen
mov ax,0
mov al,dh
mov dh,0a0h
mul dh
mov di,ax
xor ax,ax
mov al,dl
add al,dl
add di,ax
begin: mov al,0
sub al,[si]
jz return
mov al,[si]
mov es:[di],al
mov es:[di+1],cl
inc si
add di,2
jmp begin
return: pop ax
ret
clean_screen:
push ax;此子函数用于清空屏幕
push es
push si
push cx
mov ax,0b800h
mov es,ax
mov si,0
mov cx,2000
be: mov ax,0002h
mov es:[si],ax
add si,2
loop be
pop cx
pop si
pop es
pop ax
ret
code ends
end start