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

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

?? pmtest8.asm

?? 自己動手寫操作系統源碼包含有各種小工具
?? ASM
字號:
; ==========================================
; pmtest8.asm
; 編譯方法:nasm pmtest8.asm -o pmtest8.com
; ==========================================

%include	"pm.inc"	; 常量, 宏, 以及一些說明

PageDirBase0		equ	200000h	; 頁目錄開始地址:	2M
PageTblBase0		equ	201000h	; 頁表開始地址:		2M +  4K
PageDirBase1		equ	210000h	; 頁目錄開始地址:	2M + 64K
PageTblBase1		equ	211000h	; 頁表開始地址:		2M + 64K + 4K

LinearAddrDemo	equ	00401000h
ProcFoo		equ	00401000h
ProcBar		equ	00501000h

ProcPagingDemo	equ	00301000h

org	0100h
	jmp	LABEL_BEGIN

[SECTION .gdt]
; GDT
;                                         段基址,       段界限     , 屬性
LABEL_GDT:		Descriptor	       0,                 0, 0				; 空描述符
LABEL_DESC_NORMAL:	Descriptor	       0,            0ffffh, DA_DRW			; Normal 描述符
LABEL_DESC_FLAT_C:	Descriptor             0,           0fffffh, DA_CR | DA_32 | DA_LIMIT_4K; 0 ~ 4G
LABEL_DESC_FLAT_RW:	Descriptor             0,           0fffffh, DA_DRW | DA_LIMIT_4K	; 0 ~ 4G
LABEL_DESC_CODE32:	Descriptor	       0,  SegCode32Len - 1, DA_CR | DA_32		; 非一致代碼段, 32
LABEL_DESC_CODE16:	Descriptor	       0,            0ffffh, DA_C			; 非一致代碼段, 16
LABEL_DESC_DATA:	Descriptor	       0,	DataLen - 1, DA_DRW			; Data
LABEL_DESC_STACK:	Descriptor	       0,        TopOfStack, DA_DRWA | DA_32		; Stack, 32 位
LABEL_DESC_VIDEO:	Descriptor	 0B8000h,            0ffffh, DA_DRW			; 顯存首地址
; GDT 結束

GdtLen		equ	$ - LABEL_GDT	; GDT長度
GdtPtr		dw	GdtLen - 1	; GDT界限
		dd	0		; GDT基地址

; GDT 選擇子
SelectorNormal		equ	LABEL_DESC_NORMAL	- LABEL_GDT
SelectorFlatC		equ	LABEL_DESC_FLAT_C	- LABEL_GDT
SelectorFlatRW		equ	LABEL_DESC_FLAT_RW	- LABEL_GDT
SelectorCode32		equ	LABEL_DESC_CODE32	- LABEL_GDT
SelectorCode16		equ	LABEL_DESC_CODE16	- LABEL_GDT
SelectorData		equ	LABEL_DESC_DATA		- LABEL_GDT
SelectorStack		equ	LABEL_DESC_STACK	- LABEL_GDT
SelectorVideo		equ	LABEL_DESC_VIDEO	- LABEL_GDT
; END of [SECTION .gdt]

[SECTION .data1]	 ; 數據段
ALIGN	32
[BITS	32]
LABEL_DATA:
; 實模式下使用這些符號
; 字符串
_szPMMessage:			db	"In Protect Mode now. ^-^", 0Ah, 0Ah, 0	; 進入保護模式后顯示此字符串
_szMemChkTitle:			db	"BaseAddrL BaseAddrH LengthLow LengthHigh   Type", 0Ah, 0	; 進入保護模式后顯示此字符串
_szRAMSize			db	"RAM size:", 0
_szReturn			db	0Ah, 0
; 變量
_wSPValueInRealMode		dw	0
_dwMCRNumber:			dd	0	; Memory Check Result
_dwDispPos:			dd	(80 * 6 + 0) * 2	; 屏幕第 6 行, 第 0 列。
_dwMemSize:			dd	0
_ARDStruct:			; Address Range Descriptor Structure
	_dwBaseAddrLow:		dd	0
	_dwBaseAddrHigh:	dd	0
	_dwLengthLow:		dd	0
	_dwLengthHigh:		dd	0
	_dwType:		dd	0
_PageTableNumber		dd	0

_MemChkBuf:	times	256	db	0

