86彙編BIOS埠的簡單操作

2021-06-08 23:40:54 字數 1739 閱讀 9445

操作的基本原理:
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拷貝資...