中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS开发编程 & 发展交流 (开发室) » 一个在DOS屏幕下划出一个小屏幕的程序
作者:
标题: 一个在DOS屏幕下划出一个小屏幕的程序 上一主题 | 下一主题
kickout
高级用户




积分 667
发帖 135
注册 2002-10-25
状态 离线
『楼 主』:  一个在DOS屏幕下划出一个小屏幕的程序

都是我以前练习时自己编得玩的。
==============
dseg segment
cury db 0
curx db 0
luy db 10
lux db 30
rdy db 15
rdx db 40
cont db 5
dseg ends
clear macro
      mov ah ,6
      mov al ,0
      mov ch ,0
      mov cl,0
      mov dh,24
      mov dl,79
      mov bh,7
      int 10
      endm
scroll macro
       mov h,6
       mov al,cont
       mov ch,luy
       mov cl,lux
       mov dh,rdy
       mov dl,rdx
       mov bh,70h
       int 10h
       endm
postc macro
      mov ah,2
      mov dh,cury
      mov dl,curx
      mov bh,0
      int 10
      endm
;--------------------------------
cseg segment
assume cs:cseg,ds:dseg
main proc far
     push ds
     sub ax,ax
     push ax
     mov ax,dseg
     mov ds,ax
     clear
     scroll cont
     postc
input:
      mov ah,0
      int 16
      cmp ah,abh
      jnz no_left
      cmp curx,0
      jnz l1
      cmp cury,0
      jnz l3
      jmp input
l1:
      dec curx
      jmp l5
l3:
      dec cury
      mov curx,79
l5:
      postc
      jmp input
no_left:
      cmp ah,4dh
      jnz no_right
      cmp curx,79
      jnz r1
      cmp cury,24
      jnz r3
      jmp input
r1:
      inc curx
      jmp r5
r3:
      inc cury
      mov curx,0
r5:
      postc
      jmp input
no_right:
      cmp ah,48h
      jnz no_up
      cmp cury,0
      jz up1
      dec cury
      postc
up1:
      jmp input
no_up:
      cmp ah,50h
      jnz no_down
      cmp cury,24
      jz d1
      inc cury
      postc
d1:
      jmp input
no_down:
      cmp ah,4fh
      jz setxy
      cmp ah,01
      jnz disp
      ret
disp:
      mov ah,0ah
      mov bh,0
      mov cx,1
      int 10h
      inc curx
      mov al,curx
      cmp al,rdx
      jl next
      scroll 1
      mov al,lux
      mov curx,al
next:
      postc
      jmp input
setxy:
      mov al,cury
      mov bl,curx
      cmp  al,luy
      jl s1
      cmp bl,lux
      jl s2
      mov rdy,al
      mov rdx,bl
      jmp new
s1:
      cmp bl,rdx
      jle s3
      jmp input
s2:
      cmp al,rdy
      jg s5
s3:
      mov luy,al
      mov lux,bl
new:
      mov al,rdy
      sub al,luy
      inc al
      mov cont ,al
      clear
      scroll cont
s5:
      jmp input
main endp
;-----------------------------
cseg ends
     end  main
================
事隔多年,我也忘光了,自己编译一下试试就知道了。






================================= kickout
大功告成,打个Kiss!
2002-10-28 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
kickout
高级用户




积分 667
发帖 135
注册 2002-10-25
状态 离线
『第 2 楼』:  

这个和上面的差不多,但可以肯定还是有不同的,编译后对比一下试试就知道了
=====================
dseg segment
cury db 0
curx db 0
luy db 10
lux db 30
rdy db 15
rdx db 40
cont db 5
dseg ends
stack segment para stack'stack'
       db 64 dup(?)
stack ends
clear macro
      mov ah ,6
      mov al ,18h
      mov ch ,0
      mov cl,0
      mov dh,24
      mov dl,79
      mov bh,7
      int 10h
      endm
