- [somniumchase] 大佬NB,不知道为什么,我在dosbox里面运行,那个笑脸显示在左上角,而且还卡住了 01/01 11:40
- [runxsystem] smaile.asm:2: error: parser: instruction expected 07/18 10:27
- [游客] 你说你妈呢 06/04 15:11
- [zkkpkk] 注意日期,很早以前的代码了,谁都一样,谁在第一个项目就写得漂亮的 05/11 11:56
- [qqqun238564439] 厉害! 04/10 10:54
- [游客] 二〇一五年六月七日 16:23:17 06/07 16:23
- [游客] 说句实话,代码写的非常垃圾。你缺乏基本的编程素养,不积跬步无以至千里,建议先把基础打扎实。 03/25 13:48
- [游客] www.aibiancheng.cn 爱编程 02/20 21:21
- [dreamsever] 大神,请问汇编语言可以编写或者调用窗口吗 12/19 19:19
- [dgkepu] 佩服佩服!!!谢谢分享! 12/06 06:57
- [qqqun238564439] 非常好 04/10 10:50
- [dreamsever] 求帮助,大神,请问汇编语言可以编写或者调用窗口吗,怎么实现,给点指导性的提示吧。 12/19 19:21
- [xiaofan086] 你好,本人初学汇编,请问汇编需要什么编译环境,即相应的软件等等,谢谢 01/03 15:02
- [hl458461178] 求帮助 如何让一个程序循环1000次 循环到255次后就与自己的思路叉开了 10/11 12:15
- [lizhengyong1217] 汇编学几回了,都是学着学着放弃了。由于立志做一名优秀的嵌入式编程人员,为了移植系统的需要,不得不,再 04/04 08:57
[2010-07-17 10:29] 在屏幕上显示笑脸,显示坐标依次递增(或递减),碰到屏幕则弹起
code segment
dec dh
dec dl
inc dh
inc dl ;预存指令
start: mov ax,cs
mov ds,ax
mov si,0
lea di,s1 ;使ds:si指向预存指令,ds:di指向目的地址
mov dx,0h ;光标起始坐标0,0
s:mov ah,2
mov bh,0
int 10h ;调用int 10h第2号中断,置光标
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
mov ah,0ah ;int 10h第0a号中断
mov al,2 ;显示笑脸
mov bh,0 ;第0页
mov cx,1 ;重复次数1
int 10h
call delay ;延迟显示
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
mov ah,0ah ;用int 10h 0a号中断清除笑脸
mov al,0
mov bh,0
int 10h
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
cmp dh,24 ;行号是否为24
jb L ;小于则转 L
mov ax,[si] ;等于则改s1处为自减
mov [di],ax
L2:cmp dl,79 ;列号是否为79
jb L1 ;小于则转 L1
mov ax,[si+2] ;等于,改si+2处为自减
mov [di+2],ax
jmp s1
L:cmp dh,0 ;行号是否为0
ja L2 ;大于0转L2
mov ax,[si+4] ;为0 ,改s1处为自加
mov [di],ax
jmp L2
L1:cmp dl,0 ;列号是否为0
ja s1 ;大于转 s1
mov ax,[si+6] ;等于改 s1+2处 自加
mov [di+2],ax
s1:inc dh
inc dl
jmp s
mov ax,4c00h
int 21h
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
delay:push ax
push dx
mov dx,2000h
mov ax,0
s3: sub ax,1
sbb dx,0
cmp ax,0
jne s3
cmp dx,0
jne s3
pop dx
pop ax
ret
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
code ends
end start
[ masmaster 发表于 2010-07-17 15:36 ]
在call delay后加入如下代码
in al,60H
cmp al,10H
jz over
在mov ax,4c00H前加入标号over
试一试吧
[ masmaster 发表于 2010-07-17 15:37 ]
意思就是读键盘端口, 如果有字符读到, 跟10H(Q键)比。
[ zhengcong3250 发表于 2010-07-18 22:39 ]
哈哈,谢谢,可以退出了,我也这么想的,可就是不知道加在那里,还有就是那部分条件跳转,有点晕,还是我自己画了个流程图才整好的,就这样也很费时啊,好像是每个跳转要有顺序一样
[ znxllyuan 发表于 2010-12-15 20:02 ]
根据圣凡哥的思想改完 很有意思呢、
assume cs:code
code segment
dec dh
dec dl
inc dh
inc dl ;预存指令
start: mov ax,cs
mov ds,ax
mov si,0
lea di,s1 ;使ds:si指向预存指令,ds:di指向目的地址
mov dx,0h ;光标起始坐标0,0
s:mov ah,2
mov bh,0
int 10h ;调用int 10h第2号中断,置光标
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
mov ah,0ah ;int 10h第0a号中断
mov al,2 ;显示笑脸
mov bh,0 ;第0页
mov cx,1 ;重复次数1
int 10h
call delay ;延迟显示
in al,60H
cmp al,10H
jz over
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
mov ah,0ah ;用int 10h 0a号中断清除笑脸
mov al,0
mov bh,0
int 10h
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
cmp dh,24 ;行号是否为24
jb L ;小于则转 L
mov ax,[si] ;等于则改s1处为自减
mov [di],ax
L2:cmp dl,79 ;列号是否为79
jb L1 ;小于则转 L1
mov ax,[si+2] ;等于,改si+2处为自减
mov [di+2],ax
jmp s1
L:cmp dh,0 ;行号是否为0
ja L2 ;大于0转L2
mov ax,[si+4] ;为0 ,改s1处为自加
mov [di],ax
jmp L2
L1:cmp dl,0 ;列号是否为0
ja s1 ;大于转 s1
mov ax,[si+6] ;等于改 s1+2处 自加
mov [di+2],ax
s1:inc dh
inc dl
jmp s
over: mov ax,4c00h
int 21h
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
delay:push ax
push dx
mov dx,500h
mov ax,0
s3: sub ax,1
sbb dx,0
cmp ax,0
jne s3
cmp dx,0
jne s3
pop dx
pop ax
ret
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
code ends
end start
[ powerlandy 发表于 2010-12-28 22:06 ]
运行过了,神奇
[ 游客 发表于 2011-05-29 16:47 ]
11
[ 游客 发表于 2011-06-02 22:58 ]
好像NASM不能汇编,
[ lfszyxd 发表于 2011-06-05 15:19 ]
这个可以把笑脸定义在变量中么
[ flf583 发表于 2011-08-01 21:52 ]
这个好啊 直接用masm5.0就可以编译了
[ 游客 发表于 2011-08-15 09:28 ]
强,学习中
[ liuxxpirate 发表于 2011-08-31 20:33 ]
刚学汇编呢, 程序在什么平台上运行呢。DOS 么 ,高手指指路啊。
[ chinatree 发表于 2011-09-01 01:19 ]
xp也可以。
[ wangjun126 发表于 2011-10-23 10:22 ]
嗯嗯 好好学习
[ flexman 发表于 2011-11-07 22:02 ]
用emu8086的表示不能程序正确运行。
[ yzl1079004146 发表于 2011-11-10 20:17 ]
新手,请多指点,谢谢
[ 游客 发表于 2011-11-22 08:52 ]
emu8086可以运行了。不过delay 那段貌似不能跳出循环。
[ 315198986 发表于 2011-11-22 22:18 ]
delay段s3的循环有问题
[ chinatree 发表于 2011-11-23 11:30 ]
楼上的别乱说,你先运行下拿出证据好吗?要看清楚,一个是sub另一个是sbb。区别大了去了。
[ 游客 发表于 2011-12-07 09:55 ]
masm5.0也说不能编译啊!!!请高手指点下!!!
error A2009:Symbol not defined:SL
[ sunnysong14 发表于 2011-12-07 09:57 ]
masm5.0也说不能编译啊!!!请高手指点下!!!
error A2009:Symbol not defined:SL
[ mywiil 发表于 2011-12-29 16:52 ]
没有SL,博主和5楼兄弟的代码都能编译OK,也正确运行。
我用masm5.0的,你不会是动了代码,把s1写成了sl吧?
[ dsk23d 发表于 2012-01-30 12:03 ]
那位大侠分析下S3的功能行吗,详细一些,好让我们这些莱鸟更深入了解一点.
[ chinatree 发表于 2012-01-30 12:38 ]
那个是延时函数,检测dx:ax啥时候为0就结束循环。不为0就ax减1,主要是sbb带借位减法,这样能把dx:ax当成1个整体。
[ dsk23d 发表于 2012-02-01 12:04 ]
谢谢回复,但延时有什么好处呢,是延时多少秒吗
[ chinatree 发表于 2012-02-01 12:49 ]
对,但是是延时多少毫秒。因为计算机速度很快,运行时会"一闪而过",延时的作用就是让我们能够看清楚。
[ 游客 发表于 2012-02-14 10:47 ]
谢谢楼主,到今天终于看明白了。
[ 游客 发表于 2012-03-28 06:22 ]
我才刚学的,照自己的思路也做了一个
大虾们帮忙加个按键返回(ESC)
assume cs:code
code segment
start:mov ax,0b800h ;显存第一页
mov ds,ax
mov ax,0 ;默认AX为0
mov si,1 ;si是行号1-25
mov di,1 ;di是列号1-80
c1:cmp si,1 ;si到1了说明该增加了,增加的信号是AH=0
jne c2
mov ah,0
c2:cmp si,25 ;si到了25说明该减少了,减少的信号是AH=1
jne c3
mov ah,1
c3:cmp di,1 ;DI到了1该增加了,增加的信号是AL=0
jne c4
mov al,0
c4:cmp di,80 ;Di到了80说明该减少了,减少的信号是AL=1
jne sh
mov al,1
sh:call show_smile ;在DS:[BX]处显示ASCII为1的笑脸
call time ;延时召唤
call clear_smile ;擦脸:把笑脸用ASCII为32的空格盖掉
ca1:cmp ax,0 ;依据AX的值判断SI,DI的增减
jne ca2 ;ax=0000,说明都该增加
inc si ;ax=0001,说明DI不能增加了
inc di ;ax=0100,说明SI不能增加了
jmp c1 ;ax=0101,说明SI,DI都不能增加了
ca2:cmp ax,1 ;
jne ca3
inc si
dec di
jmp c1
ca3:cmp ax,100h ;
jne ca4
dec si
inc di
jmp c1
ca4:cmp ax,101h ;
jne c1
dec si
dec di
jmp c1
over:mov ax,4c00h ;谁帮忙加个按键,还没学到
int 21h
show_smile:push ax ;在DS:[BX]处显示一张脸
push bx
call bx_set ;设置BX的值
mov al,1
mov [bx],al
pop bx
pop ax
ret
clear_smile:push ax ;用32(空格)擦脸
push bx
call bx_set ;设置BX的值
mov al,32
mov [bx],al
pop bx
pop ax
ret
time:push ax ; SBB不会,借用一下
push dx
mov dx,1000h
mov ax,0
s3: sub ax,1
sbb dx,0
cmp ax,0
jne s3
cmp dx,0
jne s3
pop dx
pop ax
ret
bx_set:push ax ;BX=160*si+2*di-162
push dx
mov ax,160
mul si
mov bx,ax
mov ax,2
mul di
add bx,ax
sub bx,162
pop dx
pop ax
ret
code ends
end start
[ 游客 发表于 2012-03-28 06:25 ]
肿么楼上的运行还一卡一卡的
[ 游客 发表于 2012-04-17 17:13 ]
I found this is an informative and interesting post so i think so it is very useful and knowledgeable. I would like to thank you for the efforts you have made in writing this article. I am hoping the same best work from you <a href="http://www.tiffany-uk-sale.co.uk/tiffany-uk.html">tiffany uk</a> in the future as well. In fact your creative writing ability has inspired me. Really the article is spreading its wings rapidly.
[ 游客 发表于 2012-04-17 17:13 ]
[url=http://www.tiffany-uk-sale.co.uk/tiffany-uk.html]tiffany uk[/url/]
[ escaping 发表于 2012-05-03 09:12 ]
好强大。。。第一次觉得汇编好神奇。。
[ azxs321 发表于 2012-05-09 22:57 ]
北京教育服务中心代 办 文 凭 认 证QQ492376088澳洲新加坡英国德国日本加大
)
[ frzh 发表于 2012-06-02 09:24 ]
很强大
[ 游客 发表于 2012-06-05 11:10 ]
能不能给一个流程图啊?,,,
[ 游客 发表于 2012-06-05 11:11 ]
拜托了啊,,,我有急用啊,,,
[ 842460904 发表于 2012-09-03 22:26 ]
真牛。
[ linqingjin 发表于 2013-07-15 17:36 ]
新手求给个软件地址。本人机子WIN764
[ 游客 发表于 2013-10-19 00:12 ]
佩服佩服!!!谢谢分享!
[ kkll 发表于 2013-11-12 22:13 ]
好神奇 丫丫 刚开始学习汇编 今天第一次觉得汇编还是这么好玩 哇哇膜拜大神
[ 游客 发表于 2013-12-04 06:42 ]
开始前加上清屏就更好了。
[ dgkepu 发表于 2013-12-06 06:57 ]
佩服佩服!!!谢谢分享!
[ dreamsever 发表于 2013-12-19 19:19 ]
大神,请问汇编语言可以编写或者调用窗口吗
[ 游客 发表于 2014-02-20 21:21 ]
www.aibiancheng.cn 爱编程
[ 游客 发表于 2015-06-07 16:23 ]
二〇一五年六月七日 16:23:17
[ qqqun238564439 发表于 2016-04-10 10:54 ]
厉害!
[ 游客 发表于 2019-06-04 15:11 ]
你说你妈呢
[ runxsystem 发表于 2019-07-18 10:27 ]
smaile.asm:2: error: parser: instruction expected
smaile.asm:3: error: parser: instruction expected
smaile.asm:72: error: symbol `code' redefined
smaile.asm:72: error: parser: instruction expected
smaile.asm:73: error: parser: instruction expected
[ somniumchase 发表于 2021-01-01 11:40 ]
大佬NB,不知道为什么,我在dosbox里面运行,那个笑脸显示在左上角,而且还卡住了