青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

luqingfei@C++

為中華之崛起而崛起!
兼聽(tīng)則明,偏聽(tīng)則暗。

匯編語(yǔ)言--使用BIOS進(jìn)行鍵盤(pán)輸入和磁盤(pán)讀寫(xiě)

 

使用BIOS進(jìn)行鍵盤(pán)輸入和磁盤(pán)讀寫(xiě)

 

大多數(shù)有用的程序都需要處理用戶(hù)的輸入,鍵盤(pán)輸入是最基本的輸入。程序和數(shù)據(jù)通常需要長(zhǎng)期存儲(chǔ),磁盤(pán)是最常用的存儲(chǔ)設(shè)備。

BIOS為這兩種外設(shè)的I/O提供了最基本的中斷例程。下面將對(duì)它們的應(yīng)用和相關(guān)問(wèn)題進(jìn)行學(xué)習(xí)。

 

int 9中斷例程對(duì)鍵盤(pán)輸入的處理

鍵盤(pán)輸入將引發(fā)9號(hào)中斷,BIOS提供了int 9中斷例程。

CPU9號(hào)中斷發(fā)生后,執(zhí)行int 9中斷例程,從60h端口讀出掃描碼,并將其轉(zhuǎn)化為相應(yīng)的ASCII碼或狀態(tài)信息,存儲(chǔ)在內(nèi)存的指定空間(鍵盤(pán)緩沖區(qū)或狀態(tài)字節(jié))中。

 

一般的鍵盤(pán)輸入,在CPU執(zhí)行完int 9中斷例程后,都放到了鍵盤(pán)緩沖區(qū)中。鍵盤(pán)緩沖區(qū)有16個(gè)字單元,可以存儲(chǔ)15個(gè)按鍵的掃描碼和對(duì)應(yīng)的ASCII碼。

 

下面我們按照鍵盤(pán)緩沖區(qū)的邏輯結(jié)構(gòu),來(lái)看一下鍵盤(pán)輸入的掃描碼和對(duì)應(yīng)的ASCII碼是如何寫(xiě)入鍵盤(pán)緩沖區(qū)的。

 

注意:在我們的課程中,僅在邏輯結(jié)構(gòu)的基礎(chǔ)上,討論BIOS鍵盤(pán)緩沖區(qū)的讀寫(xiě)問(wèn)題。其實(shí)鍵盤(pán)緩沖區(qū)是用環(huán)形隊(duì)列結(jié)構(gòu)管理的內(nèi)存區(qū),但我們不對(duì)隊(duì)列和環(huán)形隊(duì)列的實(shí)現(xiàn)進(jìn)行討論,因?yàn)槟鞘橇硪婚T(mén)專(zhuān)業(yè)課《數(shù)據(jù)結(jié)構(gòu)》的內(nèi)容。

 

下面,我們通過(guò)下面幾個(gè)鍵:

ABCDEshift_AA

的輸入過(guò)程,簡(jiǎn)要地看一下int 9中斷例程對(duì)鍵盤(pán)輸入的處理方法:

1)初始狀態(tài)下,沒(méi)有鍵盤(pán)輸入,鍵盤(pán)緩沖區(qū)空,此時(shí)沒(méi)有任何元素:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2)按下A鍵,引發(fā)鍵盤(pán)中斷:CPU執(zhí)行int 9中斷例程,從60h端口讀出A鍵的通碼;然后檢測(cè)狀態(tài)字節(jié),看看是否有shiftCtrl等切換鍵按下;發(fā)現(xiàn)沒(méi)有切換鍵按下,則將A鍵的掃描碼1eh和對(duì)應(yīng)的ASCII碼,即字母“a”的ASCII61h,寫(xiě)入鍵盤(pán)緩沖區(qū)。緩沖區(qū)的字單元中,高位字節(jié)存儲(chǔ)掃描碼,低位字節(jié)存儲(chǔ)ASCII碼。此時(shí)緩沖區(qū)中的內(nèi)容如下:

1E61

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3)按下B鍵,引發(fā)鍵盤(pán)中斷:CPU執(zhí)行int 9中斷例程,從60h端口讀出B鍵的通碼;然后檢測(cè)狀態(tài)字節(jié),看看是否有切換鍵按下;發(fā)現(xiàn)沒(méi)有切換鍵按下,將B鍵的掃描碼30h和對(duì)應(yīng)的ASCII碼,即字母“b”的ASCII62h,寫(xiě)入鍵盤(pán)緩沖區(qū)。此時(shí)緩沖區(qū)中的內(nèi)容如下:

