操作的基本原理:
1,將獲取bios埠的程式入口位址放入中斷向量表中
2,更新相應的中斷向量表(改變了預設的中斷程式)
3,將中斷的入口位址引導程式pc中,通過呼叫中斷獲取對bios的操作
;用int 7ch 中斷來封裝bios埠得到的時間
assume cs:code
code segment
start:
;將程式匯入到相應的中斷位址中去
mov ax, cs
mov ds, ax
mov si, offset show
mov ax, 0
mov es, ax
mov di, 200h
mov cx, offset o - offset show
cld
rep movsb
;更新中斷向量表
mov ax, 0
mov es, ax
mov word ptr es:[7ch*4], 200h
mov word ptr es:[7ch*4+2], 0
mov ax, 4c00h
int 21h
show:
jmp short s0
db 9,8,7,4,2,0
db 'yy/mm/dd hh:mm:ss'
s0:mov ax, cs
mov es, ax
mov ax, 0b800h
mov ds, ax
mov di, 202h ;di記錄讀出的單元個數.es:[di]為單元號
mov si, 208h ;ds:[si]記錄得到資料的十位數值,ds:[si+1]記錄得到資料的個位數值
s: cmp di, 208h ;比較讀出數的個數
ja s1 ;讀完了則跳轉到顯示子模組
;取出相應單元的資料
mov al, es:[di]
out 70h, al
in al, 71h
;將資料轉換
mov ah, al
mov cl, 4
shr ah, cl
and al, 01111b
add al, 30h
add ah, 30h
;把資料儲存到ds段中
mov es:[si], ah
mov es:[si+1], al
inc di
add si, 3
jmp short s
s1:mov si, 208h ;si記錄ds段中資料的個數
mov bp, 0 ;ss:[160*12+40*2+bp]接收顯示的資料
s2:cmp si, 218h
ja over
mov al, es:[si]
mov ah, 00000010b
mov word ptr ds:[160*12+40*2+bp], ax
inc si
add bp, 2
jmp s2
over:
iret
o:nop
code ends
end start
我所認知的BIOS 反彙編BIOS之 開始
我所認知的 bios 反彙編bios 之 開始 lightseed 3 11 2010上海 我想稍微懂點 bios 的人都應該知道,目前 blog 裡面的文章其實都是很基礎很基礎的東西。說白了呢就是沒什麼技術含量,說好聽點呢,就是對技術的細節理解比較深刻。總之就是只能看看,不能排上實際用途了。不得不...
LAMP對埠的簡單操作
之前學習了lamp是如何使用的,期間我也是頭暈暈的 但也是看下來了 首先是檢視特定的埠 1 netstat anl grep 80 2 lsof i 80 前面的可不用 3 kill pid pid在2中可獲取 說到lamp我這裡就說下它的啟動方式 service httpd restart 啟動a...
逆向 x86彙編串操作指令集合
rep cx 0,重複執行字串指令 repz repe cx 0,且zf 1,相同時,重複執行字串指令 repnz repne cx 0,且zf 0,不同時,重複執行字串指令 cld 置df 0,edi std 置df 1,edi 1 movs movsb movsw movsd 1 從esi拷貝資...