亚洲欧美第一页_禁久久精品乱码_粉嫩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		; 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

; 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	; 此段首地址為 PageDirBase
	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	; 此段首地址為 PageTblBase
	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	; 此段首地址為 PageDirBase
	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	; 此段首地址為 PageTblBase
	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一区二区三区免费野_久草精品视频
午夜电影一区二区| 精品综合免费视频观看| 亚洲精品在线三区| 欧美性色黄大片手机版| 99re6这里只有精品视频在线观看 99re8在线精品视频免费播放 | 一区二区三区在线视频观看58 | 国产盗摄一区二区三区| 免费成人性网站| 美腿丝袜亚洲综合| 国产又黄又大久久| 国产成人av一区二区三区在线| 国模少妇一区二区三区| 国产精品亚洲第一| 波多野结衣中文一区| 91一区二区三区在线观看| av电影在线观看完整版一区二区| 国产欧美精品一区aⅴ影院| 色妹子一区二区| 97精品国产97久久久久久久久久久久 | 91蜜桃网址入口| 一道本成人在线| 欧美日韩视频专区在线播放| 欧美色精品在线视频| 欧美一区二区在线免费观看| 日韩欧美成人激情| 久久综合九色综合97婷婷 | 日韩一级完整毛片| 亚洲精品一区在线观看| 91精品国产综合久久福利| 色天使色偷偷av一区二区| 色8久久精品久久久久久蜜| 欧美日韩一区二区三区四区五区 | 国产精品少妇自拍| 尤物在线观看一区| 久久精品av麻豆的观看方式| 成人伦理片在线| 欧美精品在线观看一区二区| 91老师片黄在线观看| 在线精品视频一区二区| 精品国产一区二区亚洲人成毛片| 国产精品久久久久久久第一福利| 亚洲国产欧美在线| 狠狠色综合色综合网络| 色综合久久中文综合久久牛| 精品久久人人做人人爽| 亚洲激情图片一区| 国产高清不卡一区| 91精品国产色综合久久ai换脸 | 色综合久久六月婷婷中文字幕| 制服丝袜亚洲播放| 亚洲欧美色图小说| 国产精品一级二级三级| 欧美日韩精品一区二区三区| 国产精品视频一区二区三区不卡| 同产精品九九九| www.亚洲色图.com| 久久久无码精品亚洲日韩按摩| 午夜精品一区二区三区电影天堂| 国产suv精品一区二区三区 | 国产精品资源网站| 欧美二区在线观看| 一区二区三区四区五区视频在线观看 | 欧美日韩亚洲国产综合| 亚洲日本一区二区| 国产大陆精品国产| 日韩精品一区二区三区老鸭窝 | 岛国av在线一区| 久久婷婷国产综合精品青草| 老司机免费视频一区二区| 欧美影院一区二区| 一区二区三区四区在线播放| 波多野结衣欧美| 亚洲国产成人午夜在线一区| 国产乱国产乱300精品| 日韩久久久精品| 美女视频一区二区三区| 日韩一区二区在线免费观看| 丝瓜av网站精品一区二区| 欧美自拍偷拍一区| 亚洲自拍欧美精品| 欧美综合亚洲图片综合区| 亚洲综合色在线| 欧美三级在线看| 日本亚洲免费观看| 久久久久久99精品| 粉嫩一区二区三区性色av| 国产目拍亚洲精品99久久精品| 国产成人午夜片在线观看高清观看| 久久久久久久久免费| 北岛玲一区二区三区四区| 国产欧美综合色| 99在线热播精品免费| 亚洲乱码精品一二三四区日韩在线| 色播五月激情综合网| 亚洲国产va精品久久久不卡综合| 日本韩国精品一区二区在线观看| 五月婷婷久久综合| 欧美成人欧美edvon| 成人晚上爱看视频| 一个色妞综合视频在线观看| 日韩一区二区三区在线| 国产iv一区二区三区| 亚洲精品精品亚洲| 日韩欧美国产精品一区| 成人免费看黄yyy456| 一区二区三区四区在线| 欧美电影免费观看高清完整版在线观看| 国产一区视频在线看| 国产精品妹子av| 在线不卡免费欧美| 成人一区二区视频| 一区二区三区加勒比av| 7777精品伊人久久久大香线蕉| 国产呦萝稀缺另类资源| 亚洲一二三区不卡| 欧美国产在线观看| 欧美巨大另类极品videosbest| 高清久久久久久| 性感美女极品91精品| 国产午夜精品一区二区三区四区 | 精品久久人人做人人爱| 色一情一乱一乱一91av| 国产一区二区不卡| 视频一区欧美日韩| 中文字幕一区免费在线观看| 日韩欧美国产三级| 欧美日韩激情一区二区| 成人av综合在线| 激情综合亚洲精品| 图片区日韩欧美亚洲| 亚洲欧美欧美一区二区三区| 久久综合九色综合欧美98 | 国产精品自产自拍| 日韩综合在线视频| 亚洲人成在线观看一区二区| 久久久久久久久久看片| 日韩一区二区三区视频在线观看| 在线精品亚洲一区二区不卡| 成人免费视频视频| 国产精品18久久久久久vr| 美女视频一区在线观看| 午夜电影网亚洲视频| 亚洲观看高清完整版在线观看| 中文字幕一区在线观看视频| 国产精品素人视频| 久久久久久久久久久久久夜| 久久先锋影音av鲁色资源网| 精品国产电影一区二区| 欧美成人官网二区| 日韩免费高清视频| 精品国产成人在线影院| 亚洲精品一区二区三区影院 | 欧美日韩精品一区二区三区| 欧美性猛交xxxx乱大交退制版| 欧美在线免费视屏| 欧美最新大片在线看| 欧美日韩一二三| 欧美男生操女生| 8v天堂国产在线一区二区| 4438亚洲最大| 91精品久久久久久久91蜜桃| 日韩免费看的电影| 国产欧美日韩在线观看| 国产日韩高清在线| 中文字幕欧美国产| 最新国产成人在线观看| 亚洲激情一二三区| 亚洲电影第三页| 美女视频黄久久| 国产在线播放一区| 成人动漫中文字幕| 一本色道久久综合精品竹菊| 欧美日韩在线电影| 欧美电视剧在线看免费| 国产欧美一区二区精品秋霞影院 | 韩国精品久久久| 国产乱妇无码大片在线观看| 成人av综合在线| 欧美日韩国产三级| www激情久久| 亚洲品质自拍视频| 五月综合激情日本mⅴ| 国产老妇另类xxxxx| 91国偷自产一区二区三区成为亚洲经典| 欧美视频一二三区| 精品欧美一区二区在线观看| 国产精品久久久久久久久免费桃花| 亚洲亚洲精品在线观看| 麻豆国产精品官网| 色综合一个色综合亚洲| 欧美一二三区在线| 一区二区三区鲁丝不卡| 精彩视频一区二区| 色综合中文字幕国产| 久久精品亚洲精品国产欧美| 一区二区三区视频在线观看| 国产精品88av| 欧美一区二区三区视频在线观看| 国产精品久久免费看| 日韩电影在线观看一区|