当前位置: 代码迷 >> 汇编语言 >> 们,小女子确实不懂求解
  详细解决方案

们,小女子确实不懂求解

热度:9474   发布时间:2013-02-26 00:00:00.0
大虾们,小女子确实不懂求解
编写程序:把一个不大于10000的数值转换为ASCLL字符串(如数值1234转换为字符串‘1234’);
  假设数据段定义如下:
  Data segment
  Tab10p dw 1000, 100, 10, 1
  Str db 4 dup(‘’) ;存放输出字符串
  Num dw 1234 ;存放输入的数值
  data ends


------解决方案--------------------------------------------------------
+30h 即可转换,如果不是十六进制的话
------解决方案--------------------------------------------------------
转换成十进制表示的字符串吗?
说一下程序思路吧,懒得写程序了,以前写过代码.

把一个数值转换成十进制表示的字符串:

过程是: 目标数值整除10,得到余数,暂时保存,把商继续整除10,取得余数,直到商为0,运算结束. 把所有的余数按倒序排列起来,每个余数分别+30H,排列起来就是目标数值了.

假设 12 ,举个简单的例子,容易理解.
12/10 ( 12 整除 10 ) ,得到商1 余数2 ,把余数2 暂时保存起来,可以放到栈中.继续把商 1 整除 10,直到商为0,除法运算结束. 1/10 得到商0 ,余数 1 ,一共进行了两次除法运算.这样就得到了两个余数. 把所有余数分别+30H就能得到ASCII码,注意要把余数倒过来. 余数1+30H,得到31H 余数2+30H得到32H. 得到的目标数值就是 3132H
  相关解决方案