汇编语言 实验10.3 数值显示
写给自己的一些题外话:这个题目做了两天。这几天状态一直不太好,书都看不进去,题也看不进去。。
子程序描述
名称:dtoc
功能:将word型数据转变为表示十进制形式的字符串,字符串以0位结尾符
参数:(ax)=word型数据
ds:si指向字符串的首地址
返回:无
应用举例:编程,将数据12666以十进制的形式在屏幕的8行3列,用绿色显示出来。在显示时我们调用本次实验中的第一个子程序show_str
程序
assume cs:code
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
mov si,0
call show_str
mov ax,4c00h
int 21h
dtoc:
mov cx,ax
jcxz reverse
mov bx,10
div bx
mov cx,dx
add cx,30h
push cx
mov dx,0;使下一次循环的ax的值为上一次结果的商
add si,2
loop dtoc
reverse:
mov ax,si
mov bx,2
div bx
mov cx,ax;ax是循环次数,即显示数字的位数
jcxz good
mov si,0
reverse1:
pop ax
mov ds:[si],ax
add si,2
loop reverse1
good: ret
show_str:
push dx
push cx
mov ax,0b800h
mov es,ax
mov al,160;注意!!
sub dh,1
mul dh
mov bx,ax
mov al,2
mul dl
add bx,ax;bx存放的是显存地址
mov dh,cl
s: mov ch,0
mov cl,ds:[si]
jcxz ok
mov dl,cl
mov es:[bx],dx
add si,2
add bx,2
jmp short s
ok: pop cx
pop dx
ret
code ends
end start