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

我的博客

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

[2010-07-12 10:42] 推荐博文 模仿黑客帝国屏保

图片载入中
新学了一个产生随机数的指令, 拿来做个练习~~
------------------------------------------------------
  1 ;rand.asm
  2 assume  cs:code
  3 code    segment
  4 start:
  5         call clr
  6         mov cx,100
  7 main:   call show
  8         in al,60h    ;如果有按键Q读入
  9         cmp al,10h   ;则退出程序
 10         jz over      ;
 11         jmp main
 12         loop main
 13
 14 over:   mov ah,4ch
 15         int 21h
 16 ;
 17 show:   push ax
 18         push bx
 19         push cx
 20         push dx
 21
 22         mov bl,160
 23         in al,40h
 24         and ax,0ffh
 25         div bl
 26         mov dl,ah
 27
 28         mov bl,25
 29         in al,40h
 30         and ax,0ffh
 31         div bl
 32         mov dh,ah
 33
 34         mov ah,2
 35         mov bh,0
 36         mov bl,02
 37         int 10h
 38
 39 s:      mov ah,2
 40         int 10h
 41         cmp dh,50
 42         je ok
 43         in al,40h
 44         and al,0fh
 45         cmp al,9
 46         ja sa
 47         add al,30h
 48         jmp sb
 49 sa:     add al,37h
 50 sb:     mov ah,9
 51         mov cx,1
 52         int 10h
 53         call delay
 54         inc dh
 55         jmp s
 56 ok:
 57         pop dx
 58         pop cx
 59         pop bx
 60         pop ax
 61         ret
 62 ;
 63 clr:    push bx
 64         push cx
 65         push es
 66         mov bx,0b800h
 67         mov es,bx
 68         mov bx,0
 69         mov cx,4000
 70 c1:     mov byte ptr es:[bx],20h
 71         add bx,2
 72         loop c1
 73         pop es
 74         pop cx
 75         pop bx
 76         ret
 77 ;
 78 delay:  push ax
 79         push dx
 80         mov dx,50h
 81         mov ax,0
 82 d1:     sub ax,1
 83         sbb dx,0
 84         cmp ax,0
 85         jne d1
 86         cmp dx,0
 87         jne d1
 88         pop dx
 89         pop ax
 90         ret
 91 ;
 92 code    ends
 93         end     start
------------------------------------------------------
这个版本的加入了退出, 否则, 他就是一死循环。
利用in al,60H,检测按键。
评论次数(48)  |  浏览次数(43645)  |  类型(程序与练习) |  收藏此文  | 

[  int20   发表于  2010-08-07 18:38  ]

朋友,你这个程序在前面加上数字标号了,要在什么编译器下可以编译通过啊.

[  masmaster   发表于  2010-08-07 20:12  ]

行号是编辑器里自带的。不是作为程序的一部分。

[  812580210   发表于  2010-08-10 22:19  ]

我是一小白,请问你能帮我学习电脑知识吗?求你了!

[  v39lfy   发表于  2010-10-10 19:47  ]

哥们,整个程序就一段注释啊。。。

[  游客   发表于  2010-10-11 11:41  ]

没有注释的代码,不看也罢

[  three-stone   发表于  2010-10-21 16:06  ]

确实 没有注释,看的很不爽。

[  游客   发表于  2010-10-26 21:20  ]

代码对不对啊 编译不了啊

[  20085617   发表于  2010-11-01 15:57  ]

交代码的时候多写写注释嘛,不然看起来很麻烦的

[  游客   发表于  2010-11-04 12:13  ]

代码可以。。不过是DOS的

[  znxllyuan   发表于  2010-12-15 19:50  ]

圣凡哥 我来捧你场~

[  znxllyuan   发表于  2010-12-15 19:54  ]

其实,能懂别人的程序要比写还难,所以,注释自己添,反复的看,会看明白的。别人嚼烂的东西,不吃也罢。国人什么时候能学会感恩呢?技不如人,都是有原因的。谢谢哥哥分享, 我拿回去自己研究~

[  znxllyuan   发表于  2010-12-26 16:18  ]

圣凡哥 第41行是什么意思?
   总共25行不是么?

[  lili001987   发表于  2010-12-30 13:33  ]

[  znxllyuan   发表于  2010-12-15 19:54  ] 
其实,能懂别人的程序要比写还难,所以,注释自己添,反复的看,会看明白的。别人嚼烂的东西,不吃也罢。国人什么时候能学会感恩呢?技不如人,都是有原因的。谢谢哥哥分享, 我拿回去自己研究!!
经典!!!!11

