对于熟悉C语言的大家来说说,itoa这个函数大家一定不会陌生。itoa是广泛应用的非标准C语言扩展函数,它的功能是:将任意类型的数字转换为字符串。
为了更加清楚地让我们知道,如何使用汇编语言来实现这个函数,下面先以用C语言自己实现一个itoa函数,再来说明使用汇编语言实现方法及思想。因为无论是用C语言还是使用汇编语言,其实现思想和方法都是一样的,只是描述的语言不同。但是我们都比较熟悉C语言,而对汇编语言并不是那么的熟悉,所以为了让我们更加好地理解这个函数的汇编语言实现,我借助C语言的力量来类比说明一下。
注:在本文中出现的数字,“xxx”表示数字对应的字符串,‘x'表示单个数字对应的字符,x表示数字。
一、为什么要把数字转化成字符串
在汇编语言中,数字是不能直接输出的,要想把数字输出,就要将其转换成字符串(即字符)的形式,然后再以输出字符的形式来输出字符串。这个就是我要用汇编实现这个函数的最初目的,就是输出数字。当然,把数字转化成字符串还有很的实际的用途。
二、C语言的实现版本
如何把一个数字转化成一个字符串,即数字转化成字符串的算法,在C语言中,相信大家都很熟悉。就是把数字一直除以10直到商为0,把余数加上‘0’的ASCII码,即可得到余数的ASCII码,即数字对应的字符。例如:数字123,转化成字符串,其字符产生的次序就为‘3’,‘2’,‘1’。最后,1除以10,商为0,余数为1。
可以看到生成的字符的顺序与真正的字符串的顺序是