您的位置:首页 > 其它

汇编学习历程(int中断学习)

2013-04-19 21:48 781 查看
            以下是我学习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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息