安裝乙個新的int9中斷例程,功能:在dos下,按下「a」鍵後,除非不在鬆開,如果鬆開,就顯示滿螢幕的「a」;其他的鍵照常處理。
assume cs:code
code segment
start:
sti ;防止在設定中斷向量表之前出現有鍵盤輸入導致錯諉
mov ax, cs
mov ds, ax
mov si, offset int9
mov ax, 0
mov es, ax
mov di, 204h ;[200]與[202]要存放原int 9的ip和cs
mov cx, offset int9_end - offset int9
cld ;正向複製
rep movsb
mov ax, es:[9*4]
mov es:[200h], ax
mov ax, es:[9*4+2]
mov es:[202h], ax ;儲存原int 9中斷例程入口位址
mov word ptr es:[9*4], 204h
mov word ptr es:[9*4+2], 0 ;設定中斷向量衿
sti ;if設定1
mov ax, 4c00h
int 21h
int9:
push ds
push ax
push cx
push si
in al, 60h ;接受60h來的掃瞄砿
pushf
call dword ptr cs:[200h]
cmp al, 1eh+80h ;a是否被鬆開
jne int9_ok ;不是鬆開正常處理
mov ax, 0b800h
mov ds, ax
mov si, 0
mov cx, 2000 ;打滿一屏是2000個字笿
print_char:
mov byte ptr [si], 'a'
add si, 2
loop print_char
int9_ok:
pop si
pop cx
pop ax
pop ds
iret
int9_end:
nopcode ends
end start
組合語言學習
參考書籍 組合語言 王爽 著 清華大學出版社 選單導航 一 彙編基礎知識 二 暫存器和常見彙編指令演示 一 基礎知識 1 彙編指令是機器指令的助記符,同機器指令一一對應 2 每一種cpu都有自己的彙編指令集 3 cpu可以直接使用的資訊在儲存器中存放 4 在儲存器中指令和資料沒有任何區別,都是二進位...
組合語言學習
持續更新 彙編指令 1.mov指令 mov是乙個傳送指令,可以實現以下操作 有一點需要注意,資料不能直接傳給段暫存器,比如mov ds,100h就是錯誤的。但是可以將其他暫存器中的值賦給段暫存器。段暫存器有cs,ds,ss,es等。如果你想知道為什麼,那就可以去了解一下關於每條指令的硬體實現。後面還...
組合語言(王爽)實驗十五
安裝乙個新的int 9中斷例程 功能 按下a鍵後,除非不鬆開,如果鬆開,就顯示滿螢幕的a,其他鍵照常處理 assume cs code stack segment db 128 dup 0 stack ends code segment start mov ax,stack mov ss,ax mo...