; 保護模式下使用這些符號
szPMMessage		equ	_szPMMessage	- $$
szMemChkTitle		equ	_szMemChkTitle	- $$
szRAMSize		equ	_szRAMSize	- $$
szReturn		equ	_szReturn	- $$
dwDispPos		equ	_dwDispPos	- $$
dwMemSize		equ	_dwMemSize	- $$
dwMCRNumber		equ	_dwMCRNumber	- $$
ARDStruct		equ	_ARDStruct	- $$
	dwBaseAddrLow	equ	_dwBaseAddrLow	- $$
	dwBaseAddrHigh	equ	_dwBaseAddrHigh	- $$
	dwLengthLow	equ	_dwLengthLow	- $$
	dwLengthHigh	equ	_dwLengthHigh	- $$
	dwType		equ	_dwType		- $$
MemChkBuf		equ	_MemChkBuf	- $$
PageTableNumber		equ	_PageTableNumber- $$

DataLen			equ	$ - LABEL_DATA
; END of [SECTION .data1]


; 全局堆棧段
[SECTION .gs]
ALIGN	32
[BITS	32]
LABEL_STACK:
	times 512 db 0

TopOfStack	equ	$ - LABEL_STACK - 1

; END of [SECTION .gs]


[SECTION .s16]
[BITS	16]
LABEL_BEGIN:
	mov	ax, cs
	mov	ds, ax
	mov	es, ax
	mov	ss, ax
	mov	sp, 0100h

	mov	[LABEL_GO_BACK_TO_REAL+3], ax
	mov	[_wSPValueInRealMode], sp

	; 得到內存數
	mov	ebx, 0
	mov	di, _MemChkBuf
.loop:
	mov	eax, 0E820h
	mov	ecx, 20
	mov	edx, 0534D4150h
	int	15h
	jc	LABEL_MEM_CHK_FAIL
	add	di, 20
	inc	dword [_dwMCRNumber]
	cmp	ebx, 0
	jne	.loop
	jmp	LABEL_MEM_CHK_OK
LABEL_MEM_CHK_FAIL:
	mov	dword [_dwMCRNumber], 0
LABEL_MEM_CHK_OK:

	; 初始化 16 位代碼段描述符
	mov	ax, cs
	movzx	eax, ax
	shl	eax, 4
	add	eax, LABEL_SEG_CODE16
	mov	word [LABEL_DESC_CODE16 + 2], ax
	shr	eax, 16
	mov	byte [LABEL_DESC_CODE16 + 4], al
	mov	byte [LABEL_DESC_CODE16 + 7], ah

	; 初始化 32 位代碼段描述符
	xor	eax, eax
	mov	ax, cs
	shl	eax, 4
	add	eax, LABEL_SEG_CODE32
	mov	word [LABEL_DESC_CODE32 + 2], ax
	shr	eax, 16
	mov	byte [LABEL_DESC_CODE32 + 4], al
	mov	byte [LABEL_DESC_CODE32 + 7], ah

	; 初始化數據段描述符
	xor	eax, eax
	mov	ax, ds
	shl	eax, 4
	add	eax, LABEL_DATA
	mov	word [LABEL_DESC_DATA + 2], ax
	shr	eax, 16
	mov	byte [LABEL_DESC_DATA + 4], al
	mov	byte [LABEL_DESC_DATA + 7], ah

	; 初始化堆棧段描述符
	xor	eax, eax
	mov	ax, ds
	shl	eax, 4
	add	eax, LABEL_STACK
	mov	word [LABEL_DESC_STACK + 2], ax
	shr	eax, 16
	mov	byte [LABEL_DESC_STACK + 4], al
	mov	byte [LABEL_DESC_STACK + 7], ah

	; 為加載 GDTR 作準備
	xor	eax, eax
	mov	ax, ds
	shl	eax, 4
	add	eax, LABEL_GDT		; eax <- gdt 基地址
	mov	dword [GdtPtr + 2], eax	; [GdtPtr + 2] <- gdt 基地址

	; 加載 GDTR
	lgdt	[GdtPtr]

	; 關中斷
	cli

	; 打開地址線A20
	in	al, 92h
	or	al, 00000010b
	out	92h, al

	; 準備切換到保護模式
	mov	eax, cr0
	or	eax, 1
	mov	cr0, eax

	; 真正進入保護模式
	jmp	dword SelectorCode32:0	; 執行這一句會把 SelectorCode32 裝入 cs, 并跳轉到 Code32Selector:0  處

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

