汇编语言中断编程步骤

一、编写中断程序

1、调用movsb指令将中断处理程序载入内存的指定位置;
1)使用offset指令计算doIntEnd-doInt获取中断处理程序的代码长度;
2)doIntEnd位置使用nop指令。
2、修改中断向量表项为指定位置;
1)使用word ptr确定内存单元;
2)使用es=0来定位中断向量表首地址。
3、编写中断处理程序。
1)与普通子程序编写规则相同;
2)使用iret返回。

二、编写应用程序

1、与call调用子程序类似;
2、使用int命令调用相应中断码的中断;
3、可屏蔽中断只有在IF为1时才被响应。

三、实例:

编写、安装中断7ch的中断例程

一、编写中断程序

E:\mywork\asm\pd03.asm
C:\>edit pd03.asm
; 功能:求一word型数据的平方
; 参数:(ax)=要计算的数据
; 返回值: dx,ax中存放结果的高16位和第16位
assume cs:code

code segment

start:
	; 安装数据
	mov ax,cs
	mov ds,ax
	mov ax,0
	mov es,ax
	mov cx,offset int7chEnd-offset int7ch
	mov si,offset int7ch
	mov di,200h
	cld
	rep movsb

	;写入中断向量表
	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

int7ch:
	mul ax
	iret
int7chEnd: nop

code ends

end start
C:\>

二、编写应用程序

E:\mywork\asm\pd02.asm
C:\>edit pd02.asm
; 求2*3456^2的值
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
C:\>

三、编译、连接、运行

//先安装7ch中断程序pd03
C:\>pd03
//再调试应用程序pd02
C:\>debug pd02.exe
-u
076A:0009 B8004C MOV AX,4C00
-g 9
AX=8000
DX=016C
076A:0009 B8004C MOV AX,4C00
-q
C:\>

(全文完)

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ycjnx

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值