将16进制数转化为10进制并在屏幕上显示出来

;将16进制数转化为10进制并在屏幕上显示出来assume cs:code,ds:datadata segment db 10 dup (0)data endscode segmentstart: mov ax, 12666 mov bx, data mov ds, bx mov si, 0 ;ds:si指向字符串的首地址 call dtoc...
摘要由CSDN通过智能技术生成
;将16进制数转化为10进制并在屏幕上显示出来
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			;ds:si指向字符串的首地址
		
		call dtoc			;dtoc子程序实现将word型整数转化为字符串并存储
		
		mov dh, 8			;第8行
		mov dl, 3			;第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表示十进制
		mov dx, 0			;16位除法,ax存放商,dx存放余数
		
		div cx				;除以十
		mov cx, ax			;得到的商赋值给cx,这样才能通过jcxz判断何时结束
		
		jcxz s2				;当商为0则跳到s2
		
		add dx, 30H			;将余数加上30H后得到相应的ASCII码
		push dx
		
		inc bx
		
		jmp short s1
		
s2:		add dx, 30H			;当商为0的时候,余数为个位
		push dx
		
		inc bx				;再进行一次栈操作(补充当”商为零而余数不为零“时的情况)
		
		mov cx, bx			;总共有bx位进栈了,所以循环次数为bx
		mov si, 0
		
s3:		pop ax				;s3实现将栈中的数据依次出栈放到指定内存中

		mov [si], al
		inc si
		
		loop s3
		
okay:	pop bx
		pop si
  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

X-jazz

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

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

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

打赏作者

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

抵扣说明:

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

余额充值