1E61

3062

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4)按下CDE鍵后,緩沖區(qū)中的內(nèi)容如下:

1E61

2062

2E63

2064

1265

 

 

 

 

 

 

 

 

 

 

 

5)按下左shift鍵,引發(fā)鍵盤(pán)中斷:int 9中斷例程接收左shift鍵的通碼,設(shè)置0040:17處的狀態(tài)字節(jié)的第1位為1,表示左shift鍵按下。

6)按下A鍵,引發(fā)鍵盤(pán)中斷:CPU執(zhí)行int 9中斷例程;從60h端口讀出A鍵的通碼;檢測(cè)狀態(tài)字節(jié),看看是否有切換鍵按下,發(fā)現(xiàn)左shift鍵被按下,則將A鍵的掃描碼1Ehshift_A對(duì)應(yīng)的ASCCII碼,即字母“A”的ASCII41,寫(xiě)入鍵盤(pán)緩沖區(qū),此時(shí)緩沖區(qū)中的內(nèi)容如下:

1E61

2062

2E63

2064

1265

1E41

 

 

 

 

 

 

 

 

 

 

7)松開(kāi)左shift鍵,引發(fā)鍵盤(pán)中斷:int 9中斷例程接收左shift鍵的斷碼,設(shè)置0040:17處的狀態(tài)字節(jié)的第1位為0,表示左shift鍵松開(kāi)。

8)按下A鍵,引發(fā)鍵盤(pán)中斷:CPU執(zhí)行int 9中斷例程,從60h端口讀出A鍵的通碼,然后檢測(cè)狀態(tài)字節(jié),看看是否有切換鍵按下,發(fā)現(xiàn)沒(méi)有切換鍵按下,則將A鍵的掃描碼1EhA對(duì)應(yīng)的ASCCII碼,即字母“a”的ASCII61h,寫(xiě)入鍵盤(pán)緩沖區(qū),此時(shí)緩沖區(qū)中的內(nèi)容如下:

1E61

2062

2E63

2064

1265

1E41

1E61

 

 

 

 

 

 

 

 

 

 

 

 

使用int 16h中斷例程讀取鍵盤(pán)緩沖區(qū)

BIOS提供了int 16h中斷例程供程序員調(diào)用。int 16h中斷例程中包含的一個(gè)最重要的功能是從鍵盤(pán)緩沖區(qū)中讀取一個(gè)鍵盤(pán)輸入,該功能的編號(hào)為0

下面的指令從鍵盤(pán)緩沖區(qū)中讀取一個(gè)鍵盤(pán)輸入,并將其從緩沖區(qū)中刪除

mov ah,0

int 16h

結(jié)果:(ah)=掃描碼,(al)=ASCII碼。

 

int 16h中斷例程的0號(hào)功能,進(jìn)行如下的工作:

1)檢測(cè)鍵盤(pán)緩沖區(qū)中是否有數(shù)據(jù);

2)沒(méi)有則繼續(xù)做第1步;

3)讀取緩沖區(qū)第一個(gè)字單元中的鍵盤(pán)輸入;

4)將讀取的掃描碼送入ahASCII碼送入al

5)將已讀取的鍵盤(pán)輸入從緩沖區(qū)中刪除。

 

可見(jiàn),BIOSint 9中斷例程和int 16h中斷例程是一對(duì)相互配合的程序,int 9中斷例程向鍵盤(pán)緩沖區(qū)中寫(xiě)入,int 16h中斷例程從緩沖區(qū)中讀出。

它們寫(xiě)入和讀出的時(shí)機(jī)不同,int 9中斷例程是在有按鍵按下的時(shí)候向鍵盤(pán)緩沖區(qū)中寫(xiě)入數(shù)據(jù);而int 16h中斷例程是在應(yīng)用程序?qū)ζ溥M(jìn)行調(diào)用的時(shí)候,將數(shù)據(jù)從鍵盤(pán)緩沖區(qū)中讀出。

 

我們?cè)诰帉?xiě)一般的處理鍵盤(pán)輸入的程序的時(shí)候,可以調(diào)用int 16h從鍵盤(pán)緩沖區(qū)中讀取鍵盤(pán)的輸入。

 

編程,接收用戶(hù)的鍵盤(pán)輸入,輸入“r”,將屏幕上的字符設(shè)置為紅色;輸入“g”,將屏幕上的字符設(shè)置為綠色;輸入“b”,將屏幕上的字符設(shè)置為藍(lán)色。

 

