當前位置:編程學習大全網 - 編程語言 - 批處理中壹個令我困惑的語句!高手進

批處理中壹個令我困惑的語句!高手進

分解echo exit|cmd /kprompt e100 B8 12 00 CD 10 B0 03 CD 10 CD 20 $_g$_q$_|debug>nul

<"%~f0" more +8 1.echo exit ==> 顯示exit2. cmd /k prompt e100 B8 12 00 CD 10 B0 03 CD 10 CD 20 $_g$_q%_==> 調用cmd prompt顯示壹串字符串, 註意這裏使用了/K參數,CMD在執行完後不會主動退出,會壹直存在,==>然後解釋這個字符串,其就是仿鍵盤的輸入,是debug裏面的壹個修改內存指令e,把100開始的內容修改為B8 12 00 CD 10 B0 03 CD 10 CD 20, 最後在做完這些動作後,$_g代表輸入執行100開始的代碼,$_q代表退出DEBUG程序(此時回到CMD命令行).那串數字最後反匯編回來是:

1455:0100 B81200 MOV AX,0012

1455:0103 CD10 INT 10

1455:0105 B003 MOV AL,03

1455:0107 CD10 INT 10

1455:0109 CD20 INT 20

就是三個DOS調用, 第壹個是調用顯示中斷INT10的00H功能,參數是12,查最後附的表知道是改成640*480*16色模式; 第二個是調用顯示中斷INT10的003H功能讀光標位置; 第三是INT20表示程序結束返回 3. | debug ==> 這裏debug是指debug.exe的壹個匯編程序, 使用管道|把前面輸出的結果作為debug程序的輸入.4. >nul ==> 把前面命令的輸出都導入到壹個nul的空設備中,就是不顯示內容5. <"%~f0" 批處理中的宏引用,就是當前在運行的文件本身6.more +8 文本內容分頁輸出命令more, 參數+8表示從第8行開始顯示. 於是相當於:首先妳的BAT程序通過第壹個CMD(稱CMD1)的外殼運行, 然後1通過管理把exit附到2的處理後面,然後2裏面調用cmd/k(稱CMD2)輸出壹個字符串,這個字符串又通過管理送給debug.exe程序裏去即修改100開始的內容並運行,最後exit作為2的字符串的內容也會在3 debug執行後執行,於是這個exit把2中的cmd/k中參數k停留的CMD2給退出了,回到CMD1環境中,註意此時debug這段程序切換了顯示模式,所以窗口會有閃爍的切換, 所有操作過程被4接管丟棄不顯示. 接著5中把BAT文件送到CMD1中並傳給後面的more,並從第8行開始顯示這個BAT文件. 顯示完了以後,CMD1就自動退出了.妳加了pause時,CMD1在退出前等妳按任意鍵. ----------------顯示服務(Video Service——INT 10H)

00H — 設置顯示器模式 0CH —寫圖形象素

01H — 設置光標形狀 0DH —讀圖形象素

02H — 設置光標位置 0EH —在Teletype模式下顯示字符

03H — 讀取光標信息 0FH —讀取顯示器模式

04H — 讀取光筆位置 10H —顏色

05H — 設置顯示頁 11H —字體

06H、07H — 初始化或滾屏 12H —顯示器的配置

08H — 讀光標處的字符及其屬性 13H —在Teletype模式下顯示字符串

09H — 在光標處按指定屬性顯示字符 1AH —讀取/設置顯示組合編碼

0AH — 在當前光標處顯示字符 1BH —讀取功能/狀態信息

0BH — 設置調色板、背景色或邊框 1CH —保存/恢復顯示器狀態 (1)、功能00H 功能描述: 設置顯示器模式

入口參數: AH=00H

AL=顯示器模式,見下表所示

出口參數: 無 可用的顯示模式如下所列: 顯示模式 顯示模式屬性 顯示模式 顯示模式屬性

00H 40×25 16色 文本 01H 40×25 16色 文本

02H 80×25 16色 文本 03H 80×25 16色 文本

04H 320×200 4色 05H 320×200 4色

06H 640×200 2色 07H 80×25 2色 文本

08H 160×200 16色 09H 320×200 16色

0AH 640×200 4色 0BH 保留

