assume cs:codesg
codesg segment
start:
mov ax, cs ;设置中断要执行的代码段
mov ds, ax
mov si, offset do0 ;设置中断代码的开始位置
mov ax, 0 ;设置要复制到的目的地址处
mov es, ax
mov di, 200H
mov cx, offset do0end - offset do0 ;代码的大小
cld ;设置si和di的方向
rep movsb ;开始复制
mov ax, 0
mov es, ax ;设置中断向量表使其指向要执行的中断代码处
mov word ptr es:[0*4], 200H ;要执行的代码的IP
mov word ptr es:[0*4+2], 0 ;要执行的代码的CS
mov ax, 4c00H
int 21H
do0:
jmp short do0start
db 'Hello World Interrupt First!'
do0start:
mov ax, cs
mov ds, ax
mov si, 202H
mov ax, 0B800H
mov es, ax
mov di, 12*160+34*2
mov cx, 28
s:
mov al, [si]
mov es:[di], al
inc si
add di, 2
loop s
mov ax, 4c00H
int 21H
do0end:
nop
codesg ends
end start
第一个DOS中断处理程序(中断号为0)
最新推荐文章于 2023-12-28 11:44:53 发布