欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

将ASCⅡ码表示的十进制数转换为二进制数

程序员文章站 2022-07-15 09:28:46
...
			.model small
			.data
	asc		db	32h,33h,37h,39h,36h
			.code
	start:
			mov		ax,@data;数据段
			mov		ds,ax
		
			mov		si,offset asc;取数据首地址,存于si寄存器
			mov 	cx,0004h;循环四次
			mov 	bx,000ah;代表十进制10
			
			mov 	ah,0;ah清零,避免影响ax的值
			mov 	al,[si];第一个元素值加入到al,所以cx=4
			sub		al,30h;将ascⅡ码转换为真值
			
	next1:	mul	 	bx;al乘以bx存于ax中
			inc 	si;+1
			mov 	dl,[si]
			mov 	dh,0
			sub 	dx,30h;dx的真值
			add 	ax,dx;将ax与dx相加
			dec 	cx;-1
			jnz 	next1;dec和现在这句可以和为loop next1
			
			mov 	cl,16;计数器,逻辑循环移位16次即可
			mov 	bx,ax;将得到的十进制数存到bx中
	next2:
			rol 	bx,1;逻辑循环
			mov 	dl,bl;取低八位
			and 	dl,01h;确定最后一位是0还是1
			add 	dl,30h;将dl按asc码输出
			mov 	ah,2h;输出一个字符
			int 	21h
			dec 	cl
			jnz 	next2;这两句也可以替换为loop next2
			
			mov 	ax,4c00h
			int 	21h
		
			end	start
	
		
		
	

运行环境为dosbox,原创不易,大家多多点赞。

相关标签: 汇编