;--用7ch中断例程完成jmp near ptr s指令的功能,用bx向中断例程传送转移位移。
;--应用举例:在屏幕的第12行,显示data段中以0结尾的字符串
assume cs:code,ss:stack,ds:data
data segment
db 'conversation',0
data ends
stack segment
dw 8 dup(0)
stack ends
code segment
start:
mov ax,stack
mov ss,ax
mov sp,10h
;----改中断向量表,使int7c指向0:200处----;
mov ax,0
mov es,ax
;mov ax,7ch*4
mov di,word ptr 7ch*4
mov es:[di],word ptr 200h
mov es:2[di],word ptr 0h
;----将中断程序放到0:200处----
mov cx,offset int7cend - int7c
mov ax,cs
mov ds,ax
mov si,offset int7c
mov ax,0
mov es,ax
mov di,word ptr 200h
cld
rep movsb
;----显示data段中以0结尾的字符串----
mov bx,offset s - offset ok ;--int返回时的 跳转距离--
mov ax,data
mov ds,ax
sub si,si
mov di,offset byte ptr 160*11
s:
sub ch,ch
mov cl,[si]
jcxz ok
mov ax,0b800h
mov es,ax
mov es:[di],cl
inc si
add di,2
int 7ch
;jmp near ptr s
ok:
nop
mov ax,4c00h
int 21h
int7c:
push bp
mov bp,sp
add [bp+2],bx
;int7ci:
pop bp
iret
int7cend:
nop
code ends
end start