⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 debtable.asm

📁 X86 GX1 BOOTLOAD代码 ,支持WINCE操作系统!
💻 ASM
📖 第 1 页 / 共 4 页
字号:
;**************************************************************************
;*
;*  DEBTABLE.ASM
;*
;*  Copyright (c) 1999-2001 National Semiconductor Corporation.
;*  All Rights Reserved.
;*
;*  Function:
;*    Set up a generic handler for every interrupt.  The handlers
;*    output their number on I/O port 80h.
;*
;*  $Revision:: 1   $
;**************************************************************************

.486P

	INCLUDE MACROS.INC
	INCLUDE DEF.INC
	INCLUDE PORT80.INC
	INCLUDE strings.inc
	INCLUDE OPTIONS.INC
	INCLUDE	NVRAMTOK.INC

_TEXT SEGMENT PUBLIC use16 'CODE'
	EXTERN genericInt15:NEAR

;**************************************************************************
;*
;*	set_timer
;*
;*	pulse count = 1193180/(desired # of ticks per second)
;*	standard 18.2 ticks/sec = 1193180/18.2 = 65535 -> so set pulse
;*	count to 0 for 10000 ticks/sec, 1193180/10000 = 119.3 or
;*	approx. 0077h
;*
;*	Entry:
;*	  AX = pulse count value
;*
;*	Exit:
;*	Destroys:
;*
;**************************************************************************
set_timer	PROC	NEAR
	cli
	push	ax
	mov	al, RW_CMD
	out	CMD_REG, al
	pop	ax

	out	CHAN_0, al
	mov	al,ah
	IOPAUSE
	out	CHAN_0, al
	IOPAUSE
	sti
	ret
set_timer	ENDP

;**************************************************************************
;*
;*	intTable
;*
;*	Entry:
;*	Exit:
;*	Destroys:
;*
;**************************************************************************
intTable PROC NEAR PUBLIC
	push	bx
	push	ax
	push	ds

	push	ds
	mov	ax, 40h
	mov	ds, ax
	mov	ax, 000h
	mov	ds:[10h], ax
	pop	ds

	push	0
	pop	ds

	mov	bx, 0
	mov	si, OFFSET ITABLE	

goHere:
	mov	ax, cs:[si]
	mov	ds:[bx], ax
	add	bx, 2
	add	si, 2
	mov	ax, 0f000h
	mov	ds:[bx], ax
	add	bx, 2
	cmp	bx, 0400h 		; 256 int's
	jne	goHere

	mov	bx, 9h
	shl	bx, 2
	mov	ax, OFFSET intRTC
	mov	ds:[bx], ax
	add	bx, 2
	mov	ax, 0f000h
	mov	ds:[bx], ax

	mov	bx, 15h
	shl	bx, 2
	mov	ax, OFFSET genericInt15
	mov	ds:[bx], ax
	add	bx, 2
	mov	ax, 0f000h
	mov	ds:[bx], ax

	mov	bx, 8
	shl	bx, 2
	mov	ax, OFFSET int8_handler
	mov	ds:[bx], ax
	add	bx, 2
	mov	ax, 0f000h
	mov	ds:[bx], ax

	mov	al, 011h		; Enable PIC for PC usage
	out	PIC_MASTER_PORT0, al	; icw1
	out	PIC_SLAVE_PORT0, al

	mov	al, 08h			; icw2
	out	PIC_MASTER_PORT1, al
	mov	al, 070h
	out	PIC_SLAVE_PORT1, al

	mov	al, 04h			; icw3
	out	PIC_MASTER_PORT1, al
	mov	al, 02h
	out	PIC_SLAVE_PORT1, al

	mov	al, 01h			; icw4
	out	PIC_MASTER_PORT1, al
	out	PIC_SLAVE_PORT1, al

;;; in a WBT system this is not needed,  QNX etc... would probably like this.
	call	set_timer

	mov	dx,21h
	in	al,dx
	mov	al, 10111000b

	IOPAUSE
	out	dx,al

	mov	dx,0A1h
	in	al,dx
	mov	al, 11111111b
	IOPAUSE
	out	dx,al
	

	sti
	pop	ds
	pop	ax
	pop	bx
	jmp 	bx
intTable ENDP

ITABLE LABEL WORD
	dw	OFFSET int00p
	dw	OFFSET int01p
	dw	OFFSET int02p
	dw	OFFSET int03p
	dw	OFFSET int04p
	dw	OFFSET int05p
	dw	OFFSET int06p
	dw	OFFSET int07p
	dw	OFFSET int08p
	dw	OFFSET int09p
	dw	OFFSET int0ap
	dw	OFFSET int0bp
	dw	OFFSET int0cp
	dw	OFFSET int0dp
	dw	OFFSET int0ep
	dw	OFFSET int0fp
	dw	OFFSET int10p
	dw	OFFSET int11p
	dw	OFFSET int12p
	dw	OFFSET int13p
	dw	OFFSET INT14ENTRY
	dw	OFFSET int15p
	dw	OFFSET int16p
	dw	OFFSET INT17ENTRY
	dw	OFFSET int18p
	dw	OFFSET int19p
	dw	OFFSET int1Axx
	dw	OFFSET int1bp
	dw	OFFSET int1cp
	dw	OFFSET int1dp
	dw	OFFSET int1ep
	dw	OFFSET int1fp
	dw	OFFSET int20p
	dw	OFFSET int21p
	dw	OFFSET int22p
	dw	OFFSET int23p
	dw	OFFSET int24p
	dw	OFFSET int25p
	dw	OFFSET int26p
	dw	OFFSET int27p
	dw	OFFSET int28p
	dw	OFFSET int29p
	dw	OFFSET int2ap
	dw	OFFSET int2bp
	dw	OFFSET int2cp
	dw	OFFSET int2dp
	dw	OFFSET int2ep
	dw	OFFSET int2fp
	dw	OFFSET int30p
	dw	OFFSET int31p
	dw	OFFSET int32p
	dw	OFFSET int33p
	dw	OFFSET int34p
	dw	OFFSET int35p
	dw	OFFSET int36p
	dw	OFFSET int37p
	dw	OFFSET int38p
	dw	OFFSET int39p
	dw	OFFSET int3ap
	dw	OFFSET int3bp
	dw	OFFSET int3cp
	dw	OFFSET int3dp
	dw	OFFSET int3ep
	dw	OFFSET int3fp
	dw	OFFSET int40p
	dw	OFFSET int41p
	dw	OFFSET int42p
	dw	OFFSET int43p
	dw	OFFSET int44p
	dw	OFFSET int45p
	dw	OFFSET int46p
	dw	OFFSET int47p
	dw	OFFSET int48p
	dw	OFFSET int49p
	dw	OFFSET int4ap
	dw	OFFSET int4bp
	dw	OFFSET int4cp
	dw	OFFSET int4dp
	dw	OFFSET int4ep
	dw	OFFSET int4fp
	dw	OFFSET int50p
	dw	OFFSET int51p
	dw	OFFSET int52p
	dw	OFFSET int53p
	dw	OFFSET int54p
	dw	OFFSET int55p
	dw	OFFSET int56p
	dw	OFFSET int57p
	dw	OFFSET int58p
	dw	OFFSET int59p
	dw	OFFSET int5ap
	dw	OFFSET int5bp
	dw	OFFSET int5cp
	dw	OFFSET int5dp
	dw	OFFSET int5ep
	dw	OFFSET int5fp
	dw	OFFSET int60p
	dw	OFFSET int61p
	dw	OFFSET int62p
	dw	OFFSET int63p
	dw	OFFSET int64p
	dw	OFFSET int65p
	dw	OFFSET int66p
	dw	OFFSET int67p
	dw	OFFSET int68p
	dw	OFFSET int69p
	dw	OFFSET int6ap
	dw	OFFSET int6bp
	dw	OFFSET int6cp
	dw	OFFSET int6dp
	dw	OFFSET int6ep
	dw	OFFSET int6fp
	dw	OFFSET int70p
	dw	OFFSET int71p
	dw	OFFSET int72p
	dw	OFFSET int73p
	dw	OFFSET int74p
	dw	OFFSET int75p
	dw	OFFSET int76p
	dw	OFFSET int77p
	dw	OFFSET int78p
	dw	OFFSET int79p
	dw	OFFSET int7ap
	dw	OFFSET int7bp
	dw	OFFSET int7cp
	dw	OFFSET int7dp
	dw	OFFSET int7ep
	dw	OFFSET int7fp
	dw	OFFSET int80p
	dw	OFFSET int81p
	dw	OFFSET int82p
	dw	OFFSET int83p
	dw	OFFSET int84p
	dw	OFFSET int85p
	dw	OFFSET int86p
	dw	OFFSET int87p
	dw	OFFSET int88p
	dw	OFFSET int89p
	dw	OFFSET int8ap
	dw	OFFSET int8bp
	dw	OFFSET int8cp
	dw	OFFSET int8dp
	dw	OFFSET int8ep
	dw	OFFSET int8fp
	dw	OFFSET int90p
	dw	OFFSET int91p
	dw	OFFSET int92p
	dw	OFFSET int93p
	dw	OFFSET int94p
	dw	OFFSET int95p
	dw	OFFSET int96p
	dw	OFFSET int97p
	dw	OFFSET int98p
	dw	OFFSET int99p
	dw	OFFSET int9ap
	dw	OFFSET int9bp
	dw	OFFSET int9cp
	dw	OFFSET int9dp
	dw	OFFSET int9ep
	dw	OFFSET int9fp
	dw	OFFSET inta0p
	dw	OFFSET inta1p
	dw	OFFSET inta2p
	dw	OFFSET inta3p
	dw	OFFSET inta4p
	dw	OFFSET inta5p
	dw	OFFSET inta6p
	dw	OFFSET inta7p
	dw	OFFSET inta8p
	dw	OFFSET inta9p
	dw	OFFSET intaap
	dw	OFFSET intabp
	dw	OFFSET intacp
	dw	OFFSET intadp
	dw	OFFSET intaep
	dw	OFFSET intafp
	dw	OFFSET intb0p
	dw	OFFSET intb1p
	dw	OFFSET intb2p
	dw	OFFSET intb3p
	dw	OFFSET intb4p
	dw	OFFSET intb5p
	dw	OFFSET intb6p
	dw	OFFSET intb7p
	dw	OFFSET intb8p
	dw	OFFSET intb9p
	dw	OFFSET intbap
	dw	OFFSET intbbp
	dw	OFFSET intbcp
	dw	OFFSET intbdp
	dw	OFFSET intbep
	dw	OFFSET intbfp
	dw	OFFSET intc0p
	dw	OFFSET intc1p
	dw	OFFSET intc2p
	dw	OFFSET intc3p
	dw	OFFSET intc4p
	dw	OFFSET intc5p
	dw	OFFSET intc6p
	dw	OFFSET intc7p
	dw	OFFSET intc8p
	dw	OFFSET intc9p
	dw	OFFSET intcap
	dw	OFFSET intcbp
	dw	OFFSET intccp
	dw	OFFSET intcdp
	dw	OFFSET intcep
	dw	OFFSET intcfp
	dw	OFFSET intd0p
	dw	OFFSET intd1p
	dw	OFFSET intd2p
	dw	OFFSET intd3p
	dw	OFFSET intd4p
	dw	OFFSET intd5p
	dw	OFFSET intd6p
	dw	OFFSET intd7p
	dw	OFFSET intd8p
	dw	OFFSET intd9p
	dw	OFFSET intdap
	dw	OFFSET intdbp
	dw	OFFSET intdcp
	dw	OFFSET intddp
	dw	OFFSET intdep
	dw	OFFSET intdfp
	dw	OFFSET inte0p
	dw	OFFSET inte1p
	dw	OFFSET inte2p
	dw	OFFSET inte3p
	dw	OFFSET inte4p
	dw	OFFSET inte5p
	dw	OFFSET inte6p
	dw	OFFSET inte7p
	dw	OFFSET inte8p
	dw	OFFSET inte9p
	dw	OFFSET inteap
	dw	OFFSET intebp
	dw	OFFSET intecp
	dw	OFFSET intedp
	dw	OFFSET inteep
	dw	OFFSET intefp
	dw	OFFSET intf0p
	dw	OFFSET intf1p
	dw	OFFSET intf2p
	dw	OFFSET intf3p
	dw	OFFSET intf4p
	dw	OFFSET intf5p
	dw	OFFSET intf6p
	dw	OFFSET intf7p
	dw	OFFSET intf8p
	dw	OFFSET intf9p
	dw	OFFSET intfap
	dw	OFFSET intfbp
	dw	OFFSET intfcp
	dw	OFFSET intfdp
	dw	OFFSET intfep
	dw	OFFSET intffp


;**************************************************************************
;*
;*	genericInterrupt
;*
;*	Entry:
;*	Exit:
;*	Destroys:
;*
;**************************************************************************
genericInterrupt	PROC FAR PUBLIC
	push	ds
	push	ax
	push	dx			; Save callers registers
	push	ecx

	pop	ecx
	pop	dx			; Restore callers registers
	pop	ax
	pop	ds
	iret
genericInterrupt	ENDP

;**************************************************************************
;*
;*	intRTC
;*
;*	Entry:
;*	Exit:
;*	Destroys:
;*
;**************************************************************************
intRTC	PROC FAR PUBLIC
	cli
	push	ds
	push	ax
	push	dx			; Save callers registers
	push	cx

	mov	ax,40h
	mov	ds,ax
	ASSUME	ds:nothing

	mov	al, 0ch
	out	070h, al
	in	al, 071h

	mov	al, 020h
	out	0A0h, al		; End of Int 
	out	020h, al		; End of Int

	pop	cx
	pop	dx			; Restore callers registers
	pop	ax
	pop	ds
	sti
	iret
intRTC	ENDP



;**************************************************************************
;*
;*	intxxp
;*
;*	Entry:
;*	Exit:
;*	Destroys:
;*
;**************************************************************************


int00p PROC NEAR

	push	ax
	mov	al, 000h
	out 080h,al
	nop
	pop	ax

	out 080h,al
	xchg al, ah
	out 080h, al
	xchg al, ah
	jmp genericInterrupt

int00p ENDP



int01p PROC NEAR


	push	ax
	mov	al, 001h
	out 080h,al
	nop
	pop	ax

	out 080h,al
	xchg al, ah
	out 080h, al
	xchg al, ah
	jmp genericInterrupt

int01p ENDP



int02p PROC NEAR public

	push	ax
	mov	al, 002h
	out 080h,al
	nop
	pop	ax

	out 080h,al
	xchg al, ah
	out 080h, al
	xchg al, ah
	jmp genericInterrupt

int02p ENDP



int03p PROC NEAR

	push	ax
	mov	al, 003h
	out 080h,al
	nop
	pop	ax

	out 080h,al
	xchg al, ah
	out 080h, al
	xchg al, ah
	jmp genericInterrupt

int03p ENDP



int04p PROC NEAR

	push	ax
	mov	al, 004h
	out 080h,al
	nop
	pop	ax

	out 080h,al
	xchg al, ah
	out 080h, al
	xchg al, ah
	jmp genericInterrupt

int04p ENDP



int05p PROC NEAR public

	push	ax
	mov	al, 005h
	out 080h,al
	nop
	pop	ax

	out 080h,al
	xchg al, ah
	out 080h, al
	xchg al, ah
	jmp genericInterrupt

int05p ENDP



int06p PROC NEAR public

	push	ax
	mov	al, 006h
	out 080h,al
	nop
	pop	ax

	out 080h,al
	xchg al, ah
	out 080h, al
	xchg al, ah
jmp $
	jmp genericInterrupt

int06p ENDP



int07p PROC NEAR

	push	ax
	mov	al, 007h
	out 080h,al
	nop
	pop	ax

	out 080h,al
	xchg al, ah
	out 080h, al
	xchg al, ah
	jmp genericInterrupt

int07p ENDP



int08p PROC NEAR public

	push	ax
	mov	al, 008h
	out 080h,al
	nop
	pop	ax

	out 080h,al
	xchg al, ah
	out 080h, al
	xchg al, ah
	jmp genericInterrupt

int08p ENDP



int09p PROC NEAR
public hardwareInt1
hardwareInt1::
	push	ax
	mov	al, 009h
	out 080h,al
	nop
	pop	ax

	out 080h,al
	xchg al, ah
	out 080h, al
	xchg al, ah
	jmp genericInterrupt

int09p ENDP



int0ap PROC NEAR

	push	ax
	mov	al, 00ah
	out 080h,al
	nop
	pop	ax

	out 080h,al
	xchg al, ah
	out 080h, al
	xchg al, ah
	jmp genericInterrupt

int0ap ENDP



int0bp PROC NEAR

	push	ax
	mov	al, 00bh
	out 080h,al
	nop
	pop	ax

	out 080h,al
	xchg al, ah
	out 080h, al
	xchg al, ah
	jmp genericInterrupt

int0bp ENDP



int0cp PROC NEAR

	push	ax
	mov	al, 00ch
	out 080h,al
	nop
	pop	ax

	out 080h,al
	xchg al, ah
	out 080h, al
	xchg al, ah
	jmp genericInterrupt

int0cp ENDP



int0dp PROC NEAR

	push	ax
	mov	al, 00dh
	out 080h,al
	nop
	pop	ax

	out 080h,al
	xchg al, ah
	out 080h, al
	xchg al, ah
	jmp genericInterrupt

int0dp ENDP



int0ep PROC NEAR
public hardwareInt6
hardwareInt6::
	push	ax
	mov	al, 00eh
	out 080h,al
	nop
	pop	ax

	out 080h,al
	xchg al, ah
	out 080h, al
	xchg al, ah
	jmp genericInterrupt

int0ep ENDP



int0fp PROC NEAR

	push	ax
	mov	al, 00fh
	out 080h,al
	nop
	pop	ax

	out 080h,al
	xchg al, ah
	out 080h, al
	xchg al, ah
	jmp genericInterrupt

int0fp ENDP



int10p PROC NEAR

	push	ax
	mov	al, 010h
	out 080h,al
	nop
	pop	ax

	out 080h,al
	xchg al, ah
	out 080h, al
	xchg al, ah
	jmp genericInterrupt

int10p ENDP



int11p PROC NEAR public

	push	ds

	sti

	mov	ax, 40h
	mov	ds, ax
	xor	eax,eax
	mov	ax, WORD PTR ds:[10h]
	pop	ds

	clc
	retf	02

int11p ENDP



int12p PROC NEAR public

	sti
;	push	ds
;	mov	ax, 40h
;	mov	ds, ax
;	mov	ax, ds:[13h]
;	pop	ds

	mov ax, 0280h

	clc
	retf	02

int12p ENDP



int13p PROC NEAR public

	push	ax
	mov	al, 013h
	out 080h,al
	nop
	pop	ax

	out 080h,al
	xchg al, ah
	out 080h, al
	xchg al, ah
; dummy floppy in case any disk code is  not installed
	mov	ah,01h			; not installed
	sti				; re-enable ints
	stc	
	retf	2


int13p ENDP



int14p PROC NEAR
	push	ax
	mov	al, 014h
	out 080h,al
	nop
	pop	ax

	out 080h,al
	xchg al, ah
	out 080h, al
	xchg al, ah
	jmp genericInterrupt

int14p ENDP



int15p PROC NEAR

	push	ax
	mov	al, 015h
	out 080h,al
	nop
	pop	ax

	out 080h,al
	xchg al, ah
	out 080h, al
	xchg al, ah
	jmp genericInterrupt

int15p ENDP



int16p PROC NEAR

	sti
	cmp	ah, 01h
	jne	NotCheckKey
	xor	ax, ax
	cmp	al, 0		; Set ZF
	retf	02
NotCheckKey:
	cmp	ah, 00h
	jne	NotReadKey
	mov	ax, 0
	clc
	retf	02
NotReadKey:
	cmp	ah, 02h
	jne	DontKnowKey
	mov	al, 0		; indicate no keys being pressed
	retf	02
DontKnowKey:
	stc
	retf	02
int16p ENDP



int17p PROC NEAR
	push	ax
	mov	al, 017h
	out 080h,al
	nop
	pop	ax

	out 080h,al
	xchg al, ah
	out 080h, al
	xchg al, ah
	jmp genericInterrupt

int17p ENDP



int18p PROC NEAR

	msg	'No boot device present, halting.'
	crlf
	
	PORT80	POST_BootFailed			;post_1fh
	
Finished:
	hlt
	jmp	Finished

int18p ENDP

int19p PROC NEAR
	push	ax
	mov	al, 019h
	out 080h,al
	nop
	pop	ax

	out 080h,al
	xchg al, ah
	out 080h, al
	xchg al, ah
	jmp genericInterrupt

int19p ENDP



INT14ENTRY PROC NEAR
	push	ax
	mov	al, 014h
	out 080h,al
	nop
	pop	ax

	out 080h,al
	xchg al, ah
	out 080h, al
	xchg al, ah
	jmp genericInterrupt

INT14ENTRY ENDP

INT17ENTRY PROC NEAR
	push	ax
	mov	al, 017h
	out 080h,al
	nop
	pop	ax

	out 080h,al
	xchg al, ah
	out 080h, al
	xchg al, ah
	jmp genericInterrupt

INT17ENTRY ENDP

;**************************************************************************
;*
;*	int8_handler
;*
;*	Entry:
;*	Exit:
;*	Destroys:
;*
;**************************************************************************
int8_handler PROC FAR
	push	eax
	push	ecx
	push	ds
	push	dx
	push	bx
	mov	ax, 40h
	mov	ds, ax
	ASSUME	ds:nothing

	inc	WORD PTR ds:[6Ch]
	jnz	check_rollover
	inc	WORD PTR ds:[6Eh]

check_rollover:
	cmp	WORD PTR ds:[6Eh], 018h
	jnz	time_flop
	cmp	WORD PTR ds:[6Ch], 0b0h
	jnz	time_flop

	mov	WORD PTR ds:[6Eh], 0
	mov	WORD PTR ds:[6Ch], 0
	mov	BYTE PTR ds:[70h], 1

time_flop:	cmp	BYTE PTR ds:[40h], 0
	je	time_flop_done
	dec	BYTE PTR ds:[40h]
	jnz	time_flop_done
	mov	dx, 3f2h
	mov	al, 0
	out	dx, al
	and	BYTE PTR ds:[3fh], 0f0h

time_flop_done:
	int	1ch

	mov	al, 20h
	out	20h, al

	pop	bx
	pop	dx
	pop	ds
	pop	ecx
	pop	eax
	iret
int8_handler ENDP

int1AXX PROC NEAR

	push	ax
	mov	al, 01ah
	out 080h,al
	nop
	pop	ax

	out 080h,al
	xchg al, ah
	out 080h, al
	xchg al, ah
	jmp genericInterrupt

int1AXX ENDP

int1bp PROC NEAR

	push	ax
	mov	al, 01bh
	out 080h,al
	nop
	pop	ax

	out 080h,al
	xchg al, ah
	out 080h, al
	xchg al, ah
	jmp genericInterrupt

int1bp ENDP


int1cp PROC NEAR

;	push	ax
;	mov	al, 01ch
;	out 080h,al
;	nop
;	pop	ax

;	out 080h,al
;	xchg al, ah
;	out 080h, al
;	xchg al, ah
	jmp genericInterrupt

int1cp ENDP



int1dp PROC NEAR

	push	ax
	mov	al, 01dh
	out 080h,al
	nop
	pop	ax

	out 080h,al
	xchg al, ah
	out 080h, al
	xchg al, ah
	jmp genericInterrupt

int1dp ENDP



int1ep PROC NEAR

	push	ax
	mov	al, 01eh
	out 080h,al
	nop
	pop	ax

	out 080h,al
	xchg al, ah
	out 080h, al
	xchg al, ah
	jmp genericInterrupt

int1ep ENDP



int1fp PROC NEAR

	push	ax
	mov	al, 01fh
	out 080h,al
	nop
	pop	ax

	out 080h,al
	xchg al, ah
	out 080h, al
	xchg al, ah
	jmp genericInterrupt

int1fp ENDP



int20p PROC NEAR

	push	ax
	mov	al, 020h
	out 080h,al
	nop
	pop	ax

	out 080h,al
	xchg al, ah
	out 080h, al
	xchg al, ah
	jmp genericInterrupt

int20p ENDP



int21p PROC NEAR

	push	ax
	mov	al, 021h
	out 080h,al
	nop
	pop	ax

	cmp	ah, 030h
	jne	not30
	mov	ax, 0807h
	jmp	genericInterrupt
not30:
	cmp	ah, 4ah
	jne	not4a

not4a:

	out 080h,al
	xchg al, ah
	out 080h, al
	xchg al, ah
	jmp genericInterrupt

int21p ENDP



int22p PROC NEAR

	push	ax
	mov	al, 022h
	out 080h,al
	nop
	pop	ax

	out 080h,al
	xchg al, ah
	out 080h, al
	xchg al, ah
	jmp genericInterrupt

int22p ENDP



int23p PROC NEAR

	push	ax
	mov	al, 023h
	out 080h,al
	nop
	pop	ax

	out 080h,al
	xchg al, ah
	out 080h, al
	xchg al, ah
	jmp genericInterrupt

int23p ENDP



int24p PROC NEAR

	push	ax
	mov	al, 024h
	out 080h,al
	nop
pop	ax

	out 080h,al
	xchg al, ah
	out 080h, al
	xchg al, ah
	jmp genericInterrupt

int24p ENDP



int25p PROC NEAR

	push	ax
	mov	al, 025h
	out 080h,al
	nop
pop	ax

	out 080h,al
	xchg al, ah
	out 080h, al
	xchg al, ah
	jmp genericInterrupt

int25p ENDP



int26p PROC NEAR

	push	ax
	mov	al, 026h
	out 080h,al
	nop
pop	ax

	out 080h,al
	xchg al, ah
	out 080h, al
	xchg al, ah
	jmp genericInterrupt

int26p ENDP



int27p PROC NEAR

	push	ax
	mov	al, 027h
	out 080h,al
	nop
pop	ax

	out 080h,al
	xchg al, ah
	out 080h, al
	xchg al, ah

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -