彙編語言 實驗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