調用中斷例程就像調用子程序相似,雷同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來決定調用哪個子程序的