无我

让内心永远燃烧着伟大的光明的精神之火!
灵活的思考,严谨的实现
豪迈的气魄、顽强的意志和周全的思考

王爽《汇编语言第二版》第10章 课程设计1

本章还有一个实验10 编写子程序。但是本课程设计包括了写的子程序的所有内容,在代码中也包含所有写的子程序的代码,所以直接看本课程设计的代码就可以了。

在前面的学习中,有一个实验是将poweridea公司的数据按格式写到一个table段中,而本课程设计是要求就数据写到显存以显示在屏幕上,所以我们可以在以前的程序基础上修改,比如可以保留以前的程序,先写到table表,然后从table表读到显存。不过我这里的实现是去掉这些不必要的消耗,也删掉了table表,使程序更高效。另外,在code段里面还有几个子程序,代码的关键部分也都做了注释,实现如下:

PowerideaShow

运行结果如下:

             

 

总结:

1、程序实现中基本都用到了栈,主要用于暂存寄存器数据。不过在子程序dtoc和ddtoc中,我还用栈存放参数%10的值,因为形成字符串时需要逆序写到内存。

2、在dtoc和ddtoc中,为了区分保存的寄存器数据和十进制数的ascii值,特意往栈中压入一个0,作为“桩”。

3、主程序中在循环跳转的loop语句被注释掉:“;loop show ;报错:jump destination too far ,所以自己手动判断cx来跳转。”,原因正如说明,偏移超过了一个字节,所以我自己修改判断cx而利用jmp(jmp near)来实现跳转。因为所有有条件跳转都是短转移,是不是把循环中间的一些内容也写到子程序来减少偏移更好?

4、对显示时的起始行和列偏移的数据,我都统一放在数据段中,可以很方便的修改来查看效果。

posted on 2012-06-04 10:20 Tim 阅读(984) 评论(0)  编辑 收藏 引用 所属分类: 汇编语言


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理


<2012年6月>
272829303112
3456789
10111213141516
17181920212223
24252627282930
1234567

导航

统计

公告

本博客原创文章,欢迎转载和交流。不过请注明以下信息:
作者:TimWu
邮箱:timfly@yeah.net
来源:www.cppblog.com/Tim
感谢您对我的支持!

留言簿(9)

随笔分类(173)

IT

Life

搜索

积分与排名

最新随笔

最新评论

阅读排行榜