[Chapter 12] - [实验12]

需要注意的几个错误

  1. 200H和202H,要在编辑器中末尾加H,以注明是HEX,否则会将do0程序安装到错误位置
  2. 设置中断向量表时,要注明mov word ptr,否则会报错operand must have size,因为未注明要向多大的数据(几个内存单元)进行写入
;实验12:编写0号中断的处理程序

;火箭(送卫星进预定位置) - do0的安装程序
assume cs:code
code segment
start:	mov ax,cs
		mov ds,ax
		mov si,offset do0

		mov ax,0
		mov es,ax
		mov di,200h

		mov cx,offset do0end-offset do0
		cld
		rep movsb;仅复制,并不是call,所以此时不会执行do0,故下句的es不用重新设置

		;设置中断向量表
		mov word ptr es:[0*4+2],0
		mov word ptr es:[0*4],200h

		mov ax,4c00h
		int 21h


	;卫星(搭载在火箭内) - do0
	do0:jmp short do0start
		db 'divide error!'
		do0start:	mov ax,cs
					mov ds,ax
					mov si,202h

					mov ax,0b800h
					mov es,ax
					mov di,12*160+36*2

					mov cx,13
				s:	mov al,[si]
					mov es:[di],al
					inc si
					add di,2
					loop s

					mov ax,4c00h
					int 21h
	do0end:nop

code ends
end start

;验证
a 2000:0
mov bl,1
mov ax,ffff
div bx;构造一个除法溢出(因为FFFF除以1之后,商和结果无法存储在仅有8位的al和ah中)

结果符合预期
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值