【第十二章】实验12

1.PNG

  assume cs:code

;设置除法溢出的中断指令
;首先将do0的这段代码写入0:0200位置处(在do0结尾设立另一个标号,用offset do0End-do0计算do0长度)
;之后写出do0程序,程序要在0b800:15*160的位置打印"divide error!"
code segment
main:	;设置源地址
	mov ax,code
	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

	;将中断向量表中0项地址改为do0的地址
	mov ax,0
	mov es,ax
	mov word ptr es:[0],200h
	mov word ptr es:[2],0

	;测试程序
	mov ax,1000
	mov bh,1
	div bh
	
	mov ax,4c00h
	int 21h

do0:	jmp short do0Start
	db 'Divide Error!',0
do0Start:	;设置寄存器指向do0中字符串
	mov ax,0
	mov ds,ax
	mov si,202h

	;设置字符串放入地址
	mov ax,0b800h
	mov es,ax
	mov di,12*160+36*2

	;将字符串放入显存中
s:	cmp byte ptr [si],0
	je short end1
	mov ah,[si]
	mov es:[di],ah
	inc si
	add di,2
	jmp short s
	
end1:	mov ax,4c00h
	int 21h

do0End:nop	
code ends
end main