如何給鍵盤加鎖

2021-04-01 21:04:57 字數 1717 閱讀 4355

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 初始化列表,把各個字元依次賦給...