亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? int3.asm

?? RS232 中斷開發 C 語言源程序 包內包含C源代碼以及匯編子程序
?? ASM
字號:
;----------------------------------------------------------------------------
;    INT3.ASM		August 23,1987
;
; Data input/output via RS-232/2 (COM 2)
;      * initialization
;      * ISR
;----------------------------------------------------------------------------
int3_TEXT	SEGMENT byte public 'CODE'
int3_TEXT	ENDS
_DATA		SEGMENT byte public 'DATA'
_DATA		ENDS
_BSS		SEGMENT byte public 'BSS'
_BSS		ENDS
;
DGROUP		GROUP	_DATA,_BSS

            ASSUME cs:int3_TEXT, ds:DGROUP, es:DGROUP
;
;----------------------------------------------------------------------------
;
_DATA		SEGMENT byte public 'DATA'
old_int3_CS	dw	0		;old interrupt 4 CS
old_int3_IP	dw	0		;old interrupt 4 IP
_DATA		ENDS
;
;----------------------------------------------------------------------------
;	PROGRAM EXTERNALS
;
	extrn	_com2_input_queue:byte
	extrn	_com2_in_queue_ptr:word

	extrn	_com2_rs232_error:word
	extrn	_com2_port_status:word
	extrn 	_com2_interrupt_status:word

	extrn	_com2_out_queue_ptr:word
	extrn	_com2_out_queue_out:word
	extrn	_com2_output_queue:byte
;
;----------------------------------------------------------------------------
;	PROGRAM EQUATES
;
BASE_ADR	EQU	02F8h		;COM 2 port base address
BUFSIZ		EQU	2048		;size of data queues
;
; Don't enable the xmit interrupt unless there is something to xmit
;
;        1 ='s enable interrupt
;        0 ='s disable interrupt
;
;   Bits  7 to 4      ------    unused
;              3      ------    change in modem status register
;              2      ------    data reception error
;              1      ------    transmit register empty
;              0      ------    data received
;
INT_CODE	EQU	1101B		;receive, error and modem change
					;interrupts are enabled here

RTS_ON		EQU	0bh		;interrupts on, RTS on, DTR on
RTS_OFF		EQU	09h		;interrupts on, RTS off, DTR on
;
;----------------------------------------------------------------------------
;    Initialize the 8250 UART depending on parameter given as argument
;	and enable communication interrupts via INT 4 (primary com. port)
;
;   BIT    7   6   5          4    3         2                  1     0
;        { baud rate }      { parity } { stop bits }         { word length }
;    110 = 0   0   0   NONE = 0    0    1 =  0       7 bits =   1      0
;    150 = 0   0   1    or    1    0    2 =  1       8 bits =   1      1
;    300 = 0   1   0    ODD = 0    1
;    600 = 0   1   1   EVEN = 1    1
;   1200 = 1   0   0
;   2400 = 1   0   1
;   4800 = 1   1   0
;   9600 = 1   1   1
;
;----------------------------------------------------------------------------
;
int3_TEXT	SEGMENT byte public 'CODE'
;
	PUBLIC  _com2_set_interrupt
