汇编网首页登录博客注册
fpamc的学习博客
博客首页博客互动【做检测题】论坛求助

我的博客

个人首页 |  我的文章 |  我的相册 |  我的好友 |  最新访客 |  文章收藏 |  论坛提问 |  友情链接 |  给我留言  
图片载入中
学习动态

[2012-04-15 21:56] 一个因为MY想到的程序(一)「自娱自乐」

图片载入中
我的知识峰值第九章。
此程序写出所用时间:大约10小时,包括调试,简化,颜色选择等。。。。
这个程序是我目前遇到的难度最大的程序,想法源于一个MY(魅友)的帖子,因有些朋友看不到帖子的效果,所以做了个直接出效果的这个。。

这个程序是我第一次加注释,可能有些问题。
希望各位同学和老师提出建议,共同探讨。。。

下面是这个程序的源码,效果图不用说了。。

assume cs:code,ds:data,ss:stack
data segment
db '9966999999966699999996699666699666999966699666699               '
db '9969999999996999999999699666699669966996699666699               '
db '9966999999999999999996699666699699666699699666699               '
db '9966669999999999999666669999966699666699699666699               '
db '9966666699999999966666666999666699666699699666699               '
db '9966666666999996666666666999666669966996699666699               '
db '9966666666699966666666666999666666999966669999996               '
db '6666666666669666666666666666666666666666666666666               '
data ends

stack segment
dw 8 dup (0)                  ;开辟栈段,暂时存储cx的值
stack ends

code segment
start:
mov ax,data
mov ds,ax                     ;设置数据段地址

mov ax,0b800h
mov es,ax                     ;设置显示存储段地址

mov ax,stack
mov ss,ax
mov sp,10h                    ;初始化栈空间

mov bx,0
mov si,0
mov cx,8                      ;行的循环次数
push cx                       ;暂存行的循环次数到栈
mov cx,64                     ;列的循环次数
s:
push cx                       ;暂存列的循环次数
mov cx,0ffc7h                 ;为了保证((cx)+39h=0)jcxz的跳转。也就是判断字符‘9’的思想

s0:
mov al,[bx]
mov ah,0
add cx,ax
jcxz colour                   ;判断字符‘9’,是则跳转,反之无视。
mov ah,01eh
mov es:[si].330h,ax           ;将字符和字符属性放入显存
inc bx
add si,2
jmp over                      ;越过colour段

colour:
mov ah,0ceh
mov es:[si].330h,ax
inc bx
add si,2                      ;此段是设置字符‘9’属性的

over:
pop cx
loop s                        ;如果,列循环数cx≠0,则转到标号处,开始设置下一个字符

pop cx                        ;行,循环数出栈
dec cx                        ;每次循环减少循环次数
jcxz over0                    ;当行循环数(cx)=0时,转移到'程序返回',结束程序
push cx                       ;暂存所剩行循环数到栈中

mov cx,64                     ;设置列循环数
sub si,128                    ;清除上一行列数
add si,0a0h                   ;指向下一行
loop s                        ;如果行循环数,cx≠0,则转移到s标号处,开始新的列循环

over0:
mov ax,4c00h
int 21h
code ends
end start
评论次数(14)  |  浏览次数(255)  |  类型(自娱自乐) |  收藏此文  | 

[  fpamc   发表于  2012-04-15 21:58  ]

欢迎各位同学提出建议和问题。谢谢。

[  tomato   发表于  2012-04-15 22:40  ]

这个结果图片挺漂亮,让人眼前一亮。

博主有创造力。

继续加油!期待博主再创作新的作品!编程其实可以包含很多的创造力!

[  fpamc   发表于  2012-04-15 22:46  ]

恩,呵呵,谢谢tomato一直以来的关注和指导。

[  tomato   发表于  2012-04-15 22:46  ]

博主有兴趣用汇编语言开发一个经典小游戏吗?

比如,俄罗斯方块,或者贪吃蛇之类的?不仅充满很多乐趣,还可以锻炼编程能力,获得成就感。

[  fpamc   发表于  2012-04-15 22:47  ]

对啦,有一个问题,为什么旁边会出现多余的蓝色?!
巧合之下两边多了装饰

[  tomato   发表于  2012-04-15 22:48  ]

汇编的基础相当重要!学好它一定会受益匪浅。

[  fpamc   发表于  2012-04-15 22:49  ]

想……
就是,对这个游戏没有思路……不知道以目前的前9章知识能不能写出来。

[  tomato   发表于  2012-04-15 22:50  ]

那你再认真看一遍你的代码啦!应该是颜色属性设置的问题。

[  fpamc   发表于  2012-04-15 22:50  ]

恩,一直注重基础……
所以,每隔一段时间就会复习……
或者……自娱自乐

[  fpamc   发表于  2012-04-15 22:52  ]

哦~
可能是,次数多了?!
我有时间再看看吧

[  tomato   发表于  2012-04-15 22:55  ]

你只要去做肯定能做出来。你可以先写一个需求分析出来,如果有什么技术问题可以问我。以目前的知识量来说可以绘制出界面出来,按键的问题需要学到后面键盘中断后才能解决。总之,只要这本书学完,肯定能做出来。

这个你可以跟chinatree交流一下,他做过。互相交流,互相学习。

[  fpamc   发表于  2012-04-15 22:59  ]

那个……需求分析是什么……
恩,我会努力的,
界面……正在想用什么做框框……

[  tomato   发表于  2012-04-15 23:06  ]

需求分析就是对一些完成的功能和如何实现进行分析,想好怎么实现了,再开始编程实现。

做吧,相信你能够做出来。

[  fpamc   发表于  2012-04-15 23:08  ]

恩,我研究研究。

tomato老师早些休息。

 
 请输入验证码  (提示:点击验证码输入框,以获取验证码