assume cs:code
code segment
start:
mov ax,cs
mov ds,ax
mov si,offset do7c
mov ax,0
mov es,ax
mov di,200h
mov cx,offset done-offset do7c
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
do7c:push bp
mov bp,sp
dec cx
jcxz ok
add [bp+2],bx
ok:pop bp
iret
done:nop
code ends
end start
;编写并安装int 7ch的中断例程,功能为完成loop指令
;cx=循环次数,bx=位移
;在屏幕中间显示80个‘!’
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
se:nop
mov ax,4c00h
int 21h
code ends
end start
第一个是安装程序,第二个是测试程序。
和往常一样没有太大的区别。
测试结果: