1. 程式人生 > >組合語言 第三版 王爽 實驗12 編寫0號終端的處理程式

組合語言 第三版 王爽 實驗12 編寫0號終端的處理程式

題目:

編寫0號中斷的處理程式,使得在除法溢位發生時,在螢幕中間顯示字串“divide error!”,然後返回dos

程式碼:

assume cs:code
code segment
start:
	mov ax,cs     ;要執行的d0段複製到空白記憶體處作為中斷處理程式
	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中斷碼的中斷向量
	mov word ptr es:[0*4],200H
	mov word ptr es:[0*4+2],0

	mov ax,0000H	;溢位測試
	mov dx,1H		;結果為10000H 溢位
	mov bx,1H
	div bx

	mov ax,4c00h
	int 21h

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
結果:

輸入p 返回dos

注意:

do0開始的jmp short指令佔兩個位元組,如果寫成 jmp指令,佔3個位元組!