课程设计一
新人自己分析的,希望大神给予意见~!
任务:
将实验7中的Power idea公司的数据按照下图显示出来
需要重新编写一个子程序
编写一个新的数据到字符串转化的子程序,完成dword型数据到字符串的转化,说明如下:
名称:dtoc_dword(这里我自己取的名称)
功能:将dword型数转变为表示十进制的字符串,字符串以0为结尾符。
参数:(ax)=dword型数据的低16位,(dx)=dword型数据的高16位,ds:si指向字符串的首地址
返回:无
注:在这个子程序中要注意除法溢出的问题,可以用我们在试验10中设计的子程序divdw来解决。
分析
做一个简单的比喻:
我们是搬家公司的,要为4个人群搬家,从原来的数据段,搬到新家——显存段,而我们的工具是一辆搬家车——一个8各字节的空的字符串,这四类人群是:
1、年份:这类人群特点是,打包好了自己的行李,按时在家等我们去接他们去新的住所,而且上车就走。即,无需进行计算,也无需进行数值和ascii码之间的转换,从数据段复制到字符串然后写入显存相应位置就行。
2、年收入:这类人群的特点是,都是美女,虽然按时在家等我们去接,但是很懒,不打包行李而且行李又多,所以我们必须先打包行李再上车送她们去新的住所。即,需要进行数值和ascii码的转化,并且数值较大,必须写一个新的子程序,题干中有设计,不赘述。然后才可以从数据段复制到字符串后写入显存相应位置。
3、人数:这类人群和第二类人群很像,不过他们行李比较少,可以看做是比较懒的男孩子,行李不多。即,虽然需要转化ascii码,但是由于数值都比较小,所以子程序3完全可以胜任。
4、人均年收入:这类人群属于比较坑的,不仅行李不打包,而且人还不按时出现,需要我们去找到以后再帮他们打包行李,然后才能上车。即:需要计算后,然后进行数值和ascii码之间的转换,再存入字符串中后写入显存。
基本思路就是如此,现成的子程序有三个,由于刚学汇编,子程序写的不是很好,能不入栈的尽量不入,导致后寄存器冲突严重,调试了n次才可以正常运行,友情提示,尽量保存好主程序中的寄存器。
我是一列一列入显存的,还有我个格式是,列与列之间空出10个字符。
虽然我这样分析感觉不专业,但是没办法,刚学,希望用一个比较情景式的感觉来分析问题,可能比较好理解。
下面是我的代码,请大神指点:
assume cs:codesg
datasg segment
db '1975', '1976', '1977', '1978', '1979', '1980'
db '1981', '1982', '1983', '1984', '1985', '1986'
db '1987', '1988', '1989', '1990', '1991', '1992'
db '1993', '1994'