供應用程序調用的中斷 (7CH - 平方運算)

; 安裝中斷7CH的中斷例程
; 功能:求一word型數據的平方
; 參數:(ax) = 要計算的數據
; 返回值:dx、ax中存放結果的高16位和低16位
; 舉例:2 * 123^2

assume	cs:code

code	segment
start:
;=====================================
	mov	ax, 0			
	mov	es, ax			
	mov	di, 200H		; 中斷程序寫入0000:0200地址
	mov	ax, cs
	mov	ds, ax
	mov	si, offset do7CH	; ds:si 指向7CH中斷開始
	mov	cx, offset do7CHend - offset do7CH
	cld				; 遞增方向,寫入
	rep 	movsb			; 7CH中斷代碼循環寫入es:di處

; 安裝7CH中斷
	xor	ax, ax
	mov	es, ax
	mov	word ptr es:[7CH*4], 200H	; 將0000:0200H地址寫入7CH中斷向量表中
	mov	word ptr es:[7CH*4 + 2], 0

;---- 測試程序 ---- begin
	mov	ax, 123	
	int	7CH	; 調用7CH中斷,計算ax中數據的平方
	add	ax, ax
	adc	dx, dx	; *2的高位,防止有進位
;---- 測試程序 ---- end
	
	mov	ax, 4C00H
	int	21H

; 7CH中斷實現
do7CH:	mul	ax	; 計算ax中數據的平方
	iret
do7CHend: nop

;=====================================
code	ends
	end	start

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章