[  jueqingsizhe66   发表于  2011-01-19 05:34  ]

en 挺好的 能够运行

[  kaiixinghb   发表于  2011-03-02 15:44  ]

en 可以运行。不能运行的深刻反省。

[  kenkenshin   发表于  2011-04-14 10:57  ]

out of memory?

[  kim   发表于  2011-04-26 08:57  ]

这是学到第几章了,这么厉害。

[  游客   发表于  2011-05-29 16:54  ]

?

[  游客   发表于  2011-06-04 21:58  ]

谢谢!

[  cacheer   发表于  2011-06-08 19:06  ]

貌似是学完了吧

[  baishipojie   发表于  2011-06-17 10:25  ]

目前还不知道咋玩!

[  tashiweide   发表于  2011-06-19 20:57  ]

znxllyuan说的对,谢谢凡哥啊

[  游客   发表于  2011-08-27 07:31  ]

俺也编译不通过,我用的是是masm编译器,请问你用的什么编译器

[  游客   发表于  2011-10-21 22:18  ]

编译过不了啊。。。

[  a7621   发表于  2011-11-19 14:17  ]

out of memory的原因是一下代码 
;  in al,60h    ;如果有按键Q读入 
          ; cmp al,10h   ;则退出程序 
          ;jz over      ; 
我把它注释了然后神奇的事发生了

[  a7621   发表于  2011-11-19 14:27  ]

好神奇的随机数,学习了

[  zmqc   发表于  2011-11-24 22:11  ]

呵呵,不错,不错。我也刚刚好看到这,正好copy回去研究研究。谢了!!!!

[  chinatree   发表于  2011-11-25 05:13  ]

out of memory的原因是因为注释是后来加上去的,用的是中文分号,编译器不能识别。
至于数字行号的问题,应该是Tasm一类集成开发环境,Masm好像不支持。可以手动去掉或者写个bat。

[  zhouyoujun   发表于  2012-01-27 15:42  ]

程序运行后,没有整屏移动的感觉,不够酷,不过也不错了,呵呵

[  hdb   发表于  2012-02-05 22:25  ]

求请教,我编译编译通过了,但连接的时候出错了,
LINK : error LNK2001: unresolved external symbol _start
a.exe : fatal error LNK1120: 1 unresolved externals
是什么意思?

[  chinatree   发表于  2012-02-06 01:51  ]

入口地址好像有问题,对于这个程序,把最后一行的start去掉也没事。

[  xiamingchong   发表于  2012-03-06 16:18  ]

我以为是数码雨那种呢。不过楼主已经很厉害了

[  游客   发表于  2012-06-22 14:25  ]

主程序:
    jmp main
    loop main
去掉任何一句都可以啊,楼主什么逻辑?

[  snfhvkivg   发表于  2012-10-02 00:50  ]

初学者:不懂,希望有多点注释带着学习学习!

[  jlzh155   发表于  2012-11-01 09:06  ]

学习了,很好

[  changxiliu   发表于  2013-01-09 21:32  ]

8-10行注释不是“;”,应该是“;”。

[  zyx1105   发表于  2013-01-24 17:33  ]

编译通过了,只要用中文的;换为英文;就可以编译通过,谢谢楼主了,请问楼主学了多长时间汇编,看来把本书都看熟透了???

[  314065083   发表于  2013-05-14 21:43  ]

请问call clr 
和clr标号的子程序有什么用,那部分完全去掉都是可以运行的

[  h_killer   发表于  2013-09-07 18:38  ]

编译的时候怎么提示:out of memory 啊

[  h_killer   发表于  2013-09-07 18:40  ]

解决了!

[  游客   发表于  2013-09-22 15:59  ]

[  dgkepu   发表于  2013-12-07 20:52  ]

初学者:不懂,希望有多点注释带着学习学习!

[  游客   发表于  2013-12-17 19:43  ]

很无语,初学者就多看书,不要动不动要别人注释,基础打好了,再自己注释,这样比别人帮你注释好得多

[  游客   发表于  2014-04-07 18:37  ]

老实说,看着真心累呀!

[  游客   发表于  2014-04-12 10:33  ]

勿庸置疑,注释是好习惯。与人方便自己方便。

[  游客   发表于  2020-04-19 02:53  ]

如果想快一些 就改下面这里 dx值改成1H
delay:  push ax 
            push dx 
            mov dx,1h

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