鱼C论坛

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

汇编新手求助

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

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

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

x
本帖最后由 半生缘 于 2013-3-7 10:54 编辑

前几天看有人发个贪吃的蛇 编译通过 但是 运行不了
于是乎打算自己写一个 还没写别的 刚写欢迎语 就不知道怎么的 也是运行就半路结束(初始化图形模式就自动退出)
但是 只是 画个方框就没事
  1. assume cs:code,ds:data,ss:stack
  2. stack segment
  3.         db 128 dup(0)
  4. stack ends

  5. data segment

  6. shiwu        db 1 dup(0,0,0)
  7. jiatou        db 1 dup(0,0,0)
  8. she        db 400 dup(0,0,0bbh)
  9. changdu        dw 0

  10. 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
  11. 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
  12. 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
  13. 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
  14. 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
  15. 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
  16. 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
  17. 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
  18. 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

  19. data ends

  20. code segment
  21. dazi:        push ax
  22.         push bx
  23.         push dx
  24.         push cx
  25.         push si
  26.         push di

  27.         mov si,dx
  28.         mov di,cx
  29.         mov cx,12
  30. s1:        push cx
  31.         mov cx,2
  32. s2:        push cx
  33.         mov cx,8

  34.         mov al,80h                ;比较最高为 第一位
  35. s3:        mov ah,[bx]
  36.         and ah,al
  37.         cmp ah,al                        ;比较相同画点 不同跳出本次循环
  38.         jnz loop1

  39.         push ax
  40.         push cx

  41.         mov al,0bbh
  42.         mov ah,0ch
  43.         mov dx,si
  44.         mov cx,di
  45.         int 10h

  46.         pop cx
  47.         pop ax

  48. loop1:        inc di                        ;下一个点位置
  49.         shr al,1                        ;al 右移以为 比较下一位
  50.         loop s3

  51.         inc bx                        ;取下一字节字模地址
  52.         pop cx
  53.         loop s2

  54.         pop cx
  55.         inc si
  56.         loop s1

  57.         pop di
  58.         pop si
  59.         pop cx
  60.         pop dx
  61.         pop bx
  62.         pop ax
  63.         ret
  64.         
  65. start:        mov ax,stack
  66.         mov ss,ax
  67.         mov sp,80h
  68.         mov ax,data
  69.         mov ds,ax

  70.         mov ax,13h        ;初始化AL=13 320×200 256色图形 (EGA)
  71.         int 10h

  72.         mov dx,100        ;起点行
  73.         mov di,24        ;起点列

  74.         mov bx,offset huan12S        ;取字模地址
  75.         mov cx,9                ;循环9次
  76. zz:        push cx
  77.         mov cx,di

  78.         call dazi                ;调用打字

  79.         add di,32                ;下一个字位置起点
  80.         add bx,24        ;取下一个字字模地址
  81.         pop cx
  82.         loop zz

  83.         mov ah,1h        ;等待键盘输入 结束程序
  84.         int 21h

  85.         mov ax,4c00h
  86.         int 21h
  87. code ends
  88. end start        
复制代码
等待大家 给点帮助

附件是 代码 和 程序 Masm.zip (1.58 KB, 下载次数: 4)

:'(:'(:Q:Q
附件已改正

额... 程序改了 s1: 下边有个 push di

再到后边 loop s2下边有个 pop di
不然 跑行显示不出字 问题算是解决了吧 如果换个DOS 环境也算得话
不知道为啥 换图那个 我电脑自带的 DOS 就能用 这个却不行 我又安了一个DOSBox0[1].74dos模拟器.exe
那里能运行 不过 我系统原代能运行的 他却不能运行了 还真让人无语 这个只能打出九个字 "欢迎使用汇编贪吃蛇"
小甲鱼最新课程 -> https://ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-7-6 04:20

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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