程序如下:

assume cs:code

code segment

 start:mov ah,0

        int 16h

       

        mov ah,1

        cmp al,'r'

        je red

        cmp al,'g'

        je green

        cmp al,'b'

        je blue

        jmp short sret

       

    red:shl ah,1

 green:shl ah,1

   blue:mov bx,0b800h

        mov es,bx

        mov cx,2000

      s:add byte ptr es:[bx],11111000b

        or es:[bx],ah

        add bx,2

        loop s

       

   sret:mov ax,4c00h

        int 21h

       

code ends

end start

 

 

 

字符串的輸入

用戶(hù)通過(guò)鍵盤(pán)輸入的通常不僅僅是單個(gè)字符而是字符串。

最基本的字符串輸入程序,需要具備下面的功能:

1)在輸入的同時(shí)需要顯示這個(gè)字符串;

2)一般在輸入回車(chē)符后,字符串輸入結(jié)束;

3)能夠刪除已經(jīng)輸入的字符。

 

編寫(xiě)一個(gè)接收字符串的輸入子程序,實(shí)現(xiàn)上面三個(gè)基本功能。

子程序的參數(shù)如下:

(dh)(dl)=字符串在屏幕上顯示的行、列位置;

ds:si指向字符串的存儲(chǔ)空間,字符串以0為結(jié)尾符。

 

分析:

1)字符的輸入和刪除。

       每個(gè)新輸入的字符都存儲(chǔ)在前一個(gè)輸入的字符之后,而刪除是從最后面的字符進(jìn)行的。

       看下面的過(guò)程:

       空字符串:

       輸入“a”:a

       輸入“b”:ab

       輸入“c”:abc

       輸入“d”:abcd

       刪除一個(gè)字符:abc

       刪除一個(gè)字符:ab

       刪除一個(gè)字符:a

       刪除一個(gè)字符:

 

       可以看出在字符串輸入的過(guò)程中,字符的輸入和輸出是按照棧的訪(fǎng)問(wèn)規(guī)則進(jìn)行了的,即后進(jìn)先出。這樣,我們就可以用棧的方式來(lái)管理字符串的存儲(chǔ)空間,也就是說(shuō),字符串的存儲(chǔ)空間實(shí)際上是一個(gè)字符棧。字符棧中的所有字符,從棧底到棧頂,組成一個(gè)字符串。

 

2)在輸入回車(chē)符后,字符串輸入結(jié)束。

       輸入回車(chē)符后,可以在字符串中加入0,表示字符串結(jié)束。

 

3)在輸入的同時(shí)需要顯示這個(gè)字符串。

       每次有新的字符輸入和刪除一個(gè)字符的時(shí)候,都應(yīng)該重新顯示字符串,即從字符棧的棧底到棧頂,顯示所有的字符。

 

4)程序的處理過(guò)程。

       1)調(diào)用int 16h讀取鍵盤(pán)輸入;

       2)如果是字符,進(jìn)入字符棧,顯示字符棧中的所有字符;繼續(xù)執(zhí)行1

       3)如果是退格鍵,從字符棧中彈出一個(gè)字符,顯示字符棧中的所有字符;繼續(xù)執(zhí)行1

       4)如果是Enter鍵,向字符棧中壓入0,返回。

 

       從程序的處理過(guò)程中可以看出,字符棧的入棧、出棧和顯示棧中的內(nèi)容,是需要在多處使用的功能,應(yīng)該將它們寫(xiě)為子程序。

       子程序:字符棧的入棧、出棧和顯示。

       參數(shù)說(shuō)明:(ah)=功能號(hào),0表示入棧,1表示出棧,2表示顯示;

                            ds:si指向字符棧空間;

                            對(duì)于0號(hào)功能:(al)=入棧字符;

                            對(duì)于1號(hào)功能:(al)=返回字符;

                            對(duì)于2號(hào)功能:(dh)(dl)=字符串在屏幕上顯示的行、列位置。

 

