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

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

?? int4.asm

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

            ASSUME cs:int4_TEXT, ds:DGROUP, es:DGROUP
;
;----------------------------------------------------------------------------
;
_DATA		SEGMENT byte public 'DATA'
old_int4_CS	dw	0		;old interrupt 4 CS
old_int4_IP	dw	0		;old interrupt 4 IP
_DATA		ENDS
;
;----------------------------------------------------------------------------
;	PROGRAM EXTERNALS
;
	extrn	_com1_input_queue:byte
	extrn	_com1_in_queue_ptr:word

	extrn	_com1_rs232_error:word
	extrn	_com1_port_status:word
	extrn 	_com1_interrupt_status:word

	extrn	_com1_out_queue_ptr:word
	extrn	_com1_out_queue_out:word
	extrn	_com1_output_queue:byte
;
;----------------------------------------------------------------------------
;	PROGRAM EQUATES
;
BASE_ADR	EQU	03F8h		;COM 1 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
;
;----------------------------------------------------------------------------
;
int4_TEXT	SEGMENT byte public 'CODE'
;
	PUBLIC  _com1_set_interrupt
_com1_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,0ch		;want INT 4 CS and IP vector
	int	21h		;execute DOS function call
	mov	old_int4_CS,es	;ES contains the CS for INT 4
	mov	old_int4_IP,bx	;BX contains the IP for INT 4

	mov	dx,offset INT4	;point DS:DX to COM routine
	mov	ax,seg    INT4	;segment
	mov	ds,ax		;point DS
	mov	al,0ch		;INT 4 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,0		;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 (3fc)
	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 (3f9)
	mov	al,INT_CODE	;which interrupts to enable
	out	dx,al		;enable interrupts on 8250

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

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

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

	in	al,21h		;find out which interrupts are currently on
	and	al,0efh		;enable bit 4 (INT 4 ='s PRIMARY 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
_com1_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  _com1_restore_interrupt
_com1_restore_interrupt	PROC	FAR
	push	ax		;save all registers used
	push	dx
	push	ds

	mov	dx,old_int4_IP	;point DS:DX to COM routine
	mov	ax,old_int4_CS	;segment
	mov	ds,ax		;point DS
	mov	al,0ch		;INT 4 vector
	mov	ah,25h		;function to change vector
	int	21h		;execute DOS function call

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

	pop	ds		;restore all registers used
	pop	dx
	pop	ax
	ret
_com1_restore_interrupt	ENDP
;
;----------------------------------------------------------------------------
; This is the interrupt routine that is executed with every
;   INT 4.
;
;  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	INT4

INT4	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 (3fa)
	in	al,dx			;read whose requesting service

	mov	ah,00h			;zero high byte
	mov	_com1_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 (3fe)
	in	al,dx

	mov	ah,00h			;zero high byte
	mov	_com1_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 (3f8)
	in	al,dx			;read the character in

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

	mov	di,[_com1_in_queue_ptr]	;grab input pointer

	mov	_com1_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 [_com1_in_queue_ptr] ;bump input pointer
	jmp	leave_interrupt
reset_queue:
	mov	word ptr [_com1_in_queue_ptr],0 ;reset pointer to beginning
;----------------------------------------------------------------------------
leave_interrupt:
	mov	dx,BASE_ADR+2		;interrupt ident. register (3fa)
	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 (3fd)
	in	al,dx			; read which error occured

	mov	ah,00h			;zero high byte
	mov	_com1_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,[_com1_out_queue_ptr];grab input pointer
	mov	di,[_com1_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. (3fe)
	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,_com1_output_queue[di];grab next char to output
	mov	dx,BASE_ADR		;output buffer port (3f8)
	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 [_com1_out_queue_out] ;bump output pointer
	jmp	leave_interrupt		;and check for pending interrupts
out_queue_reset:
	mov	word ptr [_com1_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 (3f9)
	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

INT4	ENDP
;----------------------------------------------------------------------------
int4_TEXT	ENDS
	END

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
麻豆精品新av中文字幕| 欧美影院一区二区三区| 93久久精品日日躁夜夜躁欧美| 欧美综合一区二区| 久久久亚洲国产美女国产盗摄| 亚洲精品视频自拍| 国产一区二区三区四| 欧美三级三级三级| 亚洲欧美综合色| 久久国产成人午夜av影院| 色欧美88888久久久久久影院| 91精品国产麻豆国产自产在线 | 一区二区三区中文字幕| 不卡一区二区三区四区| 91精品国产综合久久精品图片| 国产精品久久久久久久蜜臀| 九色|91porny| 51午夜精品国产| 亚洲一区免费在线观看| 91尤物视频在线观看| 国产午夜久久久久| 美女www一区二区| 91精品国产一区二区| 亚洲国产一二三| 色素色在线综合| 亚洲激情自拍偷拍| 色久优优欧美色久优优| 国产精品国产三级国产aⅴ中文| 国产精品亚洲视频| 国产色产综合产在线视频| 久久成人久久爱| 精品久久久久一区| 韩国成人精品a∨在线观看| 精品国产乱码久久久久久老虎| 欧美aaaaa成人免费观看视频| 6080午夜不卡| 麻豆成人av在线| 日韩免费视频线观看| 久久99热狠狠色一区二区| 日韩午夜精品电影| 韩国一区二区视频| 中文字幕国产精品一区二区| av成人免费在线观看| 亚洲欧美日韩小说| 在线视频国内一区二区| 午夜精品久久久久久久久久| 日韩欧美国产麻豆| 国产91露脸合集magnet| 亚洲视频网在线直播| 日本高清无吗v一区| 香蕉av福利精品导航| 日韩精品中午字幕| 国产福利一区在线观看| 国产无遮挡一区二区三区毛片日本| 成人午夜免费视频| 一区二区三国产精华液| 欧美一级高清片在线观看| 国产一区二区三区国产| 国产精品视频九色porn| 欧美色综合网站| 激情文学综合网| 亚洲精品日产精品乱码不卡| 91精品国产综合久久国产大片| 国产精品88av| 亚洲国产精品视频| 久久婷婷成人综合色| 一本大道久久a久久综合| 亚洲国产aⅴ成人精品无吗| 精品久久久久久久人人人人传媒 | 97久久超碰精品国产| 成人午夜在线播放| 亚洲一区在线观看免费 | 欧美成人精品1314www| 成人av在线资源| 亚洲成av人片一区二区三区| 日韩一级成人av| 91美女在线视频| 国产高清在线精品| 亚洲aaa精品| 1000精品久久久久久久久| 91精品国产一区二区| 99re66热这里只有精品3直播 | 韩国精品主播一区二区在线观看 | 日韩中文字幕1| 中文字幕免费不卡在线| 日韩一级片网站| 在线精品国精品国产尤物884a| 韩国av一区二区三区四区| 亚洲第四色夜色| 中文字幕一区在线观看视频| 精品免费99久久| 欧美男女性生活在线直播观看| 成人av动漫在线| 国产精品123| 久久福利资源站| 午夜精品一区在线观看| 亚洲欧美日韩电影| 国产精品久久午夜夜伦鲁鲁| 精品美女一区二区三区| 日韩天堂在线观看| 欧美日高清视频| 欧美中文字幕一区二区三区亚洲| 成人黄色一级视频| 国产精品18久久久久久久久久久久| 日韩黄色免费网站| 亚洲午夜免费电影| 亚洲一区影音先锋| 亚洲另类一区二区| 亚洲久草在线视频| 亚洲欧美日韩电影| 亚洲精品久久久蜜桃| 亚洲天堂2014| 亚洲综合在线免费观看| 亚洲色图清纯唯美| 国产精品传媒视频| 欧美韩日一区二区三区四区| 久久欧美中文字幕| 久久久久久久久久久久久女国产乱| 日韩你懂的电影在线观看| 欧美一区二区三区婷婷月色| 欧美猛男男办公室激情| 欧美美女直播网站| 日韩午夜在线影院| 精品免费99久久| 国产精品日韩精品欧美在线| 国产精品麻豆视频| 伊人婷婷欧美激情| 婷婷中文字幕综合| 捆绑紧缚一区二区三区视频| 精一区二区三区| 国产精品66部| 色综合亚洲欧洲| 欧美精品第一页| 久久久久久久一区| 亚洲精品v日韩精品| 丝袜诱惑亚洲看片| 国内精品伊人久久久久av影院| 丁香亚洲综合激情啪啪综合| 成人app在线观看| 在线一区二区三区| 日韩欧美在线不卡| 中文字幕一区二区三区在线不卡| 夜夜亚洲天天久久| 国内精品伊人久久久久av一坑| 成人激情免费电影网址| 欧美日韩小视频| 久久精品一区蜜桃臀影院| 日韩美女视频一区二区 | 成人午夜视频在线| 欧美色图天堂网| 久久在线免费观看| 亚洲小说欧美激情另类| 激情六月婷婷久久| 一本色道亚洲精品aⅴ| 91麻豆精品国产自产在线| 久久综合av免费| 亚洲第一搞黄网站| 国产suv精品一区二区883| 在线中文字幕不卡| 国产亚洲一区字幕| 亚洲成a人片在线观看中文| 国产盗摄一区二区三区| 在线成人av网站| 中文字幕一区二区三| 美女www一区二区| 欧洲国内综合视频| 国产精品传媒入口麻豆| 美女视频一区在线观看| 91女厕偷拍女厕偷拍高清| 久久亚洲捆绑美女| 青青草伊人久久| 色国产综合视频| 国产精品久久久久天堂| 寂寞少妇一区二区三区| 欧美日韩国产系列| 自拍偷拍欧美精品| 成人av在线播放网站| ww久久中文字幕| 蜜桃在线一区二区三区| 欧美日韩国产色站一区二区三区| 国产精品久久久久久久午夜片| 激情综合一区二区三区| 9191久久久久久久久久久| 亚洲视频网在线直播| 不卡av在线网| 中国av一区二区三区| 国产成人免费在线观看不卡| 精品久久人人做人人爽| 秋霞影院一区二区| 91精品婷婷国产综合久久性色| 一区二区三区av电影| 91免费在线视频观看| 亚洲私人黄色宅男| 99久久综合99久久综合网站| 欧美激情一二三区| av电影在线观看一区| 国产精品夫妻自拍| 91一区二区在线| 一区二区三区四区亚洲| 在线亚洲一区观看|