以下是我學習int中斷的乙個歷程,劫持除法溢位中斷!
assume cs:code,ds:data,ss:stack
code segment
start:
mov ax,data
mov ds,ax
mov ax,stack
mov ss,ax
mov sp,32 ;設定相關暫存器
push ds ;儲存ds段暫存器資料
mov ax,cs
mov ds,ax
mov si,offset _substart ;設定起始資料傳輸位址為cs:_substart
mov ax,0h
mov es,ax
mov di,200h ;設定目的傳送位址為0:200
mov cx,offset _subend - offset _substart ;設定傳送長度
cld ;設定傳送方向
rep movsb ;開始傳送
pop ds
mov ax,0
mov es,ax
mov word ptr es:[0*4],200h
mov word ptr es:[0*4+2],0 ;修改中斷向量表
mov ax,4c00h
int 21h
_substart: ;中斷處理開始
jmp ok
db 'this is a test!','$' ;定義輸出資料
ok:push ax
push bx
push ds ;儲存相關暫存器
mov ax,0
mov ds,ax
mov dx,202h
mov ah,9
int 21h ;呼叫21中斷顯示字串
pop ds
pop bx
pop ax ;恢復堆疊
mov ax,4c00h
int 21h ;程式退出
_subend:nop
code ends
stack segment
dw 16 dup(0)
stack ends
data segment
db 'this is a sssdfasd$'
data ends
end start
外中斷 彙編學習筆記
要及時處理外設的輸入,顯然需要解決兩個問題 外設的輸入隨時可能發生,cpu如何得知?cpu從何處得到外設的輸入?外設的輸入不直接送入記憶體和cpu,而是送入相關的介面晶元的埠中 cpu向外設的輸出也不是直接送入外設,而是先送入埠中,再由相關的晶元送到外設。cpu還可以向外設輸出控制命令,而這些控制命...
彙編學習歷程 記憶體定位與資料拷貝
學習彙編的乙個比較綜合性的程式,將data段中的資料複製到table段中。並計算平均工資。程式如下 assume cs code,ds data,es table,ss stack data segment db 1975 1976 1977 1978 1979 1980 1981 1982 198...
組合語言 關於int中斷問題的思考
看著王爽老師的書 對int,iret,和棧的深入理解 讓用int中斷實現loop迴圈 原版的 assume cs code code segment start mov ax,0b800h mov es,ax mov di,160 12 mov bx,offset s offset se mov c...