scroll macro cont
       mov ah,6
       mov al,cont
       mov ch,luy
       mov cl,lux
       mov dh,rdy
       mov dl,rdx
       mov bh,00011111b
       int 10h
       endm
postc macro
      mov ah,2
      mov dh,cury
      mov dl,curx
      mov bh,0
      int 10h
      endm
;--------------------------------
cseg segment
assume cs:cseg,ds:dseg
main proc far
     push ds
     sub ax,ax
     push ax
     mov ax,dseg
     mov ds,ax
     clear
     scroll cont
     postc
input:
      mov ah,0
      int 16h
      cmp ah,4bh
      jnz no_left
      cmp curx,0
      jnz l1
      cmp cury,0
      jnz l3
      jmp input
l1:
      dec curx
      jmp l5
l3:
      dec cury
      mov curx,79
l5:
      postc
      jmp input
no_left:
      cmp ah,4dh
      jnz no_right
      cmp curx,79
      jnz r1
      cmp cury,24
      jnz r3
      jmp input
r1:
      inc curx
      jmp r5
r3:
      inc cury
      mov curx,0
r5:
      postc
      jmp input
no_right:
      cmp ah,48h
      jnz no_up
      cmp cury,0
      jz up1
      dec cury
      postc
up1:
      jmp input
no_up:
      cmp ah,50h
      jnz no_down
      cmp cury,24
      jz d1
      inc cury
      postc
d1:
      jmp input
no_down:
      cmp ah,4fh
      jz sxy
      cmp ah,01h
      jz edd
      cmp al,0dh
      jnz eed
neew:
      inc cury
      mov ah,cury
      cmp ah,rdy
      jle no_change
      scroll 1
      dec cury
      mov ah,cury
no_change:
           dec lux
           mov al,lux
           mov curx,al
           inc lux

eed:  jmp disp

edd:      ret
sxy:    jmp setxy
disp:
      mov ah,0ah
      mov bh,0
      mov cx,1
      int 10h
      inc curx
      mov al,curx
      cmp al,rdx
      jng next
      scroll 1
      mov al,lux
      mov curx,al

next:
      postc
      jmp input
setxy:
      mov al,cury
      mov bl,curx
      cmp  al,luy
      jl s1
      cmp bl,lux
      jl s2
      mov rdy,al
      mov rdx,bl
      jmp new
s1:
      cmp bl,rdx
      jle s3
      jmp input
s2:
      cmp al,rdy
      jg s5
s3:
      mov luy,al
      mov lux,bl
new:
      mov al,rdy
      sub al,luy
      inc al
      mov cont ,al
      clear
      scroll cont
s5:
      jmp input
main endp
;-----------------------------
cseg ends
     end  main

=====================



================================= kickout
大功告成,打个Kiss!
2002-10-28 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
随风顺
初级用户




积分 196
发帖 35
注册 2002-10-14
状态 离线
『第 3 楼』:  

大概浏览了一下代码
好像第一个是图形模式,第二个是文本模式
不过第一段程序
scroll macro
mov h,6
那块似乎有点问题,
是不是改成:
scroll macro cont
mov ah,6

我最近正好在准备汇编语言的学期考试,被BIOS中断那块搞得很是头疼
不知道kickout对这块熟不熟,不过看程序用到不少

多帮帮我哈,如果这回考试顺利过关的话我请客哦


[此贴子已经被作者于2002-10-28 20:05:16编辑过]






http://ie.zzu.edu.cn
Email:Jathenal@mail.edu.cn
QQ:26165434 希望能和大家做个朋友
2002-10-28 00:00
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (26165434)  编辑帖子  回复  引用回复
柳飘逸
初级用户




积分 119
发帖 11
注册 2002-12-14
状态 离线
『第 4 楼』:  

我试试代码先



ぁ拒签ぁ!!!!!!!!!!!!!
2002-12-14 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: