code segment
assume cs:code,ds:code,es:code
100h
start: jmp set09h
lockkey equ 1
subaddr dw key_on
pointer dw ?
counter db ?
keyword db 11h,15h,19h
key_len equ $-keyword
old09h dd ?
new09h proc near
push ax
push si
push ds
push es
push cs
pop ds
mov ax,0040h
mov es,ax
in al,60h
test al,80h
jnz bios09h
jmp word ptr subaddr
bios09h:pop es
pop ds
pop si
pop ax
stijmp cs:dword ptr old09h
key_on: test byte ptr es:[0017h],08h
jz bios09h
mov subaddr,offset key_off
mov pointer,offset keyword
exit: in al,61h
push ax
or al,80h
out 61h,al
pop ax
out 61h,al
mov al,20h
out 20h,al
pop es
pop ds
pop si
pop ax
iret
key_off:mov si,pointer
cmp al,[si]
jnz error
inc pointer
dec counter
jnz exit
mov subaddr,offset key_on
jmp bios09h
error: cmp si,offset keyword
jz exit
mov pointer,offset keyword
mov counter,key_len
jmp key_off
new09h endp
set09h: cli
push cs
pop ds
mov ax,3509h
int 21h
mov si,offset old09h
mov [si],bx
mov [si+2],es
mov dx,offset new09h
mov ax,2509h
int 21h
mov dx,offset set09h
add dx,260
int 27h
code ends
endmov ax,3509h
int 21h
mov si,offset old09h
mov [si],bx
mov [si+2],es
mov dx,offsetnew09h
mov ax,2509h
int 21h
多執行緒程式謹慎給 DB 加鎖
servera 起 n 個執行緒,每個執行緒執行相同的邏輯,就是去 db 取一個待執行的任務來執行,也就是常見的任務佇列。具體邏輯是 由於程式存在 bug,但是執行緒會異常退出,異常退出時和 db 之間的連線並沒有關閉 潛意識裡認為執行緒退出連線會自動關閉,進而鎖會被釋放 而異常恰好出現在 lock...
遠端連線redis並給redis加鎖
遠端連線redis並給redis加鎖 假設兩臺redis伺服器,ip分別為 192.168.1.101和192.168.1.103,如何在101上通過redis cli訪問103上的redis呢?在遠端連線103之前,先講下redis cli的幾個關鍵引數 www.2cto.com 用法 redis...
程序間通訊如何加鎖
程序間通訊有一種 共享記憶體 方式,大家有沒有想過,這種通訊方式中如何解決資料競爭問題?我們可能自然而然的就會想到用鎖。但我們平時使用的鎖都是用於解決執行緒間資料競爭問題,貌似沒有看到過它用在程序中,那怎麼辦?關於程序間的通訊方式估計大多數人都知道,這也是常見的面試八股文之一。關於程序間通訊方式和優...
關於IOS鍵盤樣式(給新手)
1 英文鍵盤 這三個預設都顯示字母表。2 數字鍵盤 3 電子郵箱鍵盤 4 沒有符號的英文鍵盤 5 沒有小數點的數字鍵盤 6 全鍵盤的數字鍵盤 7 帶符號的數字鍵盤 8 推特鍵盤 最近做了一個自定義鍵盤,首先是要知道ios裝置各種鍵盤的高度,下面就來說一下怎麼獲取鍵盤的高度。主要是利用鍵盤彈出時的通知...
如何給給字元陣列賦值
要說c語言中最讓我覺得棘手的,就是字元陣列的,c語言中沒有字串這個型別,字串只能存放在字元型陣列中。那麼,我們先來看看如何給一個一維陣列賦值 1 定義的時候直接賦值 char arr 10 這種寫法也可以直接省略花括號,直接寫成 char arr 10 kitty 2 初始化列表,把各個字元依次賦給...