0CH 保留 0DH 320×200 16色

0EH 640×200 16色 0FH 640×350 2(單色)

10H 640×350 4色 10H 640×350 16色

11H 640×480 2色 12H 640×480 16色

13H 640×480 256色 對於超級VGA顯示卡,我們可用AX=4F02H和下列BX的值來設置其顯示模式。 BX 顯示模式屬性 BX 顯示模式屬性

100H 640×400 256色 101H 640×480 256色

102H 800×600 16色 103H 800×600 256色

104H 1024×768 16色 105H 1024×768 256色

106H 1280×1024 16色 107H 1280×1024 256色

108H 80×60 文本模式 109H 132×25 文本模式

10AH 132×43 文本模式 10BH 132×50 文本模式

10CH 132×60 文本模式 (2)、功能01H 功能描述: 設置光標形狀

入口參數: AH=01H

CH低四位=光標的起始行

CL低四位=光標的終止行

出口參數: 無 (3)、功能02H 功能描述: 用文本坐標下設置光標位置

入口參數: AH=02H

BH=顯示頁碼

DH=行(Y坐標)

DL=列(X坐標)

出口參數: 無 (4)、功能03H 功能描述: 在文本坐標下,讀取光標各種信息

入口參數: AH=03H

BH=顯示頁碼

出口參數: CH=光標的起始行

CL=光標的終止行

DH=行(Y坐標)

DL=列(X坐標) (5)、功能04H 功能描述: 獲取當前狀態和光筆位置

入口參數: AH=04H

出口參數: AH=00h——光筆未按下/未觸發,01h——光筆已按下/已觸發

BX=象素列(圖形X坐標)

CH=象素行(圖形Y坐標,顯示模式:04H~06H)

CX=象素行(圖形Y坐標,顯示模式:0DH~10H)

DH=字符行(文本Y坐標)

DL=字符列(文本X坐標) (6)、功能05H 功能描述: 設置顯示頁,即選擇活動的顯示頁

入口參數: AH=05H

AL=顯示頁

對於CGA、EGA、MCGA和VGA,其顯示頁如下表所列: 模式 頁數 顯示器類型

00H、01H 0~7 CGA、EGA、MCGA、VGA

02H、03H 0~3 CGA

02H、03H 0~7 EGA、MCGA、VGA

07H 0~7 EGA、VGA

0DH 0~7 EGA、VGA

0EH 0~3 EGA、VGA

0FH 0~1 EGA、VGA

10H 0~1 EGA、VGA

對於PCjr:

AL= 80H——讀取CRT/CPU頁寄存器

81H——設置CPU頁寄存器

82H——設置CRT頁寄存器

83H——設置CRT/CPU頁寄存器

BH=CRT頁(子功能號82H和83H)

BL=CPU頁(子功能號81H和83H)

出口參數: 對於前者,無出口參數,但對PCjr在子功能80H~83H調用下,有:BH=CRT頁寄存器,BL=CPU頁寄存器 (7)、功能06H和07H 功能描述: 初始化屏幕或滾屏

入口參數: AH=06H——向上滾屏,07H——向下滾屏

AL=滾動行數(0——清窗口)

BH=空白區域的缺省屬性

(CH、CL)=窗口的左上角位置(Y坐標,X坐標)

(DH、DL)=窗口的右下角位置(Y坐標,X坐標)

出口參數: 無 (8)、功能08H 功能描述: 讀光標處的字符及其屬性

入口參數: AH=08H

BH=顯示頁碼

出口參數: AH=屬性

AL=字符 (9)、功能09H 功能描述: 在當前光標處按指定屬性顯示字符

入口參數: AH=09H

AL=字符

BH=顯示頁碼

BL=屬性(文本模式)或顏色(圖形模式)

CX=重復輸出字符的次數

出口參數: 無 (10)、功能0AH 功能描述: 在當前光標處按原有屬性顯示字符

入口參數: AH=0AH

AL=字符

BH=顯示頁碼

BL=顏色(圖形模式,僅適用於PCjr)

CX=重復輸出字符的次數

出口參數: 無 (11)、功能0BH 功能描述: 設置調色板、背景色或邊框

