鱼C论坛

 找回密码
 立即注册
查看: 1606|回复: 0

汇编新手求助

[复制链接]
发表于 2013-3-6 22:44:36 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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
那里能运行 不过 我系统原代能运行的 他却不能运行了 还真让人无语 这个只能打出九个字 "欢迎使用汇编贪吃蛇"
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-10-7 22:28

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表