关于修改 int 21h 中断的问题

jolam 2010-06-24 01:55:23
本人想扩展 int 21h 中断,但在修改 21h 中断程序入口地址的时候出现以下情况:

the ntvdm cpu has encountered an illegal instruction

代码如下:


data segment
clear db 0dh,0ah,24h
data ends

sta segment stack
dw 40h dup(?)
top label word
sta ends

code segment
assume cs:code,ds:data,es:data,ss:sta

output proc far

push dx
push ax
push cx

cmp ah,0d1h
je twoopt
;cmp ah,0d2h
;je 8opt
;cmp ah,0d3h
;je 10opt
;cmp ah,0d4h
;je i10opt
;cmp ah,0d5h
;je 16opt

int 6fh
je retr

twoopt:mov cx,16
twolp:ror bx,1
mov dx,bx
and dx,1
add dx,30h
mov ah,2
int 6fh
loop twolp

pop cx
pop ax
pop dx

retr:Ret
output endp



main proc far
mov ax,data
mov ds,ax
mov ax,sta
mov ss,ax
lea sp,top

mov ah,35h
mov al,21h
int 21h

mov ax,es
mov ds,ax
mov dx,bx
mov ah,25h
mov al,6fh
int 21h

lea dx,output
mov ax,code
mov ds,ax
mov ah,25h
mov al,6eh
int 6fh

mov bx,11100011b
mov ah,0d1h
int 21h

mov ah,4ch
int 6fh
main endp

code ends
end main
...全文
105 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
呃..失误.这是改0号中断...你的是21...都怪我..
  • 打赏
  • 举报
回复
assume cs:code

code segment
start:
mov ax,cs
mov ds,ax
mov si,offset do0 ;设置ds:si指向源地址
mov ax,0
mov es,ax
mov di,200h ;设置es:di指向源地址
mov cx,offset do0end - offset do0 ;设置cx为传输长度
cld ;设置传输方向为正
rep movsb
;mov ax,0
;mov es,ax
mov word ptr es:[0*4],200h ;设置中断向量的入口地址的偏移地址
mov word ptr es:[0*4+2],0 ;设置中断向量的入口地址的段地址
mov ax,0f000h
mov dx,22d
mov cx,10d
div cx ;此4句是为了做个溢出的除法
mov ax,4c00h
int 21h
do0: jmp short do0start
db "aaaaaa error!"
do0start:
mov ax,cs
mov ds,ax
mov si,202h ;设置ds:si指向字符串
mov ax,0B800h
mov es,ax
mov di,12*0A0h+2*32 ;设置es:di指向显存空间的中间位置
mov cx,13d ;设置字符串长度
s: mov al,[si]
mov es:[di],al
inc si
add di,2
loop s
mov ax,4c00h
int 21h
do0end: nop
code ends
end start


今天刚看到这里...

就是改中断向量表中的值..把0号中断里面的指向改为你的自定义的中断处理程序..
zara 2010-06-24
  • 打赏
  • 举报
回复
修改 int21h 中断功能,为什么不能拦截 int21h 进行嵌入处理,而是要将整个的 int21h 搬移到其它中断号上,又没有再对 int21h 进行重新定义。况且,刚才看了下 int6fh,xp/sp3 的命令行窗口下看到其中断向量非 0,直接把它盖了,恐怕不妥。

21,459

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