回复:[第1楼]
------------------
assume cs:codesg
codesg segment
start:
mov ax,cs
mov ds,ax
mov si,offset lp
mov ax,0
mov es,ax
mov di,0200h
mov cx,offset lpend - offset lp
cld
rep movsb
mov word ptr es:[7ch*4],0200h
mov word ptr es:[7ch*4+2],0000h
;;;;;;;;;;以上代码实现了将中断例程拷贝到0000:0200开始的地址处,并设置了中断向量表项;;;;;;;;;;;;;;;;;
mov ax,0b800h
mov es,ax
mov di,12*160+40;显存的段地址
mov bx,offset s - offset se;这里是差值,为负值。
mov cx,5
s:mov byte ptr es:[di],'l'
mov byte ptr es:[di+1],0a0h
add di,2
int 7ch;调用中断例程
se:nop
mov ax,4c00h
int 21h
lp:push bp
mov bp,sp
dec cx
jcxz lpret
add [bp+2],bx ;change the ip's value
lpret:
pop bp
iret
lpend:nop
codesg ends
end start |