请问在dos下用汇编设置光标的问题!

phenixsen 2003-10-20 08:00:35
看书上的介绍时说:int 10h ,ah = 1 时可以设置光标的类型--设置光标的起始行和结束行 但是 自己怎么试都出不来效果 谁能具体介绍一下这个调用 和最后的效果是什么样子的. 谢谢
...全文
268 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
gad1star 2003-10-21
  • 打赏
  • 举报
回复

┌──┐
│ │<---- 啟始線
│ │
│ │<---- 終止線
-----
我无奈了...我不相信把这个烂图改不好!
gad1star 2003-10-21
  • 打赏
  • 举报
回复

┌──┐ │
│ │<---- 啟始線 │
│ │ │
│ │<---- 終止線 │
------

楼上的图形扭了。
gad1star 2003-10-21
  • 打赏
  • 举报
回复
刚刚去找了一下资料:
;│BIOS 呼叫 INT 10H,AH=01H │
;│設定游標形狀 ┌──┐ │
;│ (CH) <= 游標的啟始線 (0~15) │ │<---- 啟始線 │
;│ (CL) <= 游標的終止線 (0~15) │ │ │
;│註:正常: CH=0DH,CL=0EH │ │<---- 終止線 │
;│ 消失: CH=0FFH,CL=0FFH

那个“啟始線、終止線”指向的框框就是一个字符所占的位置,应该可以看懂吧:)。
但是其中ch,cl取值似乎有些问题。
我自己试了一下:ch正常取值范围是0到7,cl的正常取值范围是ch到ch+3。
(也就是说,光标所在的高度只能取8个值,厚度不超过3)
当然你也可以取一些特殊值,如果cl>ch+3,那样的话那个字符就“全亮”了。
或者cl<ch时,也会“全亮”。
或者ch和cl都大于20h时,光标就消失。

eg:

C:\>debug
-a
0B30:0100 mov ah,1
0B30:0102 mov ch,0
0B30:0104 mov cl,1
0B30:0106 int 10
0B30:0108 int 20
0B30:010A
-n cursor.com
-rcx
CX 0000
:A
-w
Writing 0000A bytes
-q
C:\>cursor.com
效果是光标跑到上面去了。
------------------------------------------
至于你说的“怎么试都出不来效果”,会不会是有其他原因?
比如console是不是窗口模式,不是全屏?
或者你的系统是XP?那样console光在全屏下也不行。你可以这样试一下:
C:\>debug cursor.com
-g
Program terminated normally


希望能对你有所帮助!
bluedreammer 2003-10-21
  • 打赏
  • 举报
回复
int 10h如果用在v8086下,總會出現問題,我用int10h清屏時如果dos不全屏顯示,就會死機,但是在別的機器同樣的系統下(2k)就不會.
紫郢剑侠 2003-10-20
  • 打赏
  • 举报
回复
主要是设置光标的高度和宽度。
csdsjkk 2003-10-20
  • 打赏
  • 举报
回复
mov ah,1
mov ch,起始行
mov cl,结束行
int 10h

21,458

社区成员

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

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