如何换屏?

duguyila 2001-06-13 01:39:00
需要一个效果:
有两个屏的信息,当用户在一个屏内按某个键后显示为另一个信息
而同样在另个屏内也能一样实现
本来可以用清屏在写屏可以实现,可是如果来回的切换太频繁时
显然是不可行的
汇编书上写说MS-DOS不是有四个页面吗?
如何利用页面进行跳转?
那么有如何定义两个屏幕的信息?
肯请大虾指教
Thank U!!!
//bow
...全文
115 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
seedundersnow 2001-06-14
  • 打赏
  • 举报
回复

BIOS 显示服务支持在VGA模式2,3(80X25字符)的8个显示页,其缓冲区起始地址分别是 B800:0000, B800:1000, B800:2000, B800:3000, B800:4000, B800:5000, B800:6000, B800:7000, 页0(B800:0000)是默认页.
使 ah=5,al=page,调用BIOS显示服务INT10H,即可实现显示页的切换. page 是希望的页,0-7.

Leemaasn 2001-06-14
  • 打赏
  • 举报
回复
你看看。基本原理同楼上的 。
Code0 Segment
Assume CS:Code0,SS:Code0,DS:Code0
Main Proc Far
Start:
Mov AX,Code0
Mov SS,AX
Mov DS,AX
Jmp Begin
Page1 DB 'This is Page1,Press Key[2] to Enter Page 2',0DH,0AH,24H
Page2 DB 'This is Page2,Press Key[1] to Enter Page 1',0DH,0AH,24H
Begin:
Mov AX,500H
Int 10H ;显示第0页
Lea DX,Page1
Push DX
Call WritePage
Loop0:
Mov AH,1
Int 21H
Cmp AL,'2'
Jnz Loop0
Mov AX,501H
Int 10H ;显示第1页
Lea DX,Page2
Push DX
Call WritePage
Loop1:
Mov AH,1
Int 21H
Cmp AL,'1'
Jnz Loop1
Jmp Begin
Exit0:
Mov AH,4CH
Int 21H
Main EndP

WritePage Proc Near
Mov AX,2
Int 10H ;清屏,初始化
Pop AX ;弹出SP
Pop DX ;弹出偏移地址
Push AX ;压入SP
Mov AH,9
Int 21H ;显示字符串
Ret
WritePage EndP
Code0 EndS
End Start
要是不行的话。mail 给我:Leemaasn@263.net
duguyila 2001-06-13
  • 打赏
  • 举报
回复
To Leemaasn(Pony) :
好的,非常感谢你!
Leemaasn 2001-06-13
  • 打赏
  • 举报
回复
我这几天要期末考试。你要是不急着要的话,。我星期六或者星期天给你看看吧。
duguyila 2001-06-13
  • 打赏
  • 举报
回复
to Leemaasn(Pony) :
我是一个汇编初学者,在完成汇编课程设计时遇到了这个问题
可惜汇编课本(清华沈美明温冬蝉著)内容太旧了
我不知道如何使用这个指令
能否举个例子
比如在屏幕1里显示
"This is Page1 ,Press Key[1] to Enter Page 2'
按1键后进入屏幕2显示
"This is Page2 ,Press Key[2] to Enter Page 1'
同样按2键后返回屏幕1
谢谢您!

Leemaasn 2001-06-13
  • 打赏
  • 举报
回复
你去查查int10h吧,那上面有的,你是不清楚怎么用呢,还是不清楚怎么编?
milson 2001-06-13
  • 打赏
  • 举报
回复
好像是几个page共同构成了一个screen

21,453

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