入口參數: AH=0BH

設置顏色:BH=00H,BL=顏色

選擇調色板:BH=01H,BL=調色板(320×200、4種顏色的圖形模式)

出口參數: 無 (12)、功能0CH 功能描述: 寫圖形象素

入口參數: AH=0CH

AL=象素值

BH=頁碼

(CX、DX)=圖形坐標列(X)、行(Y)

出口參數: 無 (13)、功能0DH 功能描述: 讀圖形象素

入口參數: AH=0DH

BH=頁碼

(CX、DX)=圖形坐標列(X)、行(Y)

出口參數: AL=象素值 (14)、功能0EH 功能描述: 在Teletype模式下顯示字符

入口參數: AH=0EH

AL=字符

BH=頁碼

BL=前景色(圖形模式)

出口參數: 無 (15)、功能0FH 功能描述: 讀取顯示器模式

入口參數: AH=0FH

出口參數: AH=屏幕字符的列數

AL=顯示模式(參見功能00H中的說明)

BH=頁碼 (16)、功能10H 功能描述: 顏色中斷。其子功能說明如下: 功能號 子功能名稱 功能號 子功能名稱

00H — 設置調色板寄存器 01H — 設置邊框顏色

02H — 設置調色板和邊框 03H — 觸發閃爍/亮顯位

07H — 讀取調色板寄存器 08H — 讀取邊框顏色

09H — 讀取調色板和邊框 10H — 設置顏色寄存器

12H — 設置顏色寄存器塊 13H — 設置顏色頁狀態

15H — 讀取顏色寄存器 17H — 讀取顏色寄存器塊

1AH — 讀取顏色頁狀態 1BH — 設置灰度值

(17)、功能11H 功能描述: 字體中斷。其子功能說明如下: 子功能號 子功能名稱

00H 裝入用戶字體和可編程控制器

10H 裝入用戶字體和可編程控制器

01H 裝入8×14 ROM字體和可編程控制器

11H 裝入8×14 ROM字體和可編程控制器

02H 裝入8×8 ROM字體和可編程控制器

12H 裝入8×8 ROM字體和可編程控制器

03H 設置塊指示器

04H 裝入8×16 ROM字體和可編程控制器

14H 裝入8×16 ROM字體和可編程控制器

20H 設置INT 1Fh字體指針

21H 為用戶字體設置INT 43h

22H 為8×14 ROM字體設置INT 43H

23H 為8×8 ROM字體設置INT 43H

24H 為8×16 ROM字體設置INT 43H

30H 讀取字體信息

(18)、功能12H 功能描述: 顯示器的配置中斷。其子功能說明如下: 功能號 功能名稱 功能號 功能名稱

10H — 讀取配置信息 20H — 選擇屏幕打印

30H — 設置掃描行 31H — 允許/禁止裝入缺省調色板

32H — 允許/禁止顯示 33H — 允許/禁止灰度求和

34H — 允許/禁止光標模擬 35H — 切換活動顯示

36H — 允許/禁止屏幕刷新

(19)、功能13H 功能描述: 在Teletype模式下顯示字符串

入口參數: AH=13H

BH=頁碼

BL=屬性(若AL=00H或01H)

CX=顯示字符串長度

(DH、DL)=坐標(行、列)

ES:BP=顯示字符串的地址 AL= 顯示輸出方式

0——字符串中只含顯示字符,其顯示屬性在BL中。顯示後,光標位置不變

1——字符串中只含顯示字符,其顯示屬性在BL中。顯示後,光標位置改變

2——字符串中含顯示字符和顯示屬性。顯示後,光標位置不變

3——字符串中含顯示字符和顯示屬性。顯示後,光標位置改變

出口參數: 無 (20)、功能1AH 功能描述: 讀取/設置顯示組合編碼,僅PS/2有效,在此從略 (21)、功能1BH 功能描述: 讀取功能/狀態信息,僅PS/2有效,在此從略 (22)、功能1CH 功能描述: 保存/恢復顯示器狀態,僅PS/2有效,在此從略

  • 上一篇:畢業論文 題目:交通燈控制系統設計
  • 下一篇:平面設計包括哪些詳細內容?
  • copyright 2024編程學習大全網