- [kanwangxue] 如果是文字的,不是特别好啊,体力活,如果文字还加点动画,那就必须顶了。 01/15 01:10
- [kanwangxue] 必须顶啊。 01/15 00:54
- [ltoiii] 既然是实现loop功能,是否要考虑s和se标号? mov bx,offset s - offset 12/09 12:09
- [xiaoyao2012] 正确 11/01 15:33
- [xuer2016] 又找到2条被我忽视的地方: 1.PUSH 和 POP 针对字单元 2.POP 不能是CS 10/26 10:57
- [xuer2016] 学习了 我书写不规范,16进制字母前不加0,后面不加H,以后要注意了。。。 10/26 10:51
- [xuer2016] 来老师这学习下 10/26 10:31
- [youthangel] 不妙,CPU的利用率一下子就上去了。还好我的处理器不是太弱,35%左右的利用率。建议博主在修改一下 10/20 08:23
- [fpamc] 在我心里她就是我的女神。 10/02 08:58
- [newpeople] 你女朋友用得了简直就是一个女神…… 10/01 08:10
- [99998888] 请您指点一下如何找到会ASSEMBLER 语言的翻译,翻译成中文或英文。我的QQ ; 9097815 07/25 09:56
- [jeremy] 我觉得你学习的挺好,可以加你扣扣吗?我的469614823 08/07 14:46
- [zhangbo0805] 哈哈, 你好呀!很希望认识你呀!我发现你学习的积极性很高!正想向您学习呢! 07/31 23:31
- [tomato] 知道了,排得还挺满。 05/29 16:35
- [tomato] 现在学习情况怎么样?在做课设二还是什么? 05/29 10:41
- [tomato] 你的留言收到了。 05/05 23:51
- [fpamc] 开始学习c咯! 05/03 21:40
- [fpamc] 居然不能发博客了……! 04/22 21:03
- [tomato] 你相册中的游戏界面我看过了,非常好,界面很漂亮,很有创造力。博主,很有潜力。加油,一定能把这个游戏做 04/20 23:46
- [fpamc] 忙了半个月,不在家,没时间学习汇编。 但是在途中想到了一个有史以来最难的程序。对于刚学完9章的我。 04/13 20:56
[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
[ 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老师早些休息。