組合語言 實驗十五 安裝新的int9中斷例程

2021-10-04 15:59:09 字數 2551 閱讀 3536

安裝乙個新的int 9 中斷例程,功能:在dos下,按下「a」鍵後,除非不再鬆開,如果鬆開,就顯示滿螢幕的「a」,其他的鍵照常處理。

首先要安裝新的中斷處理程式到0:0204h,然後改變入口位址。新的int 9中斷例程中仍要呼叫原來的int 9中斷,pushf call dword ptr cs:[200h],使用這兩條指令直接呼叫int 9中斷。

按下乙個鍵時產生的掃瞄碼稱為通碼,鬆開乙個鍵產生的掃瞄碼稱為斷碼

斷碼=通碼+80h。

我們對8086cpu的指令系統進行一下總結。

1.資料傳送指令

比如,mov、push、pop、pushf、popf、xchg等都是資料傳送指令,這些指令實現暫存器和記憶體、暫存器和暫存器之間的單個資料傳送。

2.算術運算指令

比如,add、sub、adc、sbb、inc、dec、cmp、idiv、aaa等都是算術運算指令,這些指令實現暫存器和記憶體中的資料的算術運算。他們的執行結果影響標誌暫存器的sf、zf、of、pf、cf、af位。

3.邏輯指令

比如,and、or、not、xor、test、shl、shr、sal、sar、rol、ror、rcl、rcr等都是邏輯指令。除了not指令外,他們的執行結果都影響標誌暫存器的相關標誌位。

4.轉移指令

可以修改ip,或同時修改cs和ip的指令系統統稱為轉移指令。轉移指令分為以下幾類。

(1)無條件轉移指令,比如,jmp;

(2)條件轉移指令,比如,jcxz、je、jb、ja、jna、jnb等;

(3)迴圈指令,比如,loop;

(4)過程,比如,call、ret、retf;

(5)中斷,比如,int、iret。

5.處理機控制指令

這些指令對標誌暫存器或其他處理機狀態進行設定,比如,cld、std、cli、sti、nop、clc、cmc、stc、hlt、wait、esc、lock等都是處理機控制指令。

6.串處理指令

這些指令對記憶體中的批量資料進行處理,比如,movsb、movsw、cmps、scas、lods、stos等。若要使用這些指令方便地進行批量資料的處理,則需要和rep、repe、repne等字首指令配合使用。

《組合語言》實驗 實驗

注意 db定義位元組型別變數,乙個位元組資料百佔1個位元組單度元,讀完乙個,偏移量加1 dw定義字型別變問量,乙個字資料佔2個位元組單元,讀完乙個,權偏移量加2 dd定義雙字型別變數版,乙個雙字資料佔4個位元組單元,讀完乙個,權偏移量加4 一開始用了乙個暫存器表示所有項,但是後來發現四個資料佔的位元...

組合語言實驗1 2

小寫字母變為大寫字母 data segment notic db please input the word 0ah,0dh data ends code segment assume cs code,ds data start mov ax,data mov ds,ax 填入ds mov cx,1...

組合語言實驗1 3

輸入10個字元,並反序輸出 data segment dd1 db 10 dup data ends code segment assume cs code,ds data start mov ax,data mov ds,ax lea bx,dd1 dd1的有效位址放入bx中 mov cx,0ah...