LABEL_REAL_ENTRY:		; 從保護模式跳回到實模式就到了這里
	mov	ax, cs
	mov	ds, ax
	mov	es, ax
	mov	ss, ax

	mov	sp, [_wSPValueInRealMode]

	in	al, 92h		; ┓
	and	al, 11111101b	; ┣ 關閉 A20 地址線
	out	92h, al		; ┛

	sti			; 開中斷

	mov	ax, 4c00h	; ┓
	int	21h		; ┛回到 DOS
; END of [SECTION .s16]


[SECTION .s32]; 32 位代碼段. 由實模式跳入.
[BITS	32]

LABEL_SEG_CODE32:
	mov	ax, SelectorData
	mov	ds, ax			; 數據段選擇子
	mov	es, ax
	mov	ax, SelectorVideo
	mov	gs, ax			; 視頻段選擇子

	mov	ax, SelectorStack
	mov	ss, ax			; 堆棧段選擇子

	mov	esp, TopOfStack


	; 下面顯示一個字符串
	push	szPMMessage
	call	DispStr
	add	esp, 4

	push	szMemChkTitle
	call	DispStr
	add	esp, 4

	call	DispMemSize		; 顯示內存信息

	call	PagingDemo		; 演示改變頁目錄的效果

	; 到此停止
	jmp	SelectorCode16:0

; 啟動分頁機制 --------------------------------------------------------------
SetupPaging:
	; 根據內存大小計算應初始化多少PDE以及多少頁表
	xor	edx, edx
	mov	eax, [dwMemSize]
	mov	ebx, 400000h	; 400000h = 4M = 4096 * 1024, 一個頁表對應的內存大小
	div	ebx
	mov	ecx, eax	; 此時 ecx 為頁表的個數,也即 PDE 應該的個數
	test	edx, edx
	jz	.no_remainder
	inc	ecx		; 如果余數不為 0 就需增加一個頁表
.no_remainder:
	mov	[PageTableNumber], ecx	; 暫存頁表個數

	; 為簡化處理, 所有線性地址對應相等的物理地址. 并且不考慮內存空洞.

	; 首先初始化頁目錄
	mov	ax, SelectorFlatRW
	mov	es, ax
	mov	edi, PageDirBase0	; 此段首地址為 PageDirBase0
	xor	eax, eax
	mov	eax, PageTblBase0 | PG_P  | PG_USU | PG_RWW
.1:
	stosd
	add	eax, 4096		; 為了簡化, 所有頁表在內存中是連續的.
	loop	.1

	; 再初始化所有頁表
	mov	eax, [PageTableNumber]	; 頁表個數
	mov	ebx, 1024		; 每個頁表 1024 個 PTE
	mul	ebx
	mov	ecx, eax		; PTE個數 = 頁表個數 * 1024
	mov	edi, PageTblBase0	; 此段首地址為 PageTblBase0
	xor	eax, eax
	mov	eax, PG_P  | PG_USU | PG_RWW
.2:
	stosd
	add	eax, 4096		; 每一頁指向 4K 的空間
	loop	.2

	mov	eax, PageDirBase0
	mov	cr3, eax
	mov	eax, cr0
	or	eax, 80000000h
	mov	cr0, eax
	jmp	short .3
.3:
	nop

	ret
; 分頁機制啟動完畢 ----------------------------------------------------------


; 測試分頁機制 --------------------------------------------------------------
PagingDemo:
	mov	ax, cs
	mov	ds, ax
	mov	ax, SelectorFlatRW
	mov	es, ax

	push	LenFoo
	push	OffsetFoo
	push	ProcFoo
	call	MemCpy
	add	esp, 12

	push	LenBar
	push	OffsetBar
	push	ProcBar
	call	MemCpy
	add	esp, 12

	push	LenPagingDemoAll
	push	OffsetPagingDemoProc
	push	ProcPagingDemo
	call	MemCpy
	add	esp, 12

	mov	ax, SelectorData
	mov	ds, ax			; 數據段選擇子
	mov	es, ax

	call	SetupPaging		; 啟動分頁

	call	SelectorFlatC:ProcPagingDemo
	call	PSwitch			; 切換頁目錄,改變地址映射關系
	call	SelectorFlatC:ProcPagingDemo

	ret
; ---------------------------------------------------------------------------


