;編寫並安裝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