调用中断例程就像调用子程序相似,雷同call ret。相对应的是int n iret。
iret相当于
pop ip
pop cs
popf
---------------------------
assume cs:code
code segment
start:
mov ax,3456
int 7ch ;调用了自定义的中断
add ax,ax
adc dx,dx
mov ax,4c00h
int 21h
code ends
end start
---------------------------
assume cs:code
code segment
start:
mov ax,cs
mov ds,ax
mov si,offset sqr
mov ax,0
mov es,ax
mov di,200h
mov cx,offset sqrend-offset sqr
cld
rep movsb
;-------------------------------
;以上是把代码段拷贝到
;拷贝到指定的200h段地址
;处,为什么要这么做呢?
;主要受限于7ch*4的取值
;而中断向量表是取0000:0000
;开始的1kb中,是有范围的
;-------------------------------
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
sqr:
mul ax
iret
sqrend:
nop
code ends
end start
---------------------------
以上是我的理解
附加:bios和dos是通过ah来决定调用哪个子程序的