; 切換頁表 ------------------------------------------------------------------
PSwitch:
	; 初始化頁目錄
	mov	ax, SelectorFlatRW
	mov	es, ax
	mov	edi, PageDirBase1	; 此段首地址為 PageDirBase1
	xor	eax, eax
	mov	eax, PageTblBase1 | PG_P  | PG_USU | PG_RWW
	mov	ecx, [PageTableNumber]
.1:
	stosd
	add	eax, 4096		; 為了簡化, 所有頁表在內存中是連續的.
	loop	.1

	; 再初始化所有頁表
	mov	eax, [PageTableNumber]	; 頁表個數
	mov	ebx, 1024		; 每個頁表 1024 個 PTE
	mul	ebx
	mov	ecx, eax		; PTE個數 = 頁表個數 * 1024
	mov	edi, PageTblBase1	; 此段首地址為 PageTblBase1
	xor	eax, eax
	mov	eax, PG_P  | PG_USU | PG_RWW
.2:
	stosd
	add	eax, 4096		; 每一頁指向 4K 的空間
	loop	.2

	; 在此假設內存是大于 8M 的
	mov	eax, LinearAddrDemo
	shr	eax, 22
	mov	ebx, 4096
	mul	ebx
	mov	ecx, eax
	mov	eax, LinearAddrDemo
	shr	eax, 12
	and	eax, 03FFh	; 1111111111b (10 bits)
	mov	ebx, 4
	mul	ebx
	add	eax, ecx
	add	eax, PageTblBase1
	mov	dword [es:eax], ProcBar | PG_P | PG_USU | PG_RWW

	mov	eax, PageDirBase1
	mov	cr3, eax
	jmp	short .3
.3:
	nop

	ret
; ---------------------------------------------------------------------------


; PagingDemoProc ------------------------------------------------------------
PagingDemoProc:
OffsetPagingDemoProc	equ	PagingDemoProc - $$
	mov	eax, LinearAddrDemo
	call	eax
	retf
; ---------------------------------------------------------------------------
LenPagingDemoAll	equ	$ - PagingDemoProc
; ---------------------------------------------------------------------------


; foo -----------------------------------------------------------------------
foo:
OffsetFoo	equ	foo - $$
	mov	ah, 0Ch			; 0000: 黑底    1100: 紅字
	mov	al, 'F'
	mov	[gs:((80 * 17 + 0) * 2)], ax	; 屏幕第 17 行, 第 0 列。
	mov	al, 'o'
	mov	[gs:((80 * 17 + 1) * 2)], ax	; 屏幕第 17 行, 第 1 列。
	mov	[gs:((80 * 17 + 2) * 2)], ax	; 屏幕第 17 行, 第 2 列。
	ret
LenFoo	equ	$ - foo
; ---------------------------------------------------------------------------


; bar -----------------------------------------------------------------------
bar:
OffsetBar	equ	bar - $$
	mov	ah, 0Ch			; 0000: 黑底    1100: 紅字
	mov	al, 'B'
	mov	[gs:((80 * 18 + 0) * 2)], ax	; 屏幕第 18 行, 第 0 列。
	mov	al, 'a'
	mov	[gs:((80 * 18 + 1) * 2)], ax	; 屏幕第 18 行, 第 1 列。
	mov	al, 'r'
	mov	[gs:((80 * 18 + 2) * 2)], ax	; 屏幕第 18 行, 第 2 列。
	ret
LenBar	equ	$ - bar
; ---------------------------------------------------------------------------


; 顯示內存信息 --------------------------------------------------------------
DispMemSize:
	push	esi
	push	edi
	push	ecx

	mov	esi, MemChkBuf
	mov	ecx, [dwMCRNumber]	;for(int i=0;i<[MCRNumber];i++) // 每次得到一個ARDS(Address Range Descriptor Structure)結構
