王爽汇编语言 实验10-数值显示

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
		call show_str
        mov ax,4c00h
        int 21h
;功能:将word型数据转变为表示十进制数的字符串,字符串以0为结尾符。
;参数:(ax)=word型数据,ds:si 指向字符串的首地址。
;返回:无。
;应用举例:编程,将数据12666以十进制的形式在屏幕的8行3列,用绿色显示出来。在显示时我们调用本次实验中的第一个子程序 show_str。
dtoc:	push dx
		push si
		push cx
		push bx
		push di				;保存主程序中的寄存器数据
		mov bx,10			;因为商1266>256,所以用32位被除数的除法
dtoc_s:	sub dx,dx			;将word型数据转变为表示十进制数的字符串,求余出来是倒置的,所以用栈转正。
		div bx
		mov cl,dl
		add cl,30h
		push cx				;压栈只能用16位
		inc di				;用来记录压入栈的数量,也就是数值的位数,比如12666有五位,di就等于5
		mov cx,ax
		inc cx
		loop dtoc_s
		mov cx,di
dtoc_s1:pop ax
		mov [si],al
		inc si
		loop dtoc_s1
		pop di
		pop bx
		pop cx
		pop si
		pop dx
		ret
		
;子程序show_str具体过程看实验10显示字符串代码	
show_str:	push dx
			push ax
			push es
			push bx
			push si
			push cx
			mov cl,dh
			mov ch,0
			mov ax,0
			jcxz a
		s:	add ax,0a0h
			loop s
		a:	mov cl,dl
			jcxz a1	
		s0: add ax,2
			loop s0
		a1:	mov bx,ax
			mov ax,0b800h
			mov es,ax
			pop ax
	show:	mov cl,[si]
			jcxz ok
			mov es:[bx+1],al
			mov es:[bx],cl
			inc si
			add bx,2
			jmp short show
		ok: push ax
			pop cx
			pop si
			pop bx
			pop es
			pop ax
			pop dx
			ret
code ends
end start

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

脸是真的白

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值