charstack:       jmp short charstart

       table dw charpush,charpop,charshow

       top dw 0             ;棧頂

 

 charstart:    push bx

                     push dx

                     push di

                     push es

 

                     cmp ah,2

                     ja sret

                     mov bl,ah

                     mov bh,0

                     add bx,bx

                     jmp word ptr table[bx]

 

 charpush:    mov bx,top

                     mov [si][bx],al

                     inc top

                     jmp sret

 

 charpop:     cmp top,0

                     je sret

                     dec top

                     mov bx,top

                     mov al,[si][bx]

                     jmp sret

 

 charshow:   mov bx,0b800b

                     mov es,bx

                     mov al,160

                     mov ah,0

                     mul dh

                     mov di,ax

                     add dl,dl

                     mov dh,0

                     add di,dx

 

                     mov bx,0

 

 charshows: cmp bx,top

                     jne noempty

                     mov byte ptr es:[dl],’ ‘

                     jmp sret

 noempty:     mov al,[si][bx]

                     mov es:[di],al

                     mov byte ptr es:[di+2], ‘ ‘

                     inc bx

                     add di,2

                     jmp charshows

sret:        pop es

              pop di

              pop dx

              pop bx

              ret

 

顯示棧中字符的時(shí)候,要注意清除屏幕上上一次顯示的內(nèi)容。

 

完整的接收字符串輸入的子程序:

getstr:     push ax

getstrs:    mov ah,0

              int 16h

 

              cmp al,20h

              jb nochar               ;ASCII碼小于0,說(shuō)明不是字符

              mov ah,0

              call charstack         ;字符入棧

              mov ah,2

              call charstack         ;顯示棧中的字符

              jmp getstrs

 nochar:cmp ah,0eh            ;退格鍵的掃描碼

              je backspace

              cmp ah,1ch           ;回車(chē)鍵的掃描碼

              je enter

              jmp getstrs

backspace:mov ah,1

              call charstack         ;字符出棧

              mov ah,2

              call charstack         ;顯示棧中的字符

              jmp getstrs

 enter:     mov al,0

              mov ah,0

              call charstack         ;0入棧

              mov ah,2

              call charstack               ;顯示棧中的字符

              pop ax

              ret

 

 

 

 

應(yīng)用int 13h中斷例程對(duì)磁盤(pán)進(jìn)行讀寫(xiě)

BIOS提供的訪(fǎng)問(wèn)磁盤(pán)的中斷例程為int 13h

 

入口參數(shù):

(ah)=int 13h的功能號(hào)(2表示讀扇區(qū)、3表示寫(xiě)扇區(qū))

(al)=讀取的扇區(qū)數(shù)/寫(xiě)入的扇區(qū)數(shù)

(ch)=磁道號(hào)

(cl)=扇區(qū)號(hào)

(dh)=磁頭號(hào)(對(duì)于軟盤(pán)即面號(hào),因?yàn)橐粋€(gè)面用一個(gè)磁頭來(lái)讀寫(xiě)。)

(dl)=驅(qū)動(dòng)器號(hào)       軟驅(qū)從0開(kāi)始,0:軟驅(qū)A1:軟驅(qū)B

                            硬盤(pán)從80h開(kāi)始,80h:硬盤(pán)C81h:硬盤(pán)D

es:bx指向接收從扇區(qū)讀入數(shù)據(jù)的內(nèi)存區(qū)/將寫(xiě)入磁盤(pán)的數(shù)據(jù)

 

返回參數(shù):

操作成功:(ah)=0(al)=讀入的扇區(qū)數(shù)/寫(xiě)入的扇區(qū)數(shù)

操作失敗:(ah)=出錯(cuò)代碼

 

以下指令,讀取001扇區(qū)的內(nèi)容到內(nèi)存單元0:200

mov ax,0

mov es,ax

mov bx,200h

 

mov al,1

mov ch,0

mov cl,1

mov dl,0

mov dh,0

mov ah,2

int 13h

 

以下指令,將0:200中的內(nèi)容寫(xiě)入001扇區(qū):

mov ax,0

mov es,ax

mov bx,200h

 

mov al,1

mov ch,0

mov cl,1

mov dl,0

mov dh,0

mov ah,3

int 13h

 

 

 

 

PC機(jī)是如何進(jìn)入操作系統(tǒng)的?

開(kāi)機(jī)后,CPU自動(dòng)進(jìn)入到FFFF:0單元處執(zhí)行,此處有一條轉(zhuǎn)跳指令。CPU執(zhí)行該指令后,轉(zhuǎn)去執(zhí)行BIOS中的硬件系統(tǒng)檢測(cè)和初始化程序。

 

初始化程序?qū)⒔?/span>BIOS所支持的中斷向量,即將BIOS提供的中斷例程的入口地址登記在中斷向量表中。

 

