模拟0号中断程序

来源:互联网 发布:淘宝店铺导航条装修 编辑:程序博客网 时间:2024/06/16 03:07

当cpu执行除法时发生溢出时,执行该程序。添上了注释,其中有一个问题还没有解决,有时间再来看看,毕竟我看来还是个比较重要的问题。本来寒假抽空打算把上次写的一个U disk Virus 写下注释,也算作为win32SDK的告别,看起来时间不允许了~~

 

assume cs:codesg

codesg segment
main:      mov ax
,cs                ;设置源地址
                mov ds,ax                
                mov si
,offset do0
                mov ax
,0                ;设置目的地址,即是0:200h 
                mov es,ax
                mov di
,200h
                mov cx
,offset do0end-offset do0        ;设置cx,传送个数
                cld
                rep movsb

                mov ax
,0                ;设置中断向量表
                mov es,ax
                mov word ptr es:
[0],200h        ;注意低地址存放偏移地址 高地址存放段地址
                mov word ptr es:[2],0h

                mov ax
,4c00h
                int 21h

do0:        jmp short dostart            
;下条语句是定义字符串 执行时跳过
do0word:    db 'overflow!'                ;必须把字符串放在内存空闲的地方
do0start:   mov ax,cs                ;把overflow放在显存当中
               mov ds,ax
               mov si
,202h                ;设置字符串首地址 如果设置offset do0word等不到正确地址 不知为何
               mov ax,0b800h
               mov es
,ax
               mov di
,12*160+36*2
               mov cx,
9
 
s:            mov al
,[si]
               mov es:
[di],al
                   mov es:[di+1],02h
               inc si
               add di
,2
loop s

               mov ax
,4c00h
               int 21h
do0end:    nop

codesg ends

end main

 需要注意以下几点:

1.安装程序分为两步:第一步 把do0的代码拷至0;200H,注意拷贝代码时设置cx的技巧;第二步:设置中断向量

2.设置字符串首地址问题,待解决

原创粉丝点击