.loop:					;{
	mov	edx, 5			;	for(int j=0;j<5;j++)	// 每次得到一個ARDS中的成員,共5個成員
	mov	edi, ARDStruct		;	{			// 依次顯示:BaseAddrLow,BaseAddrHigh,LengthLow,LengthHigh,Type
.1:					;
	push	dword [esi]		;
	call	DispInt			;		DispInt(MemChkBuf[j*4]); // 顯示一個成員
	pop	eax			;
	stosd				;		ARDStruct[j*4] = MemChkBuf[j*4];
	add	esi, 4			;
	dec	edx			;
	cmp	edx, 0			;
	jnz	.1			;	}
	call	DispReturn		;	printf("\n");
	cmp	dword [dwType], 1	;	if(Type == AddressRangeMemory) // AddressRangeMemory : 1, AddressRangeReserved : 2
	jne	.2			;	{
	mov	eax, [dwBaseAddrLow]	;
	add	eax, [dwLengthLow]	;
	cmp	eax, [dwMemSize]	;		if(BaseAddrLow + LengthLow > MemSize)
	jb	.2			;
	mov	[dwMemSize], eax	;			MemSize = BaseAddrLow + LengthLow;
.2:					;	}
	loop	.loop			;}
					;
	call	DispReturn		;printf("\n");
	push	szRAMSize		;
	call	DispStr			;printf("RAM size:");
	add	esp, 4			;
					;
	push	dword [dwMemSize]	;
	call	DispInt			;DispInt(MemSize);
	add	esp, 4			;

	pop	ecx
	pop	edi
	pop	esi
	ret
; ---------------------------------------------------------------------------

%include	"lib.inc"	; 庫函數

SegCode32Len	equ	$ - LABEL_SEG_CODE32
; END of [SECTION .s32]


; 16 位代碼段. 由 32 位代碼段跳入, 跳出后到實模式
[SECTION .s16code]
ALIGN	32
[BITS	16]
LABEL_SEG_CODE16:
	; 跳回實模式:
	mov	ax, SelectorNormal
	mov	ds, ax
	mov	es, ax
	mov	fs, ax
	mov	gs, ax
	mov	ss, ax

	mov	eax, cr0
	and	al, 11111110b
	mov	cr0, eax

LABEL_GO_BACK_TO_REAL:
	jmp	0:LABEL_REAL_ENTRY	; 段地址會在程序開始處被設置成正確的值

Code16Len	equ	$ - LABEL_SEG_CODE16

