組合語言學習 實驗十五

2021-10-03 15:26:12 字數 1331 閱讀 2642

安裝乙個新的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...