_com2_set_interrupt	PROC	FAR
	push	bp		;save the registers used
	mov	bp,sp		;make a copy for variable access

	push	ax		;save all registers used
	push	bx
	push	dx
	push	ds
	push	es

	mov	ah,35h		;get vector function
	mov	al,0bh		;want INT 3 CS and IP vector
	int	21h		;execute DOS function call
	mov	old_int3_CS,es	;ES contains the CS for INT 3
	mov	old_int3_IP,bx	;BX contains the IP for INT 3

	mov	dx,offset INT3	;point DS:DX to COM routine
	mov	ax,seg    INT3	;segment
	mov	ds,ax		;point DS
	mov	al,0bh		;INT 3 vector
	mov	ah,25h		;function to change vector
	int	21h		;execute DOS function call

	mov	ax,[bp+6]	;grab baud rate and parms
	mov	dx,1		;0 = COM 1    1 = COM 2
	int	14h		;initialize RS232 port to given parameters
				;(warning: COM interrupts are left disabled)

	mov	dx,BASE_ADR+4	;modem control register (2fc)
	mov	al,RTS_ON 	;INT's on(bit3), RTS on(bit1), DTR on(bit0)
	out	dx,al

	mov	dx,BASE_ADR+1	;interrupt enable register (2f9)
	mov	al,INT_CODE	;which interrupts to enable
	out	dx,al		;enable interrupts on 8250

	mov	dx,BASE_ADR	;point at recieve buffer register(2f8)
	in	al,dx		;read any trash in buffer

	mov	dx,BASE_ADR+5	;line status register(2fd)
	in	al,dx		;read any trash in status register

	mov	dx,BASE_ADR+6	;modem status register (2fe)
	in	al,dx		;read any trash in status register

	in	al,21h		;find out which interrupts are currently on
	and	al,0f7h		;enable bit 3 (INT 3 ='s SECONDARY COM. PORT)
	out	21h,al		;rewrite new interrupt flags

	pop	es		;restore registers used
	pop	ds
	pop	dx
	pop	bx
	pop	ax
	pop	bp
	ret
_com2_set_interrupt	ENDP
;
;----------------------------------------------------------------------------
;
;  This routine restores the interrupt vector which was modified by the
;	_set_interrupt routine so don't call this routine without 1st
;	 calling the other routine.
;
	PUBLIC  _com2_restore_interrupt
_com2_restore_interrupt	PROC	FAR
	push	ax		;save all registers used
	push	dx
	push	ds

	mov	dx,old_int3_IP	;point DS:DX to COM routine
	mov	ax,old_int3_CS	;segment
	mov	ds,ax		;point DS
	mov	al,0bh		;INT 3 vector
	mov	ah,25h		;function to change vector
	int	21h		;execute DOS function call

	in	al,21h		;read current interrupt status
	or	al,08h		;disable bit 3 (INT 3)
	out	21h,al		;rewrite new interrupt status

	pop	ds		;restore all registers used
	pop	dx
	pop	ax
	ret
_com2_restore_interrupt	ENDP
;
;----------------------------------------------------------------------------
; This is the interrupt routine that is executed with every
;   INT 3.
;
;  Options currenty implemented are:
;	1. receive interrupt
;	2. data reception error interrupt
;	3. transmit holding register empty interrupt
;	4. change in modem status register
;
;	Receive interrupt places characters in _input_queue at _in_queue_ptr
;		bytes into the queue.
;
;	Data reception error places the error int _rs232_error.
;
;	Transmit interrupt xmits characters in _output_queue at _out_queue_ptr
;		bytes into the queue.
;
;	Modem status register change stores its status in port_status
;
;----------------------------------------------------------------------------
;
	public	INT3

INT3	PROC	FAR
	push	ds		;always save anything you use in an INT routine
	push	di
	push	dx
	push	cx
	push	ax

	mov	ax, SEG _DATA		;make sure your pointing to the correct
	mov	ds,ax			; segment otherwise it's lockup city.
;----------------------------------------------------------------------------
pending_interrupt:
	mov	dx,BASE_ADR+2		;interrupt ident. register (2fa)
	in	al,dx			;read whose requesting service

	mov	ah,00h			;zero high byte
	mov	_com2_interrupt_status,ax;store status

	cmp	al,00h			;modem interrupt?
	je	status_int		;YES! jump

	cmp	al,02h			;is it a transmit buf empty interrupt?
	je	transmit_int		;YES! jump

	cmp	al,04h			;is it a recieve interrupt?
	je	receive_int		;YES! jump

	cmp	al,06h			;is it reception error interrupt?
	je	reception_error		;YES! jump

	jmp	leave_interrupt		;no more left.... so leave
;
;----------------------------------------------------------------------------
;	Modem status register change
;
status_int:
	mov	dx,BASE_ADR+6		;modem status register (2fe)
	in	al,dx

	mov	ah,00h			;zero high byte
	mov	_com2_port_status,ax	;store status
	jmp	leave_interrupt		;go see if any interrupts pending
;
;----------------------------------------------------------------------------
; Receive buffer routine
;
receive_int:
	mov	dx,BASE_ADR		;COM 1 recieve buffer (2f8)
	in	al,dx			;read the character in

	mov	dl,al			;save character in another register for now

	mov	di,[_com2_in_queue_ptr]	;grab input pointer

	mov	_com2_input_queue[di],dl;and place the char in the queue

	cmp	di,BUFSIZ		;check for queue wrap
	jge	reset_queue		;reset if past end or equal

	inc	word ptr [_com2_in_queue_ptr] ;bump input pointer
	jmp	leave_interrupt
reset_queue:
	mov	word ptr [_com2_in_queue_ptr],0 ;reset pointer to beginning
;----------------------------------------------------------------------------
leave_interrupt:
	mov	dx,BASE_ADR+2		;interrupt ident. register (2fa)
	in	al,dx			;read whose request service

	and	al,01h			;is there a pending interrupt?
	jz	pending_interrupt	;YES! jump
ack_interrupt:
	mov	al,20h			;EOI code
	out	20h,al			;acknowledge END OF INTERRUPT

	pop	ax			;put em back so the machine doesn't
	pop	cx			; DIE!
	pop	dx
	pop	di
	pop	ds
	iret				;interrupt return
;
;----------------------------------------------------------------------------
; Reception error routine
;
reception_error:
	mov	dx,BASE_ADR+5		;line status register (2fd)
	in	al,dx			; read which error occured

	mov	ah,00h			;zero high byte
	mov	_com2_rs232_error,ax	;save error flags for someone else

	jmp	leave_interrupt		;go look for pending interrupts
;
;----------------------------------------------------------------------------
; Transmit buffer empty routine
;
transmit_int:

	mov	ax,[_com2_out_queue_ptr];grab input pointer
	mov	di,[_com2_out_queue_out];grab output pointer

	cmp	ax,di			;are the pointers equal?
	jz	disable_xmit_int	;YES! then disable interrupts

	mov	dx,BASE_ADR+6		;point at modem status reg. (2fe)
	mov	cx,200			;give it 200 trys for CTS signal

wait_for_CTS:
	in	al,dx			;read port status
	and	al,10h			;test CTS line
	loopnz	wait_for_CTS		;


	mov	al,_com2_output_queue[di];grab next char to output
	mov	dx,BASE_ADR		;output buffer port (2f8)
	out	dx,al			;send character out

	cmp	di,BUFSIZ		;check for queue wrap
	jge	out_queue_reset		;reset if past end or equal

	inc	word ptr [_com2_out_queue_out] ;bump output pointer
	jmp	leave_interrupt		;and check for pending interrupts
out_queue_reset:
	mov	word ptr [_com2_out_queue_out],0 ;reset pointer to beginning
	jmp	leave_interrupt		;and check for pending interrupts

disable_xmit_int:
	mov	dx,BASE_ADR+1		;interrupt enable register (2f9)
	in	al,dx			;read current interrupt status
	and	al,11111101B		;turn off xmit interrupts (fdh)
	out	dx,al			;disable xmit interrupts on 8250
	jmp	leave_interrupt		; and check for pending interrupts

INT3	ENDP
;----------------------------------------------------------------------------
int3_TEXT	ENDS
	END

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产视频一区二区三区在线观看| 一本到高清视频免费精品| 亚洲成av人片一区二区三区| 国产精品视频一二| 中文字幕巨乱亚洲| 国产精品视频yy9299一区| 久久精品亚洲乱码伦伦中文| 欧美精品一区二区在线观看| 日韩精品一区在线| 精品国产一区二区三区忘忧草 | 国产调教视频一区| 久久伊人中文字幕| 欧美国产精品v| 亚洲四区在线观看| 亚洲风情在线资源站| 亚洲国产成人va在线观看天堂| 亚洲成av人片一区二区三区| 日日摸夜夜添夜夜添国产精品| 丝袜美腿亚洲色图| 国产精品18久久久久久久久| 国产伦精品一区二区三区免费迷| 成人午夜大片免费观看| 99久久久精品| 在线不卡欧美精品一区二区三区| 日韩欧美中文一区| 国产精品你懂的| 亚洲成人tv网| 国产精品亚洲а∨天堂免在线| 波多野结衣在线aⅴ中文字幕不卡| 一本大道久久a久久精二百 | 国产乱码精品一区二区三| 国产成人免费av在线| 99re热视频这里只精品| 7777精品久久久大香线蕉| 久久免费偷拍视频| 亚洲尤物视频在线| 国产一区二区在线观看免费| av男人天堂一区| 91精品中文字幕一区二区三区| 国产午夜亚洲精品理论片色戒| 亚洲男同性视频| 久久99国产精品麻豆| 色综合色狠狠综合色| 精品国产青草久久久久福利| 日韩免费观看高清完整版在线观看| wwwwww.欧美系列| 欧美极品xxx| 日韩和欧美的一区| 91香蕉视频mp4| 精品国产不卡一区二区三区| 亚洲女人小视频在线观看| 国产成人精品免费一区二区| 欧美精品日韩一本| 亚洲精选一二三| 成人午夜碰碰视频| 久久影院午夜论| 蜜臀va亚洲va欧美va天堂| 色婷婷精品久久二区二区蜜臀av| 国产视频一区在线观看| 免费在线成人网| 欧美日韩国产高清一区二区 | 91黄色激情网站| 久久久亚洲午夜电影| 日韩精品一二三| 欧洲一区在线电影| 亚洲欧美中日韩| 成人国产精品免费网站| 久久美女艺术照精彩视频福利播放| 日韩国产在线一| 欧美少妇xxx| 亚洲永久免费视频| 色婷婷一区二区三区四区| 欧美激情在线一区二区| 国产美女娇喘av呻吟久久| 日韩美女视频一区二区在线观看| 日一区二区三区| 8v天堂国产在线一区二区| 一区二区三区在线观看动漫| 91在线小视频| 一区二区在线观看av| 欧美无乱码久久久免费午夜一区| 亚洲视频免费在线观看| 日本伦理一区二区| 亚洲制服丝袜av| 欧美日韩国产在线观看| 日本成人超碰在线观看| 日韩三级电影网址| 国产白丝精品91爽爽久久| 国产精品三级视频| 91麻豆国产福利在线观看| 亚洲欧美另类图片小说| 欧美亚洲自拍偷拍| 免费视频最近日韩| 久久精品免视看| 97久久精品人人做人人爽50路| 亚洲欧美国产三级| 欧美揉bbbbb揉bbbbb| 日本午夜一本久久久综合| 久久伊人蜜桃av一区二区| 99久久综合精品| 亚洲风情在线资源站| 日韩一级二级三级精品视频| 韩国av一区二区三区| 中文字幕亚洲精品在线观看| 欧美性猛交xxxx乱大交退制版| 日本伊人色综合网| 中文字幕免费不卡| 欧美精品99久久久**| 国产精品正在播放| 亚洲黄色av一区| 日韩一卡二卡三卡| 99re成人精品视频| 卡一卡二国产精品 | 亚洲午夜激情av| 欧美videos大乳护士334| 99精品在线免费| 青青青爽久久午夜综合久久午夜| 国产免费成人在线视频| 欧美高清dvd| 成人va在线观看| 久久精品国产久精国产爱| 国产精品青草综合久久久久99| 欧美日韩免费在线视频| 国产成人鲁色资源国产91色综| 香港成人在线视频| 中文字幕精品在线不卡| 日韩一卡二卡三卡国产欧美| 色屁屁一区二区| 国产精品香蕉一区二区三区| 日韩中文字幕一区二区三区| 国产精品久久久久桃色tv| 日韩精品综合一本久道在线视频| 91丝袜国产在线播放| 国产毛片精品一区| 日韩国产精品久久| 亚洲一区在线看| 国产精品久久综合| 久久色视频免费观看| 欧美男男青年gay1069videost| 99v久久综合狠狠综合久久| 国产传媒一区在线| 精品无人区卡一卡二卡三乱码免费卡| 亚洲国产一区二区三区青草影视| 国产精品久久三区| 久久精品亚洲精品国产欧美| 欧美一区2区视频在线观看| 欧美性高清videossexo| 一本一本久久a久久精品综合麻豆| 处破女av一区二区| 国产激情一区二区三区| 国产精品99久| 国产综合成人久久大片91| 久久成人麻豆午夜电影| 久久精品72免费观看| 毛片一区二区三区| 久久精品国内一区二区三区| 男人的天堂亚洲一区| 蜜桃av噜噜一区二区三区小说| 亚洲成人高清在线| 老鸭窝一区二区久久精品| 久久精品999| 精品一区二区日韩| 国产裸体歌舞团一区二区| 国产成人综合网站| 国产一区二区主播在线| 成人一级视频在线观看| caoporm超碰国产精品| 99综合影院在线| 91黄色免费网站| 日韩一级成人av| 国产视频一区二区在线| 亚洲色图视频网站| 一区二区三区中文字幕| 午夜精品免费在线| 国产一区二区在线观看免费| 成人听书哪个软件好| 欧美综合在线视频| 欧美大尺度电影在线| 欧美极品xxx| 亚洲不卡一区二区三区| 韩国精品一区二区| 91丨porny丨中文| 欧美一区二区三区系列电影| 国产欧美日韩卡一| 亚洲线精品一区二区三区八戒| 日日夜夜免费精品| 成人av免费在线| 欧美久久久久久久久中文字幕| 久久先锋资源网| 亚洲一二三区不卡| 粉嫩欧美一区二区三区高清影视| 色丁香久综合在线久综合在线观看| 欧美一区二区福利在线| 国产精品国产三级国产aⅴ原创 | 亚洲一区二区五区| 国产一区不卡视频| 欧美日韩一区视频| 国产精品麻豆视频| 蜜桃av一区二区在线观看| 91福利在线看|