; END of [SECTION .s16code]

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美xxxx老人做受| 久久精品国产久精国产爱| 亚洲v精品v日韩v欧美v专区| 国产成人福利片| 欧美视频一区二区三区四区 | 欧美日韩不卡一区二区| 久久亚洲精品国产精品紫薇| 亚洲成人中文在线| 91丨九色丨蝌蚪富婆spa| 亚洲精品一区二区在线观看| 亚洲国产精品久久不卡毛片| 成人在线视频一区二区| 日韩视频国产视频| 性做久久久久久免费观看| 色八戒一区二区三区| 中文字幕亚洲区| 成人午夜精品在线| 国产色一区二区| 久久99精品一区二区三区 | 久久久久久一二三区| 麻豆精品视频在线观看免费| 欧美人与z0zoxxxx视频| 亚洲一卡二卡三卡四卡无卡久久| 97精品久久久久中文字幕| 国产精品九色蝌蚪自拍| a在线欧美一区| 国产精品狼人久久影院观看方式| 国产福利一区在线| 国产喷白浆一区二区三区| 国产成人啪免费观看软件| 国产色综合久久| voyeur盗摄精品| 国产精品色在线| 99久久99久久免费精品蜜臀| 亚洲女厕所小便bbb| 欧美亚洲精品一区| 午夜精品视频在线观看| 91麻豆精品国产| 美国av一区二区| 国产日韩欧美综合一区| 成人在线视频首页| 亚洲精品水蜜桃| 欧美日本一区二区三区四区 | 亚洲精品美腿丝袜| 欧美在线观看你懂的| 日韩在线一区二区| 久久综合99re88久久爱| 成人网在线免费视频| 亚洲欧洲av另类| 正在播放亚洲一区| 国产乱码精品一区二区三区忘忧草 | 欧美日韩在线综合| 蜜臀a∨国产成人精品| 久久免费视频色| 色哟哟亚洲精品| 蜜桃久久久久久久| 欧美激情一区不卡| 在线观看亚洲a| 极品美女销魂一区二区三区| 1024成人网色www| 欧美高清精品3d| 国产盗摄精品一区二区三区在线| 国产精品久久久久精k8| 欧美日韩亚洲不卡| 国产91露脸合集magnet| 亚洲主播在线观看| 久久久久久久网| 欧美特级限制片免费在线观看| 麻豆精品精品国产自在97香蕉| 亚洲国产精品精华液ab| 5858s免费视频成人| 成人av影视在线观看| 日本不卡一区二区| 亚洲人成精品久久久久| 26uuu另类欧美| 欧美挠脚心视频网站| 成人动漫在线一区| 久久91精品国产91久久小草| 一区二区三区波多野结衣在线观看| 精品成人佐山爱一区二区| 欧亚一区二区三区| 99久久久无码国产精品| 国产又粗又猛又爽又黄91精品| 亚洲一区二区三区四区在线| 国产丝袜美腿一区二区三区| 日韩一级完整毛片| 欧美日韩国产一级二级| 色婷婷综合中文久久一本| 粉嫩欧美一区二区三区高清影视| 亚洲成人av免费| 综合中文字幕亚洲| 久久久www免费人成精品| 欧美一区二区播放| 色999日韩国产欧美一区二区| 国产成人精品亚洲日本在线桃色 | 94色蜜桃网一区二区三区| 精品在线你懂的| 免费精品视频在线| 秋霞午夜av一区二区三区| 亚洲国产婷婷综合在线精品| 日韩毛片精品高清免费| 国产精品色在线| 中文字幕一区二区三区在线观看 | 日本黄色一区二区| 不卡的av中国片| 成人晚上爱看视频| 国产成人av电影在线播放| 国产一级精品在线| 国产成人99久久亚洲综合精品| 国产一区二区美女| 丁香天五香天堂综合| 丰满白嫩尤物一区二区| 国产成人日日夜夜| 成人涩涩免费视频| www.亚洲国产| 91麻豆国产在线观看| 91丨九色porny丨蝌蚪| 在线看不卡av| 在线播放亚洲一区| 日韩欧美国产电影| 欧美精品一区二区三区久久久 | 国产麻豆日韩欧美久久| 国产乱子轮精品视频| 国产福利精品一区| 91香蕉视频在线| 色婷婷一区二区| 欧美日韩亚州综合| 精品国精品国产尤物美女| 国产午夜精品在线观看| 亚洲欧美视频在线观看| 亚洲影院久久精品| 久久精品国产精品亚洲综合| 国产精品一区二区不卡| 成人av免费网站| 欧美日韩卡一卡二| 精品免费99久久| 中文字幕一区二区三中文字幕| 一区二区三区免费网站| 美女免费视频一区| 99久久精品国产精品久久 | 91女厕偷拍女厕偷拍高清| 欧美日韩在线播| 精品播放一区二区| √…a在线天堂一区| 五月综合激情日本mⅴ| 国内精品第一页| 91美女片黄在线观看91美女| 欧美日韩精品一区二区三区| 久久精品一区二区三区不卡牛牛 | 国产精品国产自产拍高清av王其| 亚洲综合一二三区| 美女视频黄免费的久久| 色综合天天综合| 欧美日韩一区视频| 成人av午夜影院| 欧美精品视频www在线观看| 欧美一区二区黄色| 亚洲少妇最新在线视频| 视频在线观看一区二区三区| 成人深夜视频在线观看| 欧美一区二区三区啪啪| 亚洲女人的天堂| 国产精品一卡二卡| 欧美一区二区网站| 亚洲视频综合在线| 国产真实乱子伦精品视频| 欧美日韩一区二区三区不卡| 国产女同性恋一区二区| 久久国产精品99精品国产| 91福利在线导航| 自拍偷拍欧美精品| 国产精品一区二区在线看| 制服丝袜在线91| 亚洲国产一区二区视频| 国产乱对白刺激视频不卡| 欧美一二三区精品| 午夜激情久久久| 一本到不卡精品视频在线观看| 国产三级三级三级精品8ⅰ区| 人妖欧美一区二区| 欧美精品少妇一区二区三区| 亚洲成人精品影院| 色噜噜狠狠色综合中国 | 日韩欧美中文字幕精品| 亚洲成人激情av| 在线区一区二视频| 亚洲男人天堂一区| 成人国产一区二区三区精品| 久久综合色播五月| 精品一区二区三区在线视频| 欧美一区二区三区四区在线观看 | 亚洲国产你懂的| 色噜噜久久综合| 亚洲精品国产成人久久av盗摄| 成人午夜激情影院| 亚洲色图视频免费播放| 97久久超碰国产精品| 亚洲天堂免费看| 一本大道av伊人久久综合| 亚洲精品一卡二卡|