6 个解决方案
#1
mov ah,1
mov ch,起始行
mov cl,结束行
int 10h
mov ch,起始行
mov cl,结束行
int 10h
#2
主要是设置光标的高度和宽度。
#3
int 10h如果用在v8086下,總會出現問題,我用int10h清屏時如果dos不全屏顯示,就會死機,但是在別的機器同樣的系統下(2k)就不會.
#4
刚刚去找了一下资料:
;│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
希望能对你有所帮助!
;│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
希望能对你有所帮助!
#5
│
┌──┐ │
│ │<---- 啟始線 │
│ │ │
│ │<---- 終止線 │
------
楼上的图形扭了。
┌──┐ │
│ │<---- 啟始線 │
│ │ │
│ │<---- 終止線 │
------
楼上的图形扭了。
#6
┌──┐
│ │<---- 啟始線
│ │
│ │<---- 終止線
-----
我无奈了...我不相信把这个烂图改不好!
#1
mov ah,1
mov ch,起始行
mov cl,结束行
int 10h
mov ch,起始行
mov cl,结束行
int 10h
#2
主要是设置光标的高度和宽度。
#3
int 10h如果用在v8086下,總會出現問題,我用int10h清屏時如果dos不全屏顯示,就會死機,但是在別的機器同樣的系統下(2k)就不會.
#4
刚刚去找了一下资料:
;│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
希望能对你有所帮助!
;│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
希望能对你有所帮助!
#5
│
┌──┐ │
│ │<---- 啟始線 │
│ │ │
│ │<---- 終止線 │
------
楼上的图形扭了。
┌──┐ │
│ │<---- 啟始線 │
│ │ │
│ │<---- 終止線 │
------
楼上的图形扭了。
#6
┌──┐
│ │<---- 啟始線
│ │
│ │<---- 終止線
-----
我无奈了...我不相信把这个烂图改不好!