编写并安装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

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