实验10 编写子程序 3.数值显示
Posted doctorx
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了实验10 编写子程序 3.数值显示相关的知识,希望对你有一定的参考价值。
assume cs:code,ds:data
data segment
db 10 dup (0) ;用来存放转换好的字符或数字
data ends
code segment
start: mov ax,12666
mov bx,data ;ds:si指向字符串的首地址,首地址为0
mov ds,bx
mov si,0
call dtoc ;dtoc子程序现将word型整数转化为ASCII码字符串并存储
mov dh,8 ;初始化打印的位置
mov dl,3
mov cl,0cah
call show_str ;开始打印字符串
mov ax,4c00h
int 21h
;数值显示的子程序定义
dtoc: push dx
push cx
push ax
push si
push bx
mov bx,0 ;bx在子程序中用来存放位数,用栈来临时存放修改后的字符
s1: mov cx,10d ;d表示十进制,cx做被除数
mov dx,0 ;dx存放余数
div cx
mov cx,ax
jcxz s2
add dx,30h
push dx
inc bx
jmp short s1
s2: add dx,30h
push dx
inc bx
mov cx,bx
mov si,0
s3: pop ax
mov [si],al
inc si
loop s3
okay: pop bx
pop si
pop ax
pop cx
pop dx
ret
show_str:
push bx
push cx
push si
mov al,0a0h
dec dh
mul dh
mov bx,ax
mov al,2
mul dl
sub ax,2
add bx,ax
mov ax,0b800h
mov es,ax
mov di,0
mov al,cl
mov ch,0
s: mov cl,ds:[si]
jcxz ok
mov es:[bx+di],cl
mov es:[bx+di+1],al
inc si
add di,2
jmp short s
ok: pop si
pop ax
pop bx
ret
code ends
end start
以上是关于实验10 编写子程序 3.数值显示的主要内容,如果未能解决你的问题,请参考以下文章