各位大虾好,这是在下写的一个安装中断处理程序的程序
这个程序类型码为 7ch
功能在将小写字母转化为大写字母
程序比较简单,所以没加入太多的注释
我的问题是,当程序写入完毕,
执行完 int 7ch 时,下一条语句却并不是 mov ax,4c00h
而是DB 68
请问这是怎么回事呢?
assume cs:code
data segment
db 'i seek you',0
data ends
code segment
w:
mov ax,cs
mov ds,ax
mov si,offset change
mov ax,0
mov es,ax
mov di,200h
mov cx,offset changeend-offset change
rep movsb
mov word ptr es:[7ch],200h
mov word ptr es:[7ch+2],0
mov ax,data
mov ds,ax
int 7ch
mov ax,4c00h
int 21h
change:
push cx
push si
mov si,0
mov ch,0
s: mov al,[si]
mov bl,97
cmp al,bl
ja ok
jmp short s
ok:mov bl,122
cmp al,bl
je ok1
jmp short s
ok1: and al,1101111b ;大写字母转变为小写字母
inc si
mov cl,[si]
jcxz done
jmp short s
done:
pop si
pop cx
iret
changeend:
nop
code ends
end w
------解决方案--------------------------------------------------------
每个中断向量是4字节,所以各个中断在中断向量表中的地址是中断号乘以4。