主题:安装中断处理时出现的问题,高手帮看看,谢谢!
我在安装int9中断的时候遇到的问题,大概是这样的
中断服务程序安装后可以执行,但是执行完了以后就死机了,大概是跳到了一个无效地址.
代码是这样的,
org 0x100
jmp start
pro:
push ax ; 保护现场
push bx
push cx
push dx
sti ;开中断
mov ah,3 ;中断服务,在屏幕上打印一个A
mov bh,0
int 0x10
mov ah,0x09
mov al,'A'
mov bh,0
int 0x10
inc dl
mov bh,0
int 0x10
cli ;关中断
pop dx ;还原现场
pop cx
pop bx
pop ax
iret ;中断返回
start:
mov ax,0
mov ds,ax
mov ax,cs
cli
mov [0x0026],ax ;修改中断向量表
mov ax,[pro]
mov [0x0024],ax
sti
mov ax,cs
mov ds,ax
mov ah,4c ;返回DOS
int 0x21
以上代码是用NASM编译后在MS-DOS下运行的,是直接考到软盘上在虚拟机上运行,然后又重新启动计算机在真机环境下一试过,一样,都会死机(虚拟机就不工作了).
中断服务程序安装后可以执行,但是执行完了以后就死机了,大概是跳到了一个无效地址.
代码是这样的,
org 0x100
jmp start
pro:
push ax ; 保护现场
push bx
push cx
push dx
sti ;开中断
mov ah,3 ;中断服务,在屏幕上打印一个A
mov bh,0
int 0x10
mov ah,0x09
mov al,'A'
mov bh,0
int 0x10
inc dl
mov bh,0
int 0x10
cli ;关中断
pop dx ;还原现场
pop cx
pop bx
pop ax
iret ;中断返回
start:
mov ax,0
mov ds,ax
mov ax,cs
cli
mov [0x0026],ax ;修改中断向量表
mov ax,[pro]
mov [0x0024],ax
sti
mov ax,cs
mov ds,ax
mov ah,4c ;返回DOS
int 0x21
以上代码是用NASM编译后在MS-DOS下运行的,是直接考到软盘上在虚拟机上运行,然后又重新启动计算机在真机环境下一试过,一样,都会死机(虚拟机就不工作了).