編寫並安裝int7ch中斷例程,功能爲完成loop指令的功能

 

;編寫並安裝int7ch中斷例程,功能爲完成loop指令的功能
;應用舉例:在屏幕中間顯示80個'!'
;bx放置s到se的長度,調用int7ch時,當前的cs與ip入棧
;(cs與標號s處的段地址相同,ip爲se處的偏址)
; se處的偏址加上bx即爲s處的偏址
assume cs:code
code segment
start:mov ax,0b800h
      mov es,ax
      mov di,160*12
      mov bx,offset s-offset se
      mov cx,80
   s: mov byte ptr es:[di],'!'
      add di,2
      int 7ch   ;完成循環功能,找到標號s的段地址與偏址
   se:nop

;安裝中斷程序
   mov ax,cs     ;複製中斷程序代碼到0:200處
   mov ds,ax
   mov si,offset do7ch
   mov ax,0
   mov es,ax
   mov di,200h

   mov cx,offset do7chend-offset do7ch
   cld
   rep movsb
  
   mov ax,0             ;設置中斷向量表
   mov es,ax
   mov word ptr es:[7ch*4],200h
   mov word ptr es:[7ch*4+2],0

   mov ax,4c00h
   int 21h
 
  do7ch:push bp
         mov bp,sp  ;棧頂指針值賦給bp
  dec cx
  jcxz lpret
  add [bp+2],bx
  lpret: pop bp
         iret
 do7chend:nop
 
code ends
end start

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章