硬件系統(tǒng)檢測(cè)和初始化完成后,調(diào)用int 19h進(jìn)行操作系統(tǒng)的引導(dǎo)。

如果設(shè)為從軟盤(pán)啟動(dòng)操作系統(tǒng),則int 19h將主要完成以下工作:

1)控制0號(hào)軟驅(qū),讀取軟盤(pán)001扇區(qū)的內(nèi)容到0:7c00

2)將CS:IP指向0:7c00

 

軟盤(pán)的001扇區(qū)中裝有操作系統(tǒng)引導(dǎo)程序。int 19h將其裝到0:7c00處后,設(shè)置CPU0:7c00開(kāi)始執(zhí)行此處的引導(dǎo)程序,操作系統(tǒng)被激活,控制計(jì)算機(jī)。

 

 

 

posted on 2010-08-04 16:50 luqingfei 閱讀(5154) 評(píng)論(1)  編輯 收藏 引用 所屬分類(lèi): 匯編語(yǔ)言基礎(chǔ)學(xué)習(xí)

評(píng)論

# re: 匯編語(yǔ)言--使用BIOS進(jìn)行鍵盤(pán)輸入和磁盤(pán)讀寫(xiě) 2011-06-13 19:22 abcgril

您好:
最近在寫(xiě)一個(gè)terminate and stay resident程式
從鍵盤(pán)接收"*"(shift+8)
然後會(huì)顯示一段字串,如ABCD
但按其他鍵如"8"卻沒(méi)有反應(yīng)

我已經(jīng)寫(xiě)出大部分
可以傳給你看看
目前程式是輸入"*"和"8"都會(huì)顯示一段ABCD
所以還沒(méi)完成!
希望您可以幫忙
或是教我怎樣寫(xiě)
不知道要怎樣改了
謝謝  回復(fù)  更多評(píng)論   

導(dǎo)航

<2010年8月>
25262728293031
1234567
891011121314
15161718192021
22232425262728
2930311234

統(tǒng)計(jì)

留言簿(6)

隨筆分類(lèi)(109)

隨筆檔案(105)

Blogers

Game

Life

NodeJs

Python

Useful Webs

大牛

搜索

積分與排名

最新評(píng)論

閱讀排行榜

