利用int 9 中斷程式,在螢幕中間依次顯示a-z,按下esc改變顯示的顏色
程式如下所示
assume cs:code
stack segment
db 128 dup(0)
stack ends
data segment
dw 0,0
data ends
code segment
start:
mov ax,stack ;設定棧
mov ss,ax
mov sp,128
mov ax,data ;設定資料段
mov ds,ax
mov ax,0
mov es,ax
push es:[9*4] ;將原來的int 9的中斷程式的入口位址儲存在ds:0和ds:2的單元中
pop ds:[0]
push es:[9*4+2]
pop ds:[2]
mov word ptr es:[9*4],offset int9 ;在中斷向量當中設定新的int 9的中斷程式的入口位址
mov es:[9*4+2],cs
;迴圈顯示a-z的所有字元
mov ax,0b800h
mov es,ax
mov ah,'a'
s: mov byte ptr es:[160*12+40*2],ah
call delay ;延遲呼叫
inc ah
cmp ah,'z'
;比較有沒有到z
jna s ;不高於z,就跳到s處
mov ax,0
;將中斷向量表中的int 9中斷程式的入口恢復為原來的位址
mov es,ax
push ds:[0]
pop es:[9*4]
push ds:[2]
pop es:[9*4+2]
mov ax,4c00h
int 21h
delay:
push ax ;使用cup迴圈空執行,實現延遲時間的作用
push dx ;讓dx做高位,ax為低位,然後這樣去減
mov dx,1h
mov ax,0
s1: sub ax,1
sbb dx,0
cmp ax,0
jne s1
cmp dx,0
jne s1
pop dx
pop ax
ret;自定義int 9中斷程式
int9:
push ax ;儲存臨時變數
in al,60h ;從埠60h讀出鍵盤的輸入
pushf ;下面要用用於call模擬原先的int9後的
pushf ;用於修改if=0、tf=0 操作
pop bx
and bh,11111100b
push bx
popf
call dword ptr ds:[0]
;呼叫完這個模擬的int9後,會執行iret操作
;會先popf出第一次pushf的值
cmp al,1
jne int9ret ;al!=1就返回
inc byte ptr es:[160*12+40*2+1] ;將屬性值加1,改變了顏色
int9ret:
pop ax
iret
code ends
end start
程式執行結果,可以看到第二行一行的z是藍色的,就是按了esc輸出的結果 JQuery 彈出層,始終顯示在螢幕正中間
1.讓層始終顯示在螢幕正中間 樣式 html model jquery js 讓指定的div始終顯示在螢幕正中間 function letdivcenter divname show html html 點我讓div始終顯示在螢幕中間a 這是內容 不過沒有垂直居中顯示 希望各位高手,能夠補充。小弟在...
QT 獲取螢幕大小,視窗中間顯示
qdesktopwidget desktop a.desktop int screen number desktop primaryscreen qrect rect desktop screengeometry screen number 得到螢幕解析度的大小,並設定 所需標頭檔案 include...
scrollView 重新整理顯示在中間的問題
樓主你好,我大概是和你遇見了同樣的問題,你可以靈活處理一下,不要去管那個滾動條的位置了,我試過了,用scrollviewmsg.scrollto 0,0 一點效果沒有。因為我的scrollview裡面listview的上面還有其他的控制項,所以我想到乙個辦法就是使得一開始的時候就讓上面其中乙個控制項...