《汇编语言第三版》王爽学习历程——课程设计一

课程设计一

新人自己分析的,希望大神给予意见~!

任务:
将实验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'
  • 4
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值