評(píng)論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            国产精品高潮呻吟| 美日韩精品视频| 狠狠v欧美v日韩v亚洲ⅴ| 欧美日韩三级电影在线| 欧美精品一区二区三区蜜桃| 毛片基地黄久久久久久天堂| 久久深夜福利| 欧美电影免费| 欧美三级在线视频| 国产欧美日韩综合精品二区| 精品动漫av| 一本色道久久综合亚洲精品婷婷| 亚洲午夜久久久久久久久电影院| 欧美亚洲一区二区在线| 猫咪成人在线观看| 99在线精品免费视频九九视| 久久国产黑丝| 欧美成人一区在线| 国产精品久久网| 亚洲福利一区| 欧美一区二区三区视频在线观看 | 欧美永久精品| 免费观看久久久4p| 国产日韩欧美在线播放| 亚洲韩国精品一区| 好吊视频一区二区三区四区| 亚洲黄网站黄| 欧美一级午夜免费电影| 欧美电影在线播放| 亚洲永久免费av| 欧美日产国产成人免费图片| 国产女主播一区二区三区| 亚洲人成人99网站| 久久综合综合久久综合| 亚洲综合视频网| 欧美喷水视频| 亚洲国产午夜| 久久久999精品视频| 国产精品99久久久久久久久久久久| 久久久噜噜噜久久中文字免| 国产精品综合色区在线观看| 在线一区日本视频| 亚洲国产福利在线| 久久久久久久久久久久久女国产乱 | 欧美激情视频一区二区三区免费 | 亚洲视频在线观看网站| 欧美激情一区二区三区| 久久国产精品亚洲va麻豆| 国产精品成人一区二区艾草| 最新热久久免费视频| 久久久噜噜噜久久狠狠50岁| 一区二区欧美精品| 欧美日韩伊人| 亚洲性线免费观看视频成熟| 日韩视频在线一区二区三区| 欧美国产在线视频| 9l国产精品久久久久麻豆| 亚洲国产精品99久久久久久久久| 裸体丰满少妇做受久久99精品 | 在线看欧美视频| 久久久久国产精品午夜一区| 午夜精品一区二区三区在线| 国产欧美激情| 久久精品一区二区三区四区| 欧美一区二区三区免费大片| 国产精品热久久久久夜色精品三区| 亚洲视频在线观看三级| aaa亚洲精品一二三区| 欧美日韩日本视频| 亚洲一区二区三区视频| 久久精品国产久精国产思思| 极品少妇一区二区三区精品视频| 欧美在线关看| 久久福利影视| 亚洲人成人一区二区在线观看| 亚洲电影av| 欧美日韩国产123区| 亚洲淫片在线视频| 亚洲欧美日韩国产中文在线| 国产欧美精品一区| 麻豆免费精品视频| 欧美伦理91i| 欧美一级免费视频| 久久久久久伊人| 99re热这里只有精品视频 | 这里只有精品视频在线| 国产精品乱码一区二区三区| 欧美一级欧美一级在线播放| 久久久久久久一区二区| 亚洲三级国产| 亚洲五月婷婷| 亚洲第一在线综合在线| 日韩一级大片在线| 国内精品美女在线观看| 亚洲欧洲精品一区二区三区| 国产精品嫩草影院av蜜臀| 老司机免费视频一区二区| 欧美另类一区二区三区| 欧美在线一二三| 欧美激情视频一区二区三区不卡| 亚洲欧美国产77777| 久久久亚洲国产美女国产盗摄| 在线中文字幕日韩| 久久综合久久综合这里只有精品| 亚洲天堂视频在线观看| 久久在线免费观看视频| 小黄鸭精品aⅴ导航网站入口 | 国产午夜久久| 99精品国产在热久久下载| 影音先锋久久| 亚洲午夜一区二区三区| 亚洲精品一线二线三线无人区| 欧美一区二区成人6969| 亚洲视频综合在线| 欧美成人免费一级人片100| 久久成人亚洲| 国产精品草草| 亚洲精品中文字幕在线| 亚洲高清在线观看| 久久精品91久久香蕉加勒比| 亚洲欧美日韩国产综合精品二区| 欧美激情一区二区三区全黄 | 久久久噜噜噜久噜久久| 亚洲欧美国产另类| 欧美视频在线观看 亚洲欧| 亚洲电影一级黄| 亚洲国产成人精品视频| 欧美在线观看网址综合| 欧美一区二区三区免费看| 免费不卡在线视频| 亚洲欧美中文日韩在线| 亚洲一区二区三区视频| 欧美精品一线| 亚洲黄色有码视频| 亚洲高清视频在线观看| 久久se精品一区精品二区| 午夜精品视频| 国产精品青草久久| 亚洲一区二区三区影院| 亚洲综合视频一区| 国产精品日韩欧美一区二区| 99精品福利视频| 亚洲欧美国产高清va在线播| 国产精品成人播放| 亚洲欧美国产毛片在线| 欧美自拍偷拍| 加勒比av一区二区| 蜜桃av噜噜一区二区三区| 欧美成人免费全部观看天天性色| 亚洲高清三级视频| 欧美精品在线视频观看| 一区二区三区国产盗摄| 欧美一区1区三区3区公司| 激情视频一区二区三区| 欧美88av| 一区二区三区国产精华| 欧美在线观看日本一区| 国产一区二区三区奇米久涩 | 国精产品99永久一区一区| 久久精品国产99国产精品澳门| 久久永久免费| 亚洲精品一区二区网址| 国产精品久久久久9999吃药| 欧美一级专区免费大片| 亚洲高清免费在线| 亚洲一区二区三区免费观看 | 久久亚洲春色中文字幕| 亚洲精品在线观| 国产精品久久久久久久久久免费看| 亚洲在线免费| 亚洲丰满在线| 欧美一区二区黄色| 亚洲福利国产| 国产精品伦一区| 另类欧美日韩国产在线| 在线一区二区三区四区五区| 老司机久久99久久精品播放免费 | 亚洲黄色免费网站| 亚洲欧美日本日韩| 在线观看亚洲精品| 国产精品成人观看视频免费| 老司机午夜精品视频| 亚洲综合色在线| 亚洲高清视频一区| 久久裸体视频| 香蕉成人久久| 99热这里只有成人精品国产| 国产一区二区三区久久 | 国产伦一区二区三区色一情| 国产精品99久久久久久有的能看| 国产精品私人影院| 欧美.com| 久久九九全国免费精品观看| 99re在线精品| 欧美激情一区二区三区高清视频| 性欧美暴力猛交69hd| 日韩视频在线一区二区三区| 国产视频精品免费播放| 欧美视频手机在线| 欧美精品aa|