【第十三章】int指令

13.1 int指令

int指令的格式为:int n,n为中断类型码,它的功能是引发中断过程

CPU执行int n指令,相当于引发一个n号中断的中断过程,执行过程如下:

  1. 取中断类型码n
  2. 标志寄存器入栈,IF=0,TF=0
  3. CS、IP入栈
  4. (IP)=(n4),(CS)=(n4+2)

可以在程序中使用int指令调用任何一个中断的中断处理程序

13.2 编写供应用程序调用的中断例程

用int指令模拟loop

assume cs:code

;int 07ch是中断码
;在[07ch]中存储的是中断程序的偏移地址,[07ch+2]中存储的是中断程序的段地址
;先将中断程序放到内存中,内存中地址为0:200h
;再将0:200放入07ch对应的中断标量表中
;因为我们要用其模拟loop效果,所以设置好cx,之后将其放入对应的显存中
;然后int 07ch
code segment
main:	;源地址
	mov ax,code
	mov ds,ax
	mov si,offset myloop0

	;目的地址
	mov ax,0
	mov es,ax
	mov di,200
	mov cx,offset myloop0end - offset myloop0
	cld
	rep movsb

	;将0:200放入0:07ch*4中
	mov ax,0
	mov es,ax
	mov word ptr es:[07ch * 4],200
	mov word ptr es:[07ch * 4 + 2],0

	mov cx,80
	mov ax,0b800h
	mov es,ax
	mov si,10*160
	mov bx,offset pr - offset pr0
pr:	mov byte ptr es:[si],'!'
	add si,2
	int 7ch
pr0:	nop

	mov ax,4c00h
	int 21h

myloop0:	push bp
	mov bp,sp
	dec cx
	jcxz lpret
	add [bp+2],bx
lpret:	pop bp
	iret
myloop0end:	nop
code ends

end main