廣告廣告
  加入我的最愛 設為首頁 風格修改
首頁 首尾
 手機版   訂閱   地圖  簡體 
您是第 4404 個閱讀者
 
發表文章 發表投票 回覆文章
  可列印版   加為IE收藏   收藏主題   上一主題 | 下一主題   
upside 手機 葫蘆墩家族
個人頭像
個人文章 個人相簿 個人日記 個人地圖
特殊貢獻獎 社區建設獎 優秀管理員勳章
頭銜:反病毒 反詐騙 反虐犬   反病毒 反詐騙 反虐犬  
版主
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片
推文 x0
[asm][範例] SavePart 電腦系統整合程式
最完整的 DOS 6.22 磁區備份程式

;Origin:............本..程..式..開..始......................;
;┌───────────────────────────┐;
;│格式宣告區--------------------------------------------│;
;└───────────────────────────┘;
TITLE Sky Wing System Universal Utility Tool Box ;標題,天翼系統萬用多用途工具箱 字元長度限 60 字
; INCLUDE PASSWORD.H ; 引入密碼標頭檔 Password.H
; INCLUDELIB PASSWORD.LIB ; 指定與密碼程式庫 Password.LIB 連結
; INCLUDELIB MUSIC.LIB ; 指定與音樂程式庫 Music.LIB 連結
INCLUDE WINDOWS.H ; 引入視窗標頭檔 Windows.H
INCLUDELIB WINDOWS.LIB ; 指定與視窗程式庫 Windows.LIB 連結
INCLUDE BIOS.INC ; 引入 BIOS.INC 公用巨集定義模組
INCLUDE DOS.INC ; 引入 DOS.INC 公用巨集定義模組
INCLUDE DOS.MAC ; 引入 DOS.H 公用巨集定義模組
.MODEL SMALL ;宣告一個小型模組 定義記憶體模式
; .286 ;
.STACK 100h ;
;─> ─────────────────────────────────────
.DATA ; 資料節段
;─> ─────────────────────────────────────
MyPSP DW ? ; 本程式執行時的 PSP 節段值
VirFile_C DB 7,7,0Ah,0Dh,' 請注意!! 你的檔案可能遭到病毒修改 !!',0Ah,0Dh,'$'
VirFile_E DB 7,7,0Ah,0Dh,' Warring!! SKY.EXE maybe encounter Virus modifyed',0Ah,0Dh,'$'
Not_Parameter DB 7,0Ah,0Dh,' Warring!! SKY.EXE Not_Parameter$' ; 沒有參數
;───────────────────────────────────────
Buffer DB 512 DUP (0) ;緩衝區起始偏移址
Buffer1 DB 512 DUP (0) ;緩衝區起始偏移址
Buffer2 DW 0 ;
DW 5 DUP (?) ;
PATH_1 DW ? ;
HANDLE DW ? ;存放檔案代號 DW 0 , DB 0
Part_sav DB 'Partit.PAT',0 ; 檔名
Boot_Sav DB 'BOOT.BOT',0 ; 檔名
Par_Msg DB 11,'奼迋迋迋迋迋迋迋迋迋迋迋迋迋迋?
DB 0FFh,11,'? Partition table Check V1.00 ',11,'?
DB 0FFh,11,'? Copyright (C) By:upside. ',11,'?
DB 0FFh,11,'迋迋迋迋迋迋迋迋迋迋迋迋迋迋?'
Boot_Msg DB 11,'奼迋迋迋迋迋迋迋迋迋迋迋迋迋迋?
DB 0FFh,11,'? Boot area table Check V1.00 ',11,'?
DB 0FFh,11,'? Copyright (C) By: upside. ',11,'?
DB 0FFh,11,'迋迋迋迋迋迋迋迋迋迋迋迋迋迋?'
Chk_Err DB 7,0Ah,0Dh,'WARNING !! Your System Table had been modifyed$'
Chk_Ok DB 7,0Ah,0Dh,' System Table Check Ok !!$'
Reput_OK DB 7,0Ah,0Dh,' System Table Reput Ok !!$'
;───────────────────────────────────────
FileName_1 DB 'SKY.EXE',0 ; 檔案名稱
;───────────────────────────────────────
Import_Password DB 7,0Ah,0Dh,'請輸入密碼:$' ; 輸入密碼
Import_err DB 7,10,13,'你輸入錯誤的密碼!!$' ; 錯誤的密碼
Password DB 񟡂' ; 內建密碼
;───────────────────────────────────────
Wnd01_Data DB '╔═════════════════╗' ;視窗資料內容
DB '║ 天 翼 工 作 室 ║'
DB '╠════════╤════════╣'
DB '║A 硬碟分割表備份│F 啟動磁區表備份║' ;功能表選項內容
DB '║B 硬碟分割表回存│G 啟動磁區表回存║'
DB '║C │H ║'
DB '║D │I ║'
DB '║E │J 全能系統加速 ║'
DB '╠════════╧════════╣'
DB '║製作者: upside <02/17/1999>║'
DB '╟─────────────────╢'
DB '║ < 敬 請 尊 重 智 慧 財 產 權 > ║'
DB '║ ║'
DB '╚═════════════════╝'
Wnd01 Window <Wnd01_Data,20,06,38,14,3Fh,SHADOW_ON,19h> ;視窗結構體變數
; 視窗資料內容 X Y 寬 高 屬 陰影狀態 陰影屬性
Menu01 Menu <22,09,02,05,10,16,01,02,00,4fh,3Fh,00,01,01,00,00,POPUP>
; 行 個 選 選 起
; 行 始
Task_table Label Word
DW SavePart,SaveBoot,RePart_1,ReBoot_1,NullTask
; 1 A 6 F 2 B 7 G 3 C
DW NullTask,NullTask,NullTask,NullTask,Quicken
; 8 H 4 D 9 I 5 E 10 J
; 音樂 DW NullTask,_play_music,NullTask,NullTask,NullTask
;───────────────────────────────────────
SavePart_OK DB ' < 硬 碟 分 割 表 備 份 成 功 > '
SavePart_WIN Window <SavePart_OK,22,17,34,01,0DFh,SHADOW_Off,NULL>
; 顯 行
;───────────────────────────────────────
REPART_OK DB ' < 硬 碟 分 割 表 回 存 成 功 > '
REPART_WIN Window <REPART_OK,22,17,34,01,0DFh,SHADOW_Off,NULL>
;───────────────────────────────────────
SaveBoot_OK DB ' < 啟 動 磁 區 表 備 份 成 功 > '
SaveBoot_WIN Window <SaveBoot_OK,22,17,34,01,0DFh,SHADOW_Off,NULL>
;───────────────────────────────────────
ReBoot_OK DB ' < 啟 動 磁 區 表 回 存 成 功 > '
ReBoot_WIN Window <ReBoot_OK,22,17,34,01,0DFh,SHADOW_Off,NULL>
;───────────────────────────────────────
Quicken_OK DB ' < 系 統 加 速 程 式 成 功 > '
Quicken_WIN Window <Quicken_OK,22,17,34,01,0DFh,SHADOW_Off,NULL>
;───────────────────────────────────────
Joking_OK DB ' < 敬 請 尊 重 智 慧 財 產 權 > '
Joking_WIN Window <Joking_OK,22,17,34,01,0DFh,SHADOW_Off,NULL>
;───────────────────────────────────────
Screen DD 00000h ; 螢幕
;───────────────────────────────────────
MSG DB 'Made By SY BF ' ; 秀出作者ID
Save DB 30 DUP (0) ; 存放字型碼,因為可重覆使用 所以只要 30 byte
ET_FILE DB 'C:\ET3\STDFONT.15',00h ; 倚天 16*15 字型檔
NO_Chinese_C DB 0h,0h,'本程式需倚天中文系統' ;
End_Chinese DB 0h,0h,'天翼工作室感謝您' ; 裡面的中文在程式中乃是以Big-5碼的型式存放
;─> ─────────────────────────────────────
.CODE ; 程式節段
.STARTUP ; 程式初始化
;─> ─────────────────────────────────────
;┌───────────────────────────┐;
;│防止DEBUG的單步追蹤功能-------------------------------│;
;└───────────────────────────┘;
;
; 玩過組合的人都知道電腦有個旗標 ,俗稱 TF 旗標 ,將此旗標關掉 ,就不會有
; 單步執行的功能了。
; 因為當此位元為 1 時 ,電腦每執行一個指令都會觸動 INT_01 ,而 DEBUG 就
; 是利用它來達到單步執行 ,在 BIOS 內無法下中斷點(INT_03) ,所以在要偵錯
; BIOS 下只能靠 TF 來追蹤程式執行過程了。
;
; 如何關閉此旗標呢 ?
; 我們知道旗標有 16Bit , Bit8 即為TF旗標 :
; PUSHF ; ┐將旗標狀態傳回到 AX 內
; POP AX ; ┘
; AND AX,0FEFFh ; ─ 清掉 TF 旗標
; PUSH AX ; ┐將新旗標寫回
; POPF ; ┘
;
; INT 1h ; 中斷 1h 防 DEBUG 單步追蹤
; INT 3h ;
; INT 7h ; 中斷 7H 防 S-ICE 單步追蹤
; 最後甚至當掉使用者的鍵盤 ,將鍵盤指向自己的程式 ,或是關掉鍵盤 ,
; 有的程式設計師為了省功 ,都用最簡單的方法當掉鍵盤。
;
; Then I'm re-assembling with INT 3h squeezed in there:
;
; MOV AX,5Ah ; sample code to break into
; DB 0CCh ; or INT 3h, whatever.
; OUT 82551pa,AL
;
; And this would be the INT 3h handler (simple crude sample) :
;───────────────────────────────────────
; MOV AH,2Ah ; 取得系統時間 (CX=年 1980~2099 , DH=月, DL=日)
; MOV DX,0520h ;
; INT 21h ; DOS功能中斷
;
; CMP DX,0520h ; 比較是否為10月10日
; JE ChkPart ; 是...... 不是,跳至下一行程式碼執行....
;┌───────────────────────────┐;
;│檔案長度偵測------------------------------------------│;
;└───────────────────────────┘;
MOV AH,3Dh ; 開檔AX > AH 2bytes
MOV DX,OFFSET FileName_1 ; FileName_1 SKY.EXE
INT 21h ;
;
XCHG AX,BX ; MOV BX,AX
MOV AX,4202h ; 移動檔案的寫指標
XOR CX,CX ; 位移的低位元組
CWD ; 位移的高位元組
INT 21h ;
;─> $$$───────────────────────────────────
CMP AX,1E55h ; 測試本 ..

訪客只能看到部份內容,免費 加入會員 或由臉書 Google 可以看到全部內容




爸爸 你一路好走
獻花 x0 回到頂端 [樓 主] From:臺灣 | Posted:2006-12-09 18:19 |

首頁  發表文章 發表投票 回覆文章
Powered by PHPWind v1.3.6
Copyright © 2003-04 PHPWind
Processed in 0.024082 second(s),query:15 Gzip disabled
本站由 瀛睿律師事務所 擔任常年法律顧問 | 免責聲明 | 本網站已依台灣網站內容分級規定處理 | 連絡我們 | 訪客留言