马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 半生缘 于 2013-3-7 10:54 编辑
前几天看有人发个贪吃的蛇 编译通过 但是 运行不了
于是乎打算自己写一个 还没写别的 刚写欢迎语 就不知道怎么的 也是运行就半路结束(初始化图形模式就自动退出)
但是 只是 画个方框就没事
- assume cs:code,ds:data,ss:stack
- stack segment
- db 128 dup(0)
- stack ends
- data segment
- shiwu db 1 dup(0,0,0)
- jiatou db 1 dup(0,0,0)
- she db 400 dup(0,0,0bbh)
- changdu dw 0
- huan12S db 02h,00h,0FAh,00h,13h,0E0h,94h,20h,55h,40h,21h,00h,21h,00h,52h,80h,4Ah,80h,84h,40h,18h,20h,00h,00h
- ying12S db 42h,00h,2Dh,0E0h,09h,20h,0C9h,20h,49h,20h,49h,20h,4Fh,20h,49h,60h,41h,00h,0B0h,00h,8Fh,0E0h,00h,00h
- shi12S db 11h,00h,2Fh,0E0h,21h,00h,6Fh,0E0h,0A9h,20h,29h,20h,2Fh,0E0h,25h,00h,22h,00h,25h,00h,38h,0E0h,00h,00h
- yong12S db 7Fh,0C0h,44h,40h,44h,40h,7Fh,0C0h,44h,40h,44h,40h,7Fh,0C0h,44h,40h,44h,40h,84h,40h,85h,0C0h,00h,00h
- hui12S db 40h,00h,2Fh,0E0h,08h,00h,0A8h,00h,68h,00h,28h,00h,48h,00h,48h,00h,0C8h,00h,48h,00h,4Fh,0E0h,00h,00h
- bian12S db 21h,00h,2Fh,0E0h,48h,20h,9Fh,0E0h,0E8h,00h,4Fh,0E0h,0BAh,0A0h,0CFh,0E0h,2Ah,0A0h,0DAh,0A0h,28h,60h,00h,00h
- tan12S db 04h,00h,0Ah,00h,35h,80h,0DFh,60h,01h,00h,3Fh,80h,20h,80h,24h,80h,24h,80h,0Bh,00h,0F0h,0C0h,00h,00h
- chi12S db 02h,00h,0F2h,00h,97h,0E0h,98h,00h,97h,80h,90h,80h,91h,00h,0F2h,00h,04h,20h,04h,20h,07h,0E0h,00h,00h
- she12S db 21h,00h,20h,80h,27h,0E0h,0FCh,20h,0AAh,00h,0AAh,40h,0FAh,80h,23h,00h,2Ah,20h,3Ah,20h,0CBh,0E0h,00h,00h
- data ends
- code segment
- dazi: push ax
- push bx
- push dx
- push cx
- push si
- push di
- mov si,dx
- mov di,cx
- mov cx,12
- s1: push cx
- mov cx,2
- s2: push cx
- mov cx,8
- mov al,80h ;比较最高为 第一位
- s3: mov ah,[bx]
- and ah,al
- cmp ah,al ;比较相同画点 不同跳出本次循环
- jnz loop1
- push ax
- push cx
- mov al,0bbh
- mov ah,0ch
- mov dx,si
- mov cx,di
- int 10h
- pop cx
- pop ax
- loop1: inc di ;下一个点位置
- shr al,1 ;al 右移以为 比较下一位
- loop s3
- inc bx ;取下一字节字模地址
- pop cx
- loop s2
- pop cx
- inc si
- loop s1
- pop di
- pop si
- pop cx
- pop dx
- pop bx
- pop ax
- ret
-
- start: mov ax,stack
- mov ss,ax
- mov sp,80h
- mov ax,data
- mov ds,ax
- mov ax,13h ;初始化AL=13 320×200 256色图形 (EGA)
- int 10h
- mov dx,100 ;起点行
- mov di,24 ;起点列
- mov bx,offset huan12S ;取字模地址
- mov cx,9 ;循环9次
- zz: push cx
- mov cx,di
- call dazi ;调用打字
- add di,32 ;下一个字位置起点
- add bx,24 ;取下一个字字模地址
- pop cx
- loop zz
- mov ah,1h ;等待键盘输入 结束程序
- int 21h
- mov ax,4c00h
- int 21h
- code ends
- end start
复制代码 等待大家 给点帮助
附件是 代码 和 程序
Masm.zip
(1.58 KB, 下载次数: 4)
:'(:'(:Q:Q
附件已改正
额... 程序改了 s1: 下边有个 push di
再到后边 loop s2下边有个 pop di
不然 跑行显示不出字 问题算是解决了吧 如果换个DOS 环境也算得话
不知道为啥 换图那个 我电脑自带的 DOS 就能用 这个却不行 我又安了一个DOSBox0[1].74dos模拟器.exe
那里能运行 不过 我系统原代能运行的 他却不能运行了 还真让人无语 这个只能打出九个字 "欢迎使用汇编贪吃蛇"
|