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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? mypaulm2.asm

?? 8051 monitor programm: - use external ram to run user program - use eeprom to save user program
?? ASM
?? 第 1 頁 / 共 4 頁
字號:
; PAULMON2, a user-friendly 8051 monitor, by Paul Stoffregen; Please email comments, suggestions, bugs to paul@ece.orst.edu; It's free.  PAULMON2 is in the public domain.  You may copy; sections of code from PAULMON2 into your own programs, even; for commercial purposes.  PAULMON2 should only be distributed; free of charge, but may be bundled as 'value-added' with other; products, such as development boards, CDROMs, etc.  Please; distribute the PAULMON2.DOC file and other files, not just; the object code!; The PAULMON2.EQU and PAULMON2.HDR files contain valuable; information that could help you to write programs for use; with PAULMON2.; PAULMON2 is in the public domain. PAULMON2 is distributed in; the hope that it will be useful, but without any warranty;; without even the implied warranty of merchantability or fitness; for a particular purpose. ; You are probably reading this code to see what it looks like; and possibly learn something, or to modify it for some reason.; Either is ok, but please remember that this code uses a number; of tricks to cram all the functionality into just 4k.  As a; result, the code can be difficult to read, and adding new; features can be very difficult without growing beyond 4k.  To; add or modify commands in PAULMON2, please consider using the; "external command" functionality.  It is easier to develop; new commands this way, and you can distribute them to other; users.  Email paul@ece.orst.edu if you have new PAULMON2; commands to contribute to others.  Details about adding new; commands to PAULMON2 (with examples) can be found at:; http://www.ece.orst.edu/~paul/8051-goodies/pm2_docs/addons.html;---------------------------------------------------------;;							  ;;	    PAULMON2's default configuration		  ;;							  ;;---------------------------------------------------------;; PAULMON2 should be assembled using the modified AS31 assembler,; originally written by Ken Stauffer, many small changes by Paul; Stoffregen.  This free assembler is available on the web at; http://www.ece.orst.edu/~paul/8051-goodies/goodies-index.html; As well, these web pages have a fill-out form which makes it; very easy to custom configure PAULMON2.  Using this form will; edit the code for you, run the AS31 assmebler, and send you the; object code to program into your chip.; These two parameters control where PAULMON2 will be assembled,; and where it will attempt to LJMP at the interrupt vector locations..equ	base, 0x0000		;location for PAULMON2.equ    vector, 0x8000    ;location to LJMP interrupt vectors change to 8000h; These three parameters tell PAULMON2 where the user's memory is; installed.  "bmem" and "emem" define the space that will be searched; for program headers, user installed commands, start-up programs, etc.; "bmem" and "emem" should be use so they exclude memory areas where; perphreal devices may be mapped, as reading memory from an io chip; may reconfigure it unexpectedly.  If flash rom is used, "bmem" and "emem"; should also include the space where the flash rom is mapped..equ    pgm, 0x8000             ;default location for the user program.equ    bmem, 0x1000            ;where is the beginning of memory.equ	emem, 0xFFFF		;end of the memory; Flash ROM parameters.	 If "has_flash" is set to zero, all flash rom; features are turned off, otherwise "bflash" and "eflash" should specify; the memory range which is flash rom.	Though AMD doesn't suggest it,; you may be able to map only a part of the flash rom with your address; decoder logic (and not use the rest), but you should be careful that; "bflash" and "eflash" don't include and memory which is NOT flash rom; so that the erase algorithm won't keep applying erase pulses until it; finally gives up (which will stress the thin oxide and degrade the; flash rom's life and reliability).  "erase_pin" allows you to specify; the bit address for a pin which (if held low) will tell PAULMON2 to; erase the flash rom chip when it starts up.  This is useful if you; download programs with the "start-up" headers on them and the code you've; put in the flash rom crashes!.equ	has_flash, 0		;set to non-zero value if flash installed.equ	bflash, 0x8000		;first memory location of Flash ROM.equ	eflash, 0xFFFF		;last memory location of Flash ROM;.equ	 erase_pin, 0		 ;00 = disable erase pin feature.equ   erase_pin, 0xB5	       ;B5 = pin 15, P3.5 (T1); Please note... much of the memory management code only looks at the; upper 8 bits of an address, so it's not a good idea to somehow map; your memory chips (with complex address decoding logic) into chunks; less than 256 bytes.	In other words, only using a piece of a flash; rom chip and mapping it between C43A to F91B would confuse PAULMON2; (as well as require quit a bit of address decoding logic circuitry); To set the baud rate, use this formula or set to 0 for auto detection; baud_const = 256 - (crystal / (12 * 16 * baud));.equ	baud_const, 0		;automatic baud rate detection;.equ	baud_const, 255		;57600 baud w/ 11.0592 MHz;.equ	baud_const, 253		;19200 baud w/ 11.0592 MHz;.equ	baud_const, 252		;19200 baud w/ 14.7456 MHz;.equ	baud_const, 243		;4808 baud w/ 12 MHz.equ	baud_const, 244		;9600 baud w/ 22.1184 MHz.equ	line_delay, 6		;num of char times to pause during uploads; About download speed: when writing to ram, PAULMON2 can accept data; at the maximum baud rate (baud_const=255 or 57600 baud w/ 11.0592 MHz).; Most terminal emulation programs introduce intentional delays when; sending ascii data, which you would want to turn off for downloading; larger programs into ram.  For Flash ROM, the maximum speed is set by; the time it takes to program each location... 9600 baud seems to work; nicely for the AMD 28F256 chip.  The "character pacing" delay in a; terminal emulation program should be sufficient to download to flash; rom and any baud rate.  Some flash rom chips can write very quickly,; allowing high speed baud rates, but other chips can not.  You milage; will vary...; Several people didn't like the key definations in PAULMON1.; Actually, I didn't like 'em either, but I never took the time; to change it.	 Eventually I got used to them, but now it's; really easy to change which keys do what in PAULMON2.	 You; can guess what to do below, but don't use lowercase..equ	help_key, '?'		;help screen.equ	dir_key,  'M'		;directory.equ	run_key,  'R'		;run program.equ	dnld_key, 'D'		;download.equ	upld_key, 'U'		;upload.equ	nloc_key, 'N'		;new memory location.equ	jump_key, 'J'		;jump to memory location.equ	dump_key, 'H'		;hex dump memory.equ	intm_key, 'I'		;hex dump internal memory.equ	edit_key, 'E'		;edit memory.equ	clrm_key, 'C'		;clear memory.equ	erfr_key, 'Z'		;erase flash rom; timing parameters for AMD Flash ROM 28F256.  These parameters; and pretty conservative and they seem to work with crystals; between 6 MHz to 24 MHz... (tested with AMD 28F256 chips only); unless you know this is a problem, it is probably not a good; idea to fiddle with these..equ	pgmwait, 10		;22.1184 MHz crystal assumed;.equ	pgmwait, 19		;11.0592 MHz.equ	verwait, 5.equ	erwait1, 40		;fourty delays @22.1184;.equ	erwait1, 20		;twenty delays for 11.0592 MHz.equ	erwait2, 229		;each delay .5 ms @22.1184MHz; These symbols configure paulmon2's internal memory usage.; It is usually not a good idea to change these unless you; know that you really have to..equ	psw_init, 0		;value for psw (which reg bank to use).equ	dnld_parm, 0x10		;block of 16 bytes for download.equ	stack, 0x30		;location of the stack.equ	baud_save, 0x78		;save baud for warm boot, 4 bytes;---------------------------------------------------------;;							  ;;		     Interrupt Vectors			  ;;  (and little bits of code crammed in the empty spaces)  ;;							  ;;---------------------------------------------------------;	.org	base	ljmp	poweron		;reset vector	.org	base+3	ljmp	vector+3	;ext int0 vectorr6r7todptr:	mov	dpl, r6	mov	dph, r7	ret	.org	base+11	ljmp	vector+11	;timer0 vectordptrtor6r7:	mov	r6, dpl	mov	r7, dph	ret	.org	base+19	ljmp	vector+19	;ext int1 vectordash:	mov	a, #'-'		;seems kinda trivial, but each time	ajmp	cout		;this appears in code, it takes 4	nop			;bytes, but an acall takes only 2	.org	base+27	ljmp	vector+27	;timer1 vectorcout_sp:acall	cout	ajmp	space	nop	.org	base+35	ljmp	vector+35	;uart vectordash_sp:acall	dash	ajmp	space	nop	.org	base+43	ljmp	vector+43	;timer2 vector (8052);---------------------------------------------------------;;							  ;;	The jump table for user programs to call	  ;;	      subroutines within PAULMON		  ;;							  ;;---------------------------------------------------------;.org	base+46		;never change this line!!  Other			;programs depend on these locations			;to access paulmon2 functions	ajmp	phex1		;2E	ajmp	cout		;30	ajmp	cin		;32	ajmp	phex		;34	ajmp	phex16		;36	ajmp	pstr		;38	ajmp	ghex		;3A	ajmp	ghex16		;3C	ajmp	esc		;4E	ajmp	upper		;40	ljmp	autobaud	;42pcstr_h:ljmp	pcstr		;45	ajmp	newline		;48	ljmp	lenstr		;4A	ljmp	pint8u		;4D	ljmp	pint8		;50	ljmp	pint16u		;53	ljmp	smart_wr	;56	ljmp	prgm		;59	ljmp	erall		;5C	ljmp	find		;5Fcin_filter_h:	ljmp	cin_filter	;62	ajmp	asc2hex		;64;---------------------------------------------------------;;							  ;;	       Subroutines for serial I/O		  ;;							  ;;---------------------------------------------------------;cin:	jnb	ri, cin	clr	ri	mov	a, sbuf	retdspace: acall	spacespace:	mov	a, #' 'cout:	jnb	ti, cout	clr	ti		;clr ti before the mov to sbuf!	mov	sbuf, a	ret;clearing ti before reading sbuf takes care of the case where;interrupts may be enabled... if an interrupt were to happen;between those two instructions, the serial port will just;wait a while, but in the other order and the character could;finish transmitting (during the interrupt routine) and then;ti would be cleared and never set again by the hardware, causing;the next call to cout to hang forever!newline2:			;print two newlines	acall	newlinenewline:push	acc		;print one newline	mov	a, #13	acall	cout	mov	a, #10	acall	cout	pop	acc	ret	;get 2 digit hex number from serial port	; c = set if ESC pressed, clear otherwise	; psw.5 = set if return w/ no input, clear otherwiseghex:ghex8:	clr	psw.5ghex8c:	acall	cin_filter_h	;get first digit	acall	upper	cjne	a, #27, ghex8fghex8d: setb	c	clr	a	retghex8f: cjne	a, #13, ghex8h	setb	psw.5	clr	c	clr	a	retghex8h: mov	r2, a	acall	asc2hex	jc	ghex8c	xch	a, r2		;r2 will hold hex value of 1st digit	acall	coutghex8j:	acall	cin_filter_h	;get second digit	acall	upper	cjne	a, #27, ghex8k	sjmp	ghex8dghex8k: cjne	a, #13, ghex8m	mov	a, r2	clr	c	retghex8m: cjne	a, #8, ghex8pghex8n: acall	cout	sjmp	ghex8cghex8p: cjne	a, #21, ghex8q	sjmp	ghex8nghex8q: mov	r3, a	acall	asc2hex	jc	ghex8j	xch	a, r3	acall	cout	mov	a, r2	swap	a	orl	a, r3	clr	c	ret	;carry set if esc pressed	;psw.5 set if return pressed w/ no inputghex16:	mov	r2, #0		;start out with 0	mov	r3, #0	mov	r4, #4		;number of digits left	clr	psw.5ghex16c:	acall	cin_filter_h	acall	upper	cjne	a, #27, ghex16d	setb	c		;handle esc key	clr	a	mov	dph, a	mov	dpl, a	retghex16d:cjne	a, #8, ghex16f	sjmp	ghex16kghex16f:cjne	a, #127, ghex16g  ;handle backspaceghex16k:cjne	r4, #4, ghex16e	  ;have they entered anything yet?	sjmp	ghex16cghex16e:acall	cout	acall	ghex16y	inc	r4	sjmp	ghex16cghex16g:cjne	a, #13, ghex16i	  ;return key	mov	dph, r3	mov	dpl, r2	cjne	r4, #4, ghex16h	clr	a	mov	dph, a	mov	dpl, a	setb	psw.5ghex16h:clr	c	retghex16i:mov	r5, a		  ;keep copy of original keystroke	acall	asc2hex	jc	ghex16c	xch	a, r5	lcall	cout	mov	a, r5	push	acc	acall	ghex16x	pop	acc	add	a, r2	mov	r2, a	clr	a	addc	a, r3	mov	r3, a	djnz	r4, ghex16c	clr	c	mov	dpl, r2	mov	dph, r3	retghex16x:  ;multiply r3-r2 by 16 (shift left by 4)	mov	a, r3	swap	a	anl	a, #11110000b	mov	r3, a	mov	a, r2	swap	a	anl	a, #00001111b	orl	a, r3	mov	r3, a	mov	a, r2	swap	a	anl	a, #11110000b	mov	r2, a	retghex16y:  ;divide r3-r2 by 16 (shift right by 4)	mov	a, r2	swap	a	anl	a, #00001111b	mov	r2, a	mov	a, r3	swap	a	anl	a, #11110000b	orl	a, r2	mov	r2, a	mov	a, r3	swap	a	anl	a, #00001111b	mov	r3, a	ret	;carry set if invalid inputasc2hex:	clr	c	add	a, #208	jnc	hex_not	add	a, #246	jc	hex_maybe	add	a, #10	clr	c	rethex_maybe:	add	a, #249	jnc	hex_not	add	a, #250	jc	hex_not	add	a, #16	clr	c	rethex_not:setb	c	retphex:phex8:	push	acc	swap	a	anl	a, #15	add	a, #246	jnc	phex_b	add	a, #7phex_b: add	a, #58	acall	cout	pop	accphex1:	push	acc	anl	a, #15	add	a, #246	jnc	phex_c	add	a, #7phex_c: add	a, #58	acall	cout	pop	acc	retphex16:	push	acc	mov	a, dph	acall	phex	mov	a, dpl	acall	phex	pop	acc	ret;a not so well documented feature of pstr is that you can print;multiple consecutive strings without needing to reload dptr;(which takes 3 bytes of code!)... this is useful for inserting;numbers or spaces between strings.pstr:	push	accpstr1:	clr	a	movc	a, @a+dptr	inc	dptr	jz	pstr2	mov	c, acc.7	anl	a, #0x7F	acall	cout	jc	pstr2	sjmp	pstr1pstr2:	pop	acc	retupper:	;converts the ascii code in Acc to uppercase, if it is lowercase	push	acc	clr	c	subb	a, #97	jc	upper2		;is it a lowercase character	subb	a, #26	jnc	upper2	pop	acc	add	a, #224		;convert to uppercase	retupper2: pop	acc		;don't change anything	retlenstr: mov	r0, #0	  ;returns length of a string in r0	push	acclenstr1:clr	a	movc	a,@a+dptr	jz	lenstr2	mov	c,acc.7	inc	r0	Jc	lenstr2	inc	dptr	sjmp	lenstr1lenstr2:pop	acc	retesc:  ;checks to see if <ESC> is waiting on serial port      ;C=clear if no <ESC>, C=set if <ESC> pressed      ;buffer is flushed	push	acc	clr	c	jnb	ri,esc2	mov	a,sbuf	cjne	a,#27,esc1	setb	cesc1:	clr	riesc2:	pop	acc	ret;---------------------------------------------------------;;							  ;;    The 'high-level' stuff to interact with the user	  ;;							  ;;---------------------------------------------------------;menu: ;first we print out the prompt, which isn't as simple      ;as it may seem, since external code can add to the      ;prompt, so we've got to find and execute all of 'em.	mov	dptr, #prompt1	  ;give 'em the first part of prompt	acall	pcstr_h	mov	a, r7	acall	phex	mov	a, r6	acall	phex	;mov	 dptr, #prompt2	acall	pstr;now we're finally past the prompt, so let's get some input	acall	cin_filter_h	;get the input, finally	acall	upper;push return address onto stack so we can just jump to the program	mov	b, #(menu & 255)  ;we push the return address now,	push	b		  ;to save code later...	mov	b, #(menu >> 8)	  ;if bogus input, just ret for	push	b		  ;another prompt.;first we'll look through memory for a program header that says;it's a user installed command which matches what the user pressed;user installed commands need to avoid changing R6/R7, which holds;the memory pointer.  The stack pointer can't be changed obviously.;all the other general purpose registers should be available for;user commands to alter as they wish.menux:	mov	b, a		;now search for external commands...	mov	dptr, #bmemmenux1: acall	find	jnc	menuxend	   ;searched all the commands?	mov	dpl, #4	clr	a	movc	a,@a+dptr	cjne	a, #254, menux2	 ;only FE is an ext command	inc	dpl	clr	a	movc	a,@a+dptr	cjne	a, b, menux2	  ;only run if they want it	acall	space	mov	dpl, #32	acall	pstr		   ;print command name	acall	newline	mov	dpl, #64	clr	a	jmp	@a+dptr		;take a leap of faith and jump to it!menux2: inc	dph	mov	a, dph	cjne	a, #((emem+1) >> 8) & 255, menux1menuxend:	mov	a, b;since we didn't find a user installed command, use the builtin onesmenu1a: cjne	a, #help_key, menu1b	mov	dptr, #help_cmd2	acall	pcstr_h	ajmp	helpmenu1b: cjne	a, #dir_key, menu1c	mov	dptr, #dir_cmd	acall	pcstr_h	ajmp	dirmenu1c: cjne	a, #run_key, menu1d	mov	dptr, #run_cmd	acall	pcstr_h	ajmp	runmenu1d: cjne	a, #dnld_key, menu1e	mov	dptr, #dnld_cmd	acall	pcstr_h	ajmp	dnldmenu1e: cjne	a, #upld_key, menu1f	mov	dptr, #upld_cmd

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美精品高清视频| 精品一二三四区| 日韩国产欧美一区二区三区| 奇米色一区二区三区四区| 国产美女一区二区三区| www..com久久爱| 91精品欧美综合在线观看最新| 精品国产伦一区二区三区观看方式 | 99riav久久精品riav| 欧美日韩国产免费一区二区| 26uuu另类欧美| 亚洲女女做受ⅹxx高潮| 久久精品国产亚洲aⅴ| 国产三级三级三级精品8ⅰ区| 中文字幕高清不卡| 丝瓜av网站精品一区二区| 国产成人免费视频网站| 欧美视频一区二区三区在线观看| 欧美大度的电影原声| 亚洲天堂久久久久久久| 免费av网站大全久久| 99在线热播精品免费| 日韩欧美一卡二卡| 亚洲乱码国产乱码精品精98午夜| 九九精品视频在线看| 色哦色哦哦色天天综合| 久久久精品免费免费| 午夜精品久久一牛影视| youjizz久久| 精品福利一区二区三区免费视频| 樱花草国产18久久久久| 国产精品69久久久久水密桃| 欧美麻豆精品久久久久久| 国产精品麻豆视频| 奇米精品一区二区三区四区| 91欧美激情一区二区三区成人| 精品人在线二区三区| 亚洲一区二区三区小说| 成人黄色综合网站| 精品国产伦一区二区三区观看方式 | 亚洲风情在线资源站| 国产不卡在线播放| 欧美电视剧免费全集观看| 亚洲自拍偷拍九九九| 成人免费毛片嘿嘿连载视频| 精品国产一区二区亚洲人成毛片 | 在线观看一区不卡| 国产精品入口麻豆九色| 久久精品999| 欧美精品久久99久久在免费线| 亚洲丝袜自拍清纯另类| 国产69精品久久久久毛片| 日韩欧美亚洲国产另类| 日韩影视精彩在线| 欧美日韩一区二区在线视频| 亚洲精品第1页| 99精品视频在线观看| 国产伦精一区二区三区| 欧美一区二区国产| 日韩在线卡一卡二| 欧美日韩成人在线| 亚洲二区在线视频| 欧美吻胸吃奶大尺度电影| 亚洲欧美国产毛片在线| 91视频免费看| 综合久久一区二区三区| caoporm超碰国产精品| 国产精品你懂的在线| 成人综合在线观看| 欧美国产亚洲另类动漫| 高清不卡一二三区| 国产精品久久久久久久午夜片| 国产寡妇亲子伦一区二区| 国产日产欧美一区二区三区| 国产精品99久久久久久久女警| 久久免费的精品国产v∧| 国产一区二区免费在线| 国产网站一区二区| 成人精品亚洲人成在线| 中文字幕在线不卡| 色综合久久中文字幕综合网| 一区二区三区小说| 欧美日韩和欧美的一区二区| 亚洲成人动漫精品| 日韩一级免费一区| 韩国v欧美v亚洲v日本v| 国产女人水真多18毛片18精品视频| 国产精品一级片| 中文字幕五月欧美| 欧美亚洲日本国产| 日韩精品一级中文字幕精品视频免费观看 | 91麻豆精品91久久久久久清纯| 亚洲va欧美va天堂v国产综合| 欧美人体做爰大胆视频| 免费成人在线观看视频| 久久久99精品免费观看不卡| 成人动漫一区二区在线| 一本色道久久加勒比精品 | 丰满亚洲少妇av| 亚洲欧洲国产日韩| 欧日韩精品视频| 蜜臀精品一区二区三区在线观看 | 亚洲一区视频在线| 制服丝袜av成人在线看| 国产一区二区导航在线播放| 国产精品美女久久久久aⅴ| 欧美性一区二区| 蜜桃视频免费观看一区| 中文字幕国产精品一区二区| 在线日韩国产精品| 麻豆国产一区二区| 国产精品国产三级国产普通话蜜臀| 欧洲国内综合视频| 狠狠色丁香九九婷婷综合五月| 国产精品美女一区二区在线观看| 色狠狠综合天天综合综合| 人人爽香蕉精品| 中文字幕一区二区视频| 在线成人av网站| 国产激情偷乱视频一区二区三区| 亚洲激情欧美激情| 精品国产露脸精彩对白 | 国产精品九色蝌蚪自拍| 欧美伦理电影网| 成人精品在线视频观看| 日本亚洲免费观看| 亚洲私人黄色宅男| 精品国产一区二区国模嫣然| 91香蕉视频在线| 韩国三级电影一区二区| 亚洲一区电影777| 国产日韩影视精品| 亚洲成人av一区二区三区| 26uuu亚洲婷婷狠狠天堂| 欧美午夜一区二区三区| 国产成人av一区二区三区在线观看| 一区二区国产盗摄色噜噜| 久久久久久毛片| 在线播放视频一区| av男人天堂一区| 狠狠狠色丁香婷婷综合激情 | 不卡一区二区三区四区| 蜜臀久久99精品久久久久久9| 亚洲日本va在线观看| www国产亚洲精品久久麻豆| 欧美揉bbbbb揉bbbbb| 成人黄色免费短视频| 精品一区二区三区影院在线午夜| 一区二区三区在线视频播放 | 99国产一区二区三精品乱码| 久久aⅴ国产欧美74aaa| 午夜精品久久久久久久久| 亚洲色图欧洲色图| 中文字幕乱码一区二区免费| 欧美一二三区在线观看| 欧洲精品一区二区三区在线观看| 成人一区在线看| 国产麻豆91精品| 激情综合网av| 另类综合日韩欧美亚洲| 亚洲444eee在线观看| 怡红院av一区二区三区| 日韩伦理av电影| 国产精品每日更新| 国产欧美精品日韩区二区麻豆天美| 日韩精品在线一区| 6080亚洲精品一区二区| 欧美日韩一区二区电影| 91国偷自产一区二区开放时间| 成人国产精品免费观看| 国产精品18久久久久久久久 | 678五月天丁香亚洲综合网| 最新国产の精品合集bt伙计| 久久天天做天天爱综合色| 日韩精品一区在线| 日韩一区和二区| 欧美一区二区日韩一区二区| 欧美妇女性影城| 91精品黄色片免费大全| 制服.丝袜.亚洲.中文.综合| 91精品国产一区二区三区香蕉| 欧美日韩国产高清一区二区| 欧美四级电影网| 欧美日韩电影一区| 欧美一区二区黄色| 日韩欧美国产一区在线观看| 欧美成人三级电影在线| 精品国产污污免费网站入口| 337p日本欧洲亚洲大胆精品| 精品人在线二区三区| 国产亚洲一区二区三区四区| 久久色在线观看| 国产精品网站在线播放| 亚洲欧洲成人精品av97| 亚洲男人电影天堂| 午夜精品久久久久久久久久| 日本不卡一区二区| 激情综合网最新| 成人中文字幕电影| 91免费国产在线观看|