1. 程式人生 > >匯編試驗十二 編寫0號中斷的處理程序

匯編試驗十二 編寫0號中斷的處理程序

ima clas 技術分享 源程序 ges 地址 font assume 源地址

要求:除法溢出的時候,在屏幕中心處顯示overflow!

分析:

  • 0號中斷,對應的中斷入口地址中的程序可以不用修改,放到內存0:空余位置(空余位置一般是0000::0200~0000:02FF)於是,就將顯示字符串的程序放到這裏;
  • 用一個do0安裝程序,將這個中斷程序復制到內存0000:0200那裏去;格式是:es:di 目的地址,ds:si源程序,cld復制方向,rep movsb 復制
  • 子程序(中斷程序)中,顯示的字符串,不能放到一個獨立的代碼段,而是放到一個中斷程序本身裏面,因為復制程序運行完後,內存釋放,代碼段中的內容可能改變;
  • 重新寫一個程序故意除法溢出

效果:

技術分享

Source Code:

技術分享
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指向目的地址 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,4c00h int 21h do0: jmp short do0start db "overflow!" do0start: mov ax,cs mov ds,ax mov si,202h ;ds:si指向字符串,復制到0:200處 mov ax,0b800h mov es,ax mov di,
12*160+36*2 ;顯示位置 mov cx,9 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
View Code 技術分享
assume cs:code

code segment
start:
mov ax,1000h
mov bh,
1 div bh code ends end start
View Code

匯編試驗十二 編寫0號中斷的處理程序