国产无遮挡裸体免费直播视频,久久精品国产蜜臀av,动漫在线视频一区二区,欧亚日韩一区二区三区,久艹在线 免费视频,国产精品美女网站免费,正在播放 97超级视频在线观看,斗破苍穹年番在线观看免费,51最新乱码中文字幕

王爽 匯編語言學(xué)習(xí)筆記(詳細(xì))

 更新時間:2020年01月18日 12:40:45   作者:洋蔥汪  
王爽匯編語言第三版是一款高清完整版的專業(yè)編程圖書,該書結(jié)構(gòu)設(shè)計(jì)合理,內(nèi)容全面涵蓋知識點(diǎn)豐富,適合自學(xué)者使用,有需要者快來

王爽匯編語言第三版是一款高清完整版的專業(yè)編程圖書,該書結(jié)構(gòu)設(shè)計(jì)合理,內(nèi)容全面涵蓋知識點(diǎn)豐富,適合自學(xué)者使用,有需要者快來

一、基礎(chǔ)知識

1、指令

機(jī)器指令:CPU能直接識別并執(zhí)行的二進(jìn)制編碼

匯編指令:匯編指令是機(jī)器指令的助記符,同機(jī)器指令一一對應(yīng)。

指令:指令通常由操作碼和地址碼(操作數(shù))兩部分組成

指令集:每種CPU都有自己的匯編指令集。

匯編語言由3類指令組成。

匯編指令

偽指令:沒有對應(yīng)的機(jī)器碼,由編譯器執(zhí)行,計(jì)算機(jī)并不執(zhí)行
其他符號:如+、-、*、/等,由編譯器識別,沒有對應(yīng)的機(jī)器碼。
編譯器:夠?qū)R編指令轉(zhuǎn)換成機(jī)器指令的翻譯程序每一種CPU都有自己的匯編指令集。

在這里插入圖片描述

在內(nèi)存或磁盤上,指令和數(shù)據(jù)沒有任何區(qū)別,都是二進(jìn)制信息

2、存儲器

隨機(jī)存儲器(RAM)在程序的執(zhí)行過程中可讀可寫,必須帶電存儲

只讀存儲器(ROM)在程序的執(zhí)行過程中只讀,關(guān)機(jī)數(shù)據(jù)不丟失

在這里插入圖片描述


在這里插入圖片描述

在這里插入圖片描述

(以上3張圖片來自王道考研 - 計(jì)算機(jī)組成原理課件)

3、總線

1、總線

總線是連接各個部件的信息傳輸線,是各個部件共享的傳輸介質(zhì)。

主板上有核心器件和一些主要器件,這些器件通過總線(地址總線、數(shù)據(jù)總線、控制總線)相連。這些器件有CPU、存儲器、外圍芯片組、擴(kuò)展插槽等。擴(kuò)展插槽上一般插有RAM內(nèi)存條和各類接口卡。

來自唐朔飛·計(jì)算機(jī)組成原理經(jīng)典課件

總線根據(jù)位置分類:

  • 片內(nèi)總線(芯片內(nèi)部總線)

  • 系統(tǒng)總線(計(jì)算機(jī)各部件之間的信息傳輸線)

    根據(jù)傳送信息的不同,系統(tǒng)總線從邏輯上又分為3類,地址總線、控制總線和數(shù)據(jù)總線。

CPU要想進(jìn)行數(shù)據(jù)的讀寫,必須和外部器件(標(biāo)準(zhǔn)的說法是芯片)進(jìn)行以下3類信息的交互。

  1. 地址總線:CPU通過地址總線來指定存儲單元
    在這里插入圖片描述
    1根導(dǎo)線可以傳送的穩(wěn)定狀態(tài)只有兩種,高電平或是低電平。用二進(jìn)制表示就是1或0

圖示有10根地址線即一次可以傳輸10位,訪問存儲單元地址為1011,尋址范圍為0 ~ (210 - 1)

  1. 數(shù)據(jù)總線:CPU與內(nèi)存或其他器件之間的數(shù)據(jù)傳送是通過數(shù)據(jù)總線來進(jìn)行的
    在這里插入圖片描述
    8根數(shù)據(jù)線一次可傳送一個8位二進(jìn)制數(shù)據(jù)(即一個字節(jié)),傳送2個字節(jié)需要兩次;16根數(shù)據(jù)線一次可傳送2個字節(jié)(內(nèi)存對齊核心原理)

  2. 控制總線:CPU對外部器件的控制是通過控制總線來進(jìn)行的。

有多少根控制總線,就意味著CPU提供了對外部器件的多少種控制。
所以,控制總線的寬度決定了CPU對外部器件的控制能力。

2、CPU對存儲器的讀寫

在這里插入圖片描述
1、 CPU通過地址線將地址信息3發(fā)出。
2、 CPU通過控制線發(fā)出內(nèi)存讀命令,選中存儲器芯片,并通知它,將要從中讀取數(shù)據(jù)。
3、 存儲器將3號單元中的數(shù)據(jù)8通過數(shù)據(jù)線送入CPU。寫操作與讀操作的步驟相似。
聯(lián)想:在組成原理中用微操作表示:(PC) → MAR; 1 → R; M(MAR) → MDR; …

3、CPU對外設(shè)的控制

CPU對外設(shè)都不能直接控制,如顯示器、音箱、打印機(jī)等。

直接控制這些設(shè)備進(jìn)行工作的是插在擴(kuò)展插槽上的接口卡。

擴(kuò)展插槽通過總線和CPU相連,所以接口卡也通過總線同CPU相連。CPU可以直接控制這些接口卡,從而實(shí)現(xiàn)CPU對外設(shè)的間接控制。

如:CPU無法直接控制顯示器,但CPU可以直接控制顯卡,從而實(shí)現(xiàn)對顯示器的間接控制

4、內(nèi)存地址空間

CPU將系統(tǒng)中各類存儲器看作一個邏輯存儲器,這個邏輯存儲器就是我們所說的內(nèi)存地址空間。
對于CPU,所有存儲器中的存儲單元都處于一個統(tǒng)一的邏輯存儲器中,它的容量受CPU尋址能力限制。(或許就是計(jì)組中學(xué)的統(tǒng)一編址吧)
在這里插入圖片描述
每個物理存儲器在這個邏輯存儲器中占有一個地址段,即一段地址空間。CPU在這段地址空間中讀寫數(shù)據(jù),實(shí)際上就是在相對應(yīng)的物理存儲器中讀寫數(shù)據(jù)(對ROM寫無效)。
在這里插入圖片描述

二、寄存器

1、寄存器

CPU由運(yùn)算器、控制器、寄存器等器件構(gòu)成,這些器件靠片內(nèi)總線相連。

運(yùn)算器進(jìn)行信息處理;控制器控制各種器件進(jìn)行工作;寄存器進(jìn)行信息存儲;

8086CPU有14個寄存器:AX、BX、CX、DX、SI、DI、SP、BP、IP、CS、SS、DS、ES、PSW都是16位

在這里插入圖片描述

16位結(jié)構(gòu)CPU具有下面幾方面的結(jié)構(gòu)特性。

  • 運(yùn)算器一次最多可以處理16位的數(shù)據(jù);
  • 寄存器的最大寬度為16位;
  • 寄存器和運(yùn)算器之間的通路為16位。

8086CPU可以一次性處理以下兩種尺寸的數(shù)據(jù)。

  • 字節(jié):記為byte,一個字節(jié)由8個bit組成,可以存在8位寄存器中。
  • 字:記為word,一個字由兩個字節(jié)組成,可以存在一個16位寄存器中(16位CPU)
    在這里插入圖片描述
    8086采用小端模式:高地址存放高位字節(jié),低地址存放低位字節(jié)。

2、通用寄存器

通用寄存器:通常用來存放一般性的數(shù)據(jù),有AX、BX、CX、DX,它們可分為兩個可獨(dú)立使用的8位寄存器,

16位 8高位 8低位
AX AH AL
BX BH BL
CX CH CL
DX DH DL

在進(jìn)行數(shù)據(jù)傳送或運(yùn)算時,要注意指令的兩個操作對象的位數(shù)應(yīng)當(dāng)是一致的

一個8位寄存器所能存儲的數(shù)據(jù)范圍是0 ~ 28-1。

3、8086CPU給出物理地址的方法

8086CPU有20位地址總線,可以傳送20位地址,達(dá)到1MB尋址能力。
8086CPU又是16位結(jié)構(gòu),在內(nèi)部一次性處理、傳輸、暫時存儲的地址為16位。
從8086CPU的內(nèi)部結(jié)構(gòu)來看,如果將地址從內(nèi)部簡單地發(fā)出,那么它只能送出16位的地址,表現(xiàn)出的尋址能力只有64KB。
8086CPU采用一種在內(nèi)部用兩個16位地址合成的方法來形成一個20位的物理地址。
在這里插入圖片描述
當(dāng)8086CPU要讀寫內(nèi)存時:

  1. CPU中的相關(guān)部件提供兩個16位的地址,一個稱為段地址,另一個稱為偏移地址;
  2. 地址加法器將兩個16位地址合成為一個20位的物理地址;

地址加法器采用物理地址 = 段地址×16 + 偏移地址的方法用段地址和偏移地址合成物理地址。

例如,8086CPU要訪問地址為123C8H的內(nèi)存單元,1230H左移一位(空出4位)加上00C8H合成123C8H

4、段寄存器

我們可以將一段內(nèi)存定義為一個段,用一個段地址指示段,用偏移地址訪問段內(nèi)的單元,可以用分段的方式來管理內(nèi)存。

用一個段存放數(shù)據(jù),將它定義為“數(shù)據(jù)段”;

用一個段存放代碼,將它定義為“代碼段”;

用一個段當(dāng)作棧,將它定義為“棧段”。

注意:

  • 一個段的起始地址一定是16的倍數(shù);
  • 偏移地址為16位,變化范圍為0-FFFFH,所以一個段的長度最大為64KB。
  • CPU可以用不同的段地址和偏移地址形成同一個物理地址。

段寄存器:8086CPU有4個段寄存器:CS、DS、SS、ES,提供內(nèi)存單元的段地址。

1、CS和IP

CS為代碼段寄存器,IP為指令指針寄存器,

CPU將CS、IP中的內(nèi)容當(dāng)作指令的段地址和偏移地址,用它們合成指令的物理地址,

CPU將CS:IP指向的內(nèi)容當(dāng)作指令執(zhí)行。(即PC)
在這里插入圖片描述
8086CPU的工作過程簡要描述

  1. 從CS:IP指向的內(nèi)存單元讀取指令,讀取的指令進(jìn)入指令緩沖器;
  2. IP=IP+所讀取指令的長度,從而指向下一條指令;
  3. 執(zhí)行指令。轉(zhuǎn)到步驟1,重復(fù)這個過程。

在8086CPU加電啟動或復(fù)位后(即CPU剛開始工作時)CS和IP被設(shè)置為CS=FFFFH,IP=0000H,即在8086PC機(jī)剛啟動時,F(xiàn)FFF0H單元中的指令是8086PC機(jī)開機(jī)后執(zhí)行的第一條指令。

8086CPU提供轉(zhuǎn)移指令修改CS、IP的內(nèi)容。

  • jmp 段地址:偏移地址:用指令中給出的段地址修改CS,偏移地址修改IP。如:jmp 2AE3:3

  • jmp 某一合法寄存器:僅修改IP的內(nèi)容。如:jmp ax。在含義上好似:mov IP,ax

8086CPU不支持將數(shù)據(jù)直接送入段寄存器的操作,這屬于8086CPU硬件設(shè)計(jì)

2、DS 和 [address]

DS寄存器:通常用來存放要訪問數(shù)據(jù)的段地址

[address]表示一個偏移地址為address的內(nèi)存單元,段地址默認(rèn)放在ds中

通過數(shù)據(jù)段段地址和偏移地址即可定位內(nèi)存單元。

mov bx, 1000H ;8086CPU不支持將數(shù)據(jù)直接送入段寄存器的操作

mov ds, bx ;ds存放數(shù)據(jù)段地址

mov [0], al ;將al數(shù)據(jù)(1字節(jié))存到1000H段的0偏移地址處,即10000H

mov ax, [2] ;將數(shù)據(jù)段偏移地址2處的一個字(8086為2字節(jié))存放到ax寄存器

add cx, [4] ;將偏移地址4處的一個字?jǐn)?shù)據(jù)加上cx寄存器數(shù)據(jù)放到cx寄存器

sub dx, [6] ;dx寄存器數(shù)據(jù)減去數(shù)據(jù)段偏移地址6處的字?jǐn)?shù)據(jù)存到dx

3、SS 和 SP

在基于8086CPU編程的時候,可以將一段內(nèi)存當(dāng)作棧來使用。

棧段寄存器SS,存放段地址,SP寄存器存放偏移地址,任意時刻,SS:SP指向棧頂元素

8086CPU中,入棧時,棧頂從高地址向低地址方向增長。

push ax表示將寄存器ax中的數(shù)據(jù)送入棧中,由兩步完成。

1、SP=SP-2,SS:SP指向當(dāng)前棧頂前面的單元,以當(dāng)前棧頂前面的單元為新的棧頂;
2、將ax中的內(nèi)容送入SS:SP指向的內(nèi)存單元處,SS:SP此時指向新棧頂。

在這里插入圖片描述 

pop ax表示從棧頂取出數(shù)據(jù)送入ax,由以下兩步完成。

  1. 將SS:SP指向的內(nèi)存單元處的數(shù)據(jù)送入ax中;
  2. SP=SP+2,SS:SP指向當(dāng)前棧頂下面的單元,以當(dāng)前棧頂下面的單元為新的棧頂。

實(shí)驗(yàn)

  1. 將10000H~1000FH這段空間當(dāng)作棧,初始狀態(tài)棧是空的;
  2. 設(shè)置AX=001AH,BX=001BH;
  3. 將AX、BX中的數(shù)據(jù)入棧;
  4. 然后將AX、BX清零;
  5. 從棧中恢復(fù)AX、BX原來的內(nèi)容。
mov ax, 1000H 
mov ss, ax 
mov sp, 0010H ;初始化棧頂
mov ax, 001AH
mov bx, 001BH 

push ax 
push bx ;ax、bx入棧

sub ax, ax ;將ax清零,也可以用mov ax,0,
 ;sub ax,ax的機(jī)器碼為2個字節(jié),
 ;mov ax,0的機(jī)器碼為3個字節(jié)。
 
sub bx, bx 

pop bx ;從棧中恢復(fù)ax、bx原來的數(shù)據(jù)
pop ax ;

三、第一個程序

1、匯編程序從寫出到執(zhí)行的過程

在這里插入圖片描述

加載后,CPU的CS:IP指向程序的第一條指令(即程序的入口)

;1.asm
assume cs:codesg ;將用作代碼段的段codesg和段寄存器cs聯(lián)系起來。

codesg segment ;定義一個段,段的名稱為“codesg”,這個段從此開始
			 ;codesg是一個標(biāo)號,作為一個段的名稱,最終被編譯連接成一個段的段地址

	mov ax, 0123H
	mov bx, 0456H 
	add ax, bx
	add ax, ax 
	
	mov ax, 4c00H 
	int 21H ;這兩條指令實(shí)現(xiàn)程序的返回
	
codesg ends ;名稱為“codesg”的段到此結(jié)束

end ;編譯器在編譯匯編程序的過程中,碰到了偽指令end,結(jié)束對源程序的編譯

在這里插入圖片描述
在這里插入圖片描述

2、程序執(zhí)行過程跟蹤

DOS系統(tǒng)中.EXE文件中的程序的加載過程

在這里插入圖片描述

在這里插入圖片描述

四、[bx] 和 loop指令

1、[bx] 和 loop指令

[bx] 的含義:[bx]同樣表示一個內(nèi)存單元,它的偏移地址在bx中,段地址默認(rèn)在ds中

loop指令的格式是:loop 標(biāo)號,CPU執(zhí)行l(wèi)oop指令的時候,要進(jìn)行兩步操作,

  1. (cx) = (cx) - 1;

  2. 判斷 cx 中的值,不為零則轉(zhuǎn)至標(biāo)號處執(zhí)行程序,如果為零則向下執(zhí)行。

例如:計(jì)算212

assume cs:code 

code segment 
	mov ax, 2
	
	mov cx, 11 ;循環(huán)次數(shù)
s: add ax, ax 
	loop s ;在匯編語言中,標(biāo)號代表一個地址,標(biāo)號s實(shí)際上標(biāo)識了一個地址,
 ;這個地址處有一條指令:add ax,ax。
 ;執(zhí)行l(wèi)oop s時,首先要將(cx)減1,然后若(cx)不為0,則向前
 ;轉(zhuǎn)至s處執(zhí)行add ax,ax。所以,可以利用cx來控制add ax,ax的執(zhí)行次數(shù)。
	
	mov ax,4c00h 
	int 21h 
code ends 
end

loop 和 [bx] 的聯(lián)合應(yīng)用

計(jì)算ffff:0 ~ ffff:b單元中的數(shù)據(jù)的和,結(jié)果存儲在dx中

問題分析:

這些內(nèi)存單元都是字節(jié)型數(shù)據(jù)范圍0 ~ 255 ,12個字節(jié)數(shù)據(jù)和不會超過65535,dx可以存下
對于8位數(shù)據(jù)不能直接加到 dx

解決方案:

用一個16位寄存器來做中介。將內(nèi)存單元中的8位數(shù)據(jù)賦值到一個16位寄存器a中,再將ax中的數(shù)據(jù)加到dx

assume cs:code 

code segment 
	mov ax, 0ffffh ;在匯編源程序中,數(shù)據(jù)不能以字母開頭,所以要在前面加0。
	mov ds, ax 
	mov bx, 0 ;初始化ds:bx指向ffff:0
	mov dx, 0 ;初始化累加寄存器dx,(dx)= 0
	
	mov cx, 12 ;初始化循環(huán)計(jì)數(shù)寄存器cx,(cx)= 12
s: mov al, [bx]
	mov ah, 0
	add dx, ax ;間接向dx中加上((ds)* 16 +(bx))單元的數(shù)值
	inc bx ;ds:bx指向下一個單元
	loop s 
	
	mov ax, 4c00h 
	int 21h 
code ends 
end

2、段前綴

mov ax, ds:[bx]
mov ax, cs:[bx]
mov ax, ss:[bx]
mov ax, es:[bx]
mov ax, ss:[0]
mov ax, cs:[0]

這些出現(xiàn)在訪問內(nèi)存單元的指令中,用于顯式地指明內(nèi)存單元的段地址
的“ds:”,“cs:”,“ss:”,“es:”,在匯編語言中稱為段前綴。

段前綴的使用

將內(nèi)存ffff:0 ~ ffff:b單元中的數(shù)據(jù)復(fù)制到0:200 ~ 0:20b單元中。

assume cs:code 

code segment 
	mov ax, 0ffffh 
	mov ds, ax ;(ds)= 0ffffh 
	mov ax, 0020h
 mov es, ax ;(es)= 0020h 0:200 等效于 0020:0
 mov bx, 0 ;(bx)= 0,此時ds:bx指向ffff:0,es:bx指向0020:0
 
	mov cx,12 ;(cx)=12,循環(huán)12次
s: mov dl,[bx] ;(d1)=((ds)* 16+(bx)),將ffff:bx中的字節(jié)數(shù)據(jù)送入dl 
	mov es:[bx],dl ;((es)*16+(bx))=(d1),將dl中的數(shù)據(jù)送入0020:bx 
	inc bx ;(bx)=(bx)+1
	loop s 
	
	mov ax,4c00h 
	int 21h 
code ends 
end

五、包含多個段的程序

程序中對段名的引用,將被編譯器處理為一個表示段地址的數(shù)值。

mov ax, data

mov ds, ax

mov bx, ds:[6]

在代碼段中使用數(shù)據(jù)

;計(jì)算 8 個數(shù)據(jù)的和存到 ax 寄存器
assume cs:code 

code segment 

	dw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987h ;define word 定義8個字形數(shù)據(jù)

	start:	mov bx, 0 ;標(biāo)號start
			mov ax, 0 
			
			mov cx, 8
	s:		add ax, cs:[bx]
			add bx, 2
			loop s 
			
			mov ax, 4c00h 
			int 21h 
code ends
end start ;end除了通知編譯器程序結(jié)束外,還可以通知編譯器程序的入口在什么地方
	 	 ;用end指令指明了程序的入口在標(biāo)號start處,也就是說,“mov bx,0”是程序的第一條指令。

在代碼段中使用棧

;利用棧,將程序中定義的數(shù)據(jù)逆序存放。
assume cs:codesg 

codesg segment 
	dw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987h ; 0-15單元
	dw 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; 16-47單元作為棧使用
			
	start:	mov ax, cs 
			mov ss, ax 
			mov sp, 30h ;將設(shè)置棧頂ss:sp指向棧底cs:30。 30h = 48d
			mov bx, 0
			
			mov cx, 8
	s:		push cs:[bx]
			add bx, 2
			loop s ;以上將代碼段0~15單元中的8個字型數(shù)據(jù)依次入棧
			
			mov bx, 0
			
			mov cx, 8
	s0:		pop cs:[bx]		
			add bx,2
			loop s0 ;以上依次出棧8個字型數(shù)據(jù)到代碼段0~15單元中
			
			mov ax,4c00h 
			int 21h 
codesg ends 
end start	;指明程序的入口在start處

將數(shù)據(jù)、代碼、棧放入不同的段

assume cs:code,ds:data,ss:stack 

data segment 
	dw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987h ;0-15單元
data ends 

stack segment 
	dw 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ;0-31單元
stack ends 

code segment 
	start:	mov ax, stack;將名稱為“stack”的段的段地址送入ax
			mov ss, ax
			mov sp, 20h ;設(shè)置棧頂ss:sp指向stack:20。 20h = 32d
			
			mov ax, data ;將名稱為“data”的段的段地址送入ax
			mov ds, ax ;ds指向data段
			
			mov bx, 0 ;ds:bx指向data段中的第一個單元
			
			mov cx, 8
	s:	 push [bx]
			add bx, 2
			loop s ;以上將data段中的0~15單元中的8個字型數(shù)據(jù)依次入棧
			
			mov bx, 0
			
			mov cx, 8
	s0:		pop [bx]
			add bx, 2
			loop s0 ;以上依次出棧8個字型數(shù)據(jù)到data段的0~15單元中
			
			mov ax, 4c00h 
			int 21h 
code ends
end start
;“end start”說明了程序的入口,這個入口將被寫入可執(zhí)行文件的描述信息,
;可執(zhí)行文件中的程序被加載入內(nèi)存后,CPU的CS:IP被設(shè)置指向這個入口,從而開始執(zhí)行程序中的第一條指令

關(guān)于可執(zhí)行文件結(jié)構(gòu)與程序入口的詳細(xì)描述參考:PE文件結(jié)構(gòu)

六、更靈活的定位內(nèi)存地址的方法

1、and 和 or

and指令:邏輯與指令,按位進(jìn)行與運(yùn)算。

mov al, 01100011B
and al, 00111011B

執(zhí)行后:al=00100011B即都為1才為1

or指令:邏輯或指令,按位進(jìn)行或運(yùn)算。

mov al, 01100011B
or al, 00111011B

執(zhí)行后:al=01111011B 即只要有一個為1就為1

關(guān)于ASCII碼

世界上有很多編碼方案,有一種方案叫做ASCII編碼,是在計(jì)算機(jī)系統(tǒng)中通常被采用的。簡單地說,所謂編碼方案,就是一套規(guī)則,它約定了用什么樣的信息來表示現(xiàn)實(shí)對象。比如說,在ASCII編碼方案中,用61H表示“a”,62H表示“b”。一種規(guī)則需要人們遵守才有意義。

在文本編輯過程中,我們按一下鍵盤的a鍵,就會在屏幕上看到“a”。我們按下鍵盤的a鍵,這個按鍵的信息被送入計(jì)算機(jī),計(jì)算機(jī)用ASCII碼的規(guī)則對其進(jìn)行編碼,將其轉(zhuǎn)化為61H存儲在內(nèi)存的指定空間中;文本編輯軟件從內(nèi)存中取出61H,將其送到顯卡上的顯存中;工作在文本模式下的顯卡,用ASCII碼的規(guī)則解釋顯存中的內(nèi)容,
61H被當(dāng)作字符“a”,顯卡驅(qū)動顯示器,將字符“a”的圖像畫在屏幕上。我們可以看到,顯卡在處理文本信息的時候,是按照ASCII碼的規(guī)則進(jìn)行的。這也就是說,如果我們要想在顯示器上看到“a”,就要給顯卡提供“a”的ASCIⅡ碼,61H。如何提供?當(dāng)然是寫入顯存中。

以字符形式給出的數(shù)據(jù)

assume cs:code,ds:data 

data segment 
	db 'unIx' ;相當(dāng)于“db 75H,6EH,49H,58H”
	db 'foRK'
data ends 

code segment
start:	mov al, 'a' ;相當(dāng)于“mov al, 61H”,“a”的ASCI碼為61H;
		mov b1, 'b'
		
		mov ax, 4c00h 
		int 21h 
code ends
end start

大小寫轉(zhuǎn)換的問題

在這里插入圖片描述

小寫字母的ASCII碼值比大寫字母的ASCII碼值大20H

大寫字母ASCII碼的第5位為0,小寫字母的第5位為1(其他一致)

assume cs:codesg,ds:datasg 

datasg segment 
	db 'BaSiC'
	db 'iNfOrMaTion'
datasg end

codesg segment 
	start:	mov ax, datasg 
			mov ds, ax	;設(shè)置ds 指向 datasg段
		
			mov bx, 0	;設(shè)置(bx)=0,ds:bx指向'BaSic'的第一個字母
			
			mov cx, 5 	 ;設(shè)置循環(huán)次數(shù)5,因?yàn)?Basic'有5個字母
	s:		mov al, [bx] ;將ASCII碼從ds:bx所指向的單元中取出
			and al, 11011111B;將al中的ASCII碼的第5位置為0,變?yōu)榇髮懽帜?
			mov [bx], al	 ;將轉(zhuǎn)變后的ASCII碼寫回原單元
			inc bx		 ;(bx)加1,ds:bx指向下一個字母
			loop s 
			
			mov bx, 5	;設(shè)置(bx)=5,ds:bx指向,iNfOrMaTion'的第一個字母
			
			mov cx, 11	;設(shè)置循環(huán)次數(shù)11,因?yàn)椤甶NfOrMaTion'有11個字母
	s0:		mov al, [bx]
			or al, 00100000B;將a1中的ASCII碼的第5位置為1,變?yōu)樾懽帜?
			mov [bx], al 
			inc bx
			loop s0
			
			mov ax, 4c00h 
			int 21h 
codesg ends

2、[bx+idata]

[bx+idata]表示一個內(nèi)存單元, 例如:mov ax, [bx+200]
該指令也可以寫成如下格式:

mov ax, [200+bx]

mov ax, 200[bx]

mov ax, [bx].200

用[bx+idata]的方式進(jìn)行數(shù)組的處理

assume cs:codesg,ds:datasg 

datasg segment 
	db 'BaSiC';轉(zhuǎn)為大寫
	db 'MinIx';轉(zhuǎn)為小寫
datasg ends

codesg segment
	start:
		mov ax, datasg 
		mov ds, ax 
		mov bx, 0 ;初始ds:bx
	
		mov cx, 5
	s:	mov al, 0[bx] 
		and al, 11011111b ;轉(zhuǎn)為大寫字母
		mov 0[bx], al ;寫回
		mov al, 5[bx] ;[5 + bx]
		or al, 00100000b ;轉(zhuǎn)為小寫字母
		mov 5[bx], al 
		inc bx
		loop s
		
		mov ax, 4c00h 
		int 21h
codesg ends
end start

C語言描述

int main()
{
	char a[] = "BaSic";
	char b[] = "MinIX";
	
	int i = 0;
	
	do
	{
		a[i] = a[i] & 0xDF;
		b[i] = b[i] | 0x20;
		i++;
	} while(i < 5);

	return 0;
 }

3、SI 、DI 與 尋址方式的靈活應(yīng)用

1、si 、di

si和di是8086CPU中和bx功能相近的寄存器,si和di不能夠分成兩個8位寄存器來使用。

assume cs: codesg, ds: datasg 

datasg segment 
	db 'welcome to masm!';用si和di實(shí)現(xiàn)將字符串‘welcome to masm!"復(fù)制到它后面的數(shù)據(jù)區(qū)中。
	db '................'
datasg ends

codesg segment 
	start:	mov ax, datasg 
			mov ds, ax 
			mov si, 0
			
			mov cx, 8
	s:		mov ax, 0[si] ;[0 + si]
			mov 16[si], ax ;[16 + si] 使用[bx +idata]方式代替di,使程序更簡潔
			add si, 2 
			loop s 
			
			mov ax, 4c00h 
			int 21h 
codesg ends 
end start

2、[bx + si] 和 [bx + di]

[bx+si]和[bx+di]的含義相似

[bx+si]表示一個內(nèi)存單元,它的偏移地址為(bx)+(si)

指令mov ax, [bx + si]的含義:將一個內(nèi)存單元字?jǐn)?shù)據(jù)的內(nèi)容送入ax,段地址在ds中

該指令也可以寫成如下格式:mov ax, [bx][si]

3、[bx+si+idata]和[bx+di+idata]
[bx+si+idata]表示一個內(nèi)存單元,它的偏移地址為(bx)+(si)+idata

指令mov ax,[bx+si+idata]的含義:將一個內(nèi)存單元字?jǐn)?shù)據(jù)的內(nèi)容送入ax,段地址在ds中

4、不同的尋址方式的靈活應(yīng)用
[idata]用一個常量來表示地址,可用于直接定位一個內(nèi)存單元;
[bx]用一個變量來表示內(nèi)存地址,可用于間接定位一個內(nèi)存單元;
[bx+idata]用一個變量和常量表示地址,可在一個起始地址的基礎(chǔ)上用變量間接定位一個內(nèi)存單元;
[bx+si]用兩個變量表示地址;
[bx+si+idata]用兩個變量和一個常量表示地址。

;將datasg段中每個單詞改為大寫字母
assume cs:codesg,ds:datasg,ss:stacksg 

datasg segment
	db 'ibm  ' ;16
	db 'dec  ' 
	db 'dos  '
	db 'vax  ' ;看成二維數(shù)組
datasg ends 

stacksg segment ;定義一個段,用來做棧段,容量為16個字節(jié)
	dw 0, 0, 0, 0, 0, 0, 0, 0
stacksg ends 

codesg segment 
	start:	mov ax, stacksg 
			mov ss, ax
			mov sp, 16 
			mov ax, datasg 
			mov ds, ax 
			mov bx, 0 ;初始ds:bx
			
			;cx為默認(rèn)循環(huán)計(jì)數(shù)器,二重循環(huán)只有一個計(jì)數(shù)器,所以外層循環(huán)先保存cx值,再恢復(fù),我們采用棧保存
			mov cx, 4
	s0:		push cx	;將外層循環(huán)的cx值入棧
			mov si, 0
			mov cx, 3	;cx設(shè)置為內(nèi)層循環(huán)的次數(shù)
	s:		mov al, [bx+si]
			and al, 11011111b ;每個字符轉(zhuǎn)為大寫字母
			mov [bx+si], al 
			inc si
			loop s 
			
			add bx, 16 ;下一行
			pop cx	;恢復(fù)cx值
			loop s0 ;外層循環(huán)的loop指令將cx中的計(jì)數(shù)值減1
			
			mov ax,4c00H 
			int 21H 
codesg ends
end start

七、數(shù)據(jù)處理的兩個基本問題

1、 bx、si、di和bp

在8086CPU中,只有這4個寄存器可以用在“[…]”中來進(jìn)行內(nèi)存單元的尋址。

在[ ]中,這4個寄存器可以單個出現(xiàn),或只能以4種組合出現(xiàn):bx和si、bx和di、bp和si、bp和di。

只要在[……]中使用寄存器bp,而指令中沒有顯性地給出段地址, 段地址就默認(rèn)在ss中

2、機(jī)器指令處理的數(shù)據(jù)在什么地方
數(shù)據(jù)處理大致可分為3類:讀取、寫入、運(yùn)算。

在機(jī)器指令這一層來講,并不關(guān)心數(shù)據(jù)的值是多少,而關(guān)心指令執(zhí)行前一刻,它將要處理的數(shù)據(jù)所在的位置。指令在執(zhí)行前,所要處理的數(shù)據(jù)可以在3個地方:CPU內(nèi)部、內(nèi)存、端口

在這里插入圖片描述

3、匯編語言中數(shù)據(jù)位置的表達(dá)

匯編語言中用3個概念來表達(dá)數(shù)據(jù)的位置

立即數(shù)(idata)

mov ax, 1 ;對于直接包含在機(jī)器指令中的數(shù)據(jù)(執(zhí)行前在CPU的指令緩沖器中)
add bx, 2000h ;在匯編語言中稱為:立即數(shù)(idata)
or bx, 00010000b
mov al, 'a'

寄存器

mov ax, bx ;指令要處理的數(shù)據(jù)在寄存器中,在匯編指令中給出相應(yīng)的寄存器名。
mov ds, ax
push bx
mov ds:[0], bx
push ds
mov ss, ax
mov sp, ax

段地址(SA)和偏移地址(EA)

;指令要處理的數(shù)據(jù)在內(nèi)存中,在匯編指令中可用[X]的格式給出EA,SA在某個段寄存器中。
mov ax, [0]
mov ax, [di]
mov ax, [bx+8]
mov ax, [bx+si]
mov ax, [bx+si+8] ;以上段地址默認(rèn)在ds中

mov ax, [bp]
mov ax, [bp+8]
mov ax, [bp+si]
mov ax, [bp+si+8] ;以上段地址默認(rèn)在ss中

mov ax, ds:[bp]
mov ax, es:[bx]
mov ax, ss:[bx+si]
mov ax, cs:[bx+si+8] ;顯式給出存放段地址的寄存器

尋址方式

在這里插入圖片描述

4、指令要處理的數(shù)據(jù)有多長
8086CPU的指令,可以處理兩種尺寸的數(shù)據(jù),byte和word

通過寄存器名指明要處理的數(shù)據(jù)的尺寸。
例如: mov al, ds:[0] 寄存器al指明了數(shù)據(jù)為1字節(jié)

在沒有寄存器名存在的情況下,用操作符X ptr指明內(nèi)存單元的長度,X在匯編指令中可以為word或byte。
例如:mov byte ptr ds:[0], 1 byte ptr 指明了指令訪問的內(nèi)存單元是一個字節(jié)單元

有些指令默認(rèn)了訪問的是字單元還是字節(jié)單元
例如,push [1000H],push 指令只進(jìn)行字操作。

5、尋址方式的綜合應(yīng)用

在這里插入圖片描述

mov ax, seg
mov ds, ax
mov bx, 60h ;確定記錄地址,ds:bx

mov word ptr [bx+0ch], 38 ;排名字段改為38 [bx].0ch
add word ptr [bx+0eh], 70 ;收入字段增加70 [bx].0eh
mov si, 0 ;用si來定位產(chǎn)品字符串中的字符
mov byte ptr [bx+10h+si], 'V' ;[bx].10h[si]
inc si
mov byte ptr [bx+10h+si], 'A'
inc si
mov byte ptr [bx+10h+si], 'X'

C語言描述

/*定義一個公司記錄的結(jié)構(gòu)體*/
struct company
{
 char cn[3];/*公司名稱*/
 char hn[9];/*總裁姓名*/
 int pm;/*排名*/
 int sr;/*收入*/
 char cp[3];/*著名產(chǎn)品*/
};
//sizeof (struct company) == 24

int main()
{
 /*定義一個公司記錄的變量,內(nèi)存中將存有一條公司的記錄*/
 struct company dec = {"DEC", "Ken Olsen", 137, 40, "PDP"};

 int i;

 dec.pm = 38;
 dec.sr = dec.sr + 70;

 i = 0;
 dec.cp[i] = 'V'; //mov byte ptr [bx].10h[si], 'V'
 i++;
 dec.cp[i] = 'A';
 i++;
 dec.cp[i] = 'X';

 return 0;
}

6、div指令、dd、dup、mul指令

div是除法指令

除數(shù):有8位和16位兩種,在一個寄存器或內(nèi)存單元中。

被除數(shù):默認(rèn)放在AX或DX和AX中,
如果除數(shù)為8位,被除數(shù)則為16位,默認(rèn)在AX中存放;
如果除數(shù)為16位,被除數(shù)則為32位,在DX和AX中存放,DX存放高16位,AX存放低16位。

結(jié)果:
如果除數(shù)為8位,則AL存儲除法操作的商,AH存儲除法操作的余數(shù);
如果除數(shù)為16位,則AX存儲除法操作的商,DX存儲除法操作的余數(shù)。

;利用除法指令計(jì)算100001/100。
;100001D = 186A1H
mov dx, 1
mov ax, 86A1H ;(dx)*10000H+(ax)=100001
mov bx, 100
div bx

;利用除法指令計(jì)算1001/100
mov ax, 1001
mov bl, 100
div b1

偽指令dd

db和dw定義字節(jié)型數(shù)據(jù)和字型數(shù)據(jù)。

dd是用來定義dword(double word,雙字)型數(shù)據(jù)的偽指令

操作符dup

dup在匯編語言中同db、dw、dd等一樣,也是由編譯器識別處理的符號。
它和db、dw、dd等數(shù)據(jù)定義偽指令配合使用,用來進(jìn)行數(shù)據(jù)的重復(fù)

db 3 dup (0) ;定義了3個字節(jié),它們的值都是0,相當(dāng)于db 0,0,0。
db 3 dup (0, 1, 2) ;定義了9個字節(jié),它們是0、1、2、0、1、2、0、1、2,相當(dāng)于db 0,1,2,0,1,2,0,1,2。
db 3 dup ('abc', 'ABC') ;定義了18個字節(jié),它們是abcABCabcABCabcABCC,相當(dāng)于db 'abc', 'ABC' ,'abc' , 'ABC, 'abc', 'ABC'。

mul 指令

mul是乘法指令,使用 mul 做乘法的時候:相乘的兩個數(shù):要么都是8位,要么都是16位。

  • 8 位: AL中和 8位寄存器或內(nèi)存字節(jié)單元中;

  • 16 位: AX中和 16 位寄存器或內(nèi)存字單元中。

結(jié)果

  • 8位:AX中;

  • 16位:DX(高位)和 AX(低位)中。

格式:mul 寄存器 或 mul 內(nèi)存單元

;計(jì)算100*10
;100和10小于255,可以做8位乘法
mov al,100
mov bl,10
mul bl

;結(jié)果: (ax)=1000(03E8H)

;計(jì)算100*10000
;100小于255,可10000大于255,所以必須做16位乘法,程序如下:
mov ax,100
mov bx,10000
mul bx

;結(jié)果: (ax)=4240H,(dx)=000FH (F4240H=1000000)

八、轉(zhuǎn)移指令的原理

可以修改IP,或同時修改CS和IP的指令統(tǒng)稱為轉(zhuǎn)移指令。概括地講,轉(zhuǎn)移指令就是可以控制CPU執(zhí)行內(nèi)存中某處代碼的指令。

8086CPU的轉(zhuǎn)移行為有以下幾類。

  • 只修改IP時,稱為段內(nèi)轉(zhuǎn)移,比如:jmp ax。
  • 同時修改CS和IP時,稱為段間轉(zhuǎn)移,比如:jmp 1000:0。

由于轉(zhuǎn)移指令對IP的修改范圍不同,段內(nèi)轉(zhuǎn)移又分為:短轉(zhuǎn)移和近轉(zhuǎn)移。

  • 短轉(zhuǎn)移IP的修改范圍為-128 ~ 127。
  • 近轉(zhuǎn)移IP的修改范圍為-32768 ~ 32767。

8086CPU的轉(zhuǎn)移指令分為以下幾類。

  • 無條件轉(zhuǎn)移指令(如:jmp)
  • 條件轉(zhuǎn)移指令
  • 循環(huán)指令(如:loop)
  • 過程
  • 中斷

1、操作符offset

操作符offset在匯編語言中是由編譯器處理的符號,它的功能是取得標(biāo)號的偏移地址。

;將s處的一條指令復(fù)制到s0處
assume cs:codesg
codesg segment
 s: mov ax, bx  ;(mov ax,bx 的機(jī)器碼占兩個字節(jié))
 mov si, offset s ;獲得標(biāo)號s的偏移地址
 mov di, offset s0 ;獲得標(biāo)號s0的偏移地址
 
 mov ax, cs:[si]
 mov cs:[di], ax
 s0: nop   ;(nop的機(jī)器碼占一個字節(jié))
 nop
 codesg ends
 ends

2、jmp指令

jmp為無條件轉(zhuǎn)移,轉(zhuǎn)到標(biāo)號處執(zhí)行指令可以只修改IP,也可以同時修改CS和IP;

jmp指令要給出兩種信息:

  • 轉(zhuǎn)移的目的地址
  • 轉(zhuǎn)移的距離(段間轉(zhuǎn)移、段內(nèi)短轉(zhuǎn)移,段內(nèi)近轉(zhuǎn)移)

​ jmp short 標(biāo)號 jmp near ptr 標(biāo)號 jcxz 標(biāo)號 loop 標(biāo)號 等幾種匯編指令,它們對 IP的修改

是根據(jù)轉(zhuǎn)移目的地址和轉(zhuǎn)移起始地址之間的位移來進(jìn)行的。在它們對應(yīng)的機(jī)器碼中不包含轉(zhuǎn)移的目的地址,而包含的是到目的地址的位移距離。

1、依據(jù)位移進(jìn)行轉(zhuǎn)移的jmp指令

jmp short 標(biāo)號(段內(nèi)短轉(zhuǎn)移)

指令“jmp short 標(biāo)號”的功能為(IP)=(IP)+8位位移,轉(zhuǎn)到標(biāo)號處執(zhí)行指令

(1)8位位移 = “標(biāo)號”處的地址 - jmp指令后的第一個字節(jié)的地址;

(2)short指明此處的位移為8位位移;

(3)8位位移的范圍為-128~127,用補(bǔ)碼表示

(4)8位位移由編譯程序在編譯時算出。

assume cs:codesg
codesg segment
 start:mov ax,0
 jmp short s ;s不是被翻譯成目的地址
 add ax, 1
 s:inc ax ;程序執(zhí)行后, ax中的值為 1 
codesg ends
end start

CPU不需要這個目的地址就可以實(shí)現(xiàn)對IP的修改。這里是依據(jù)位移進(jìn)行轉(zhuǎn)移

jmp short s指令的讀取和執(zhí)行過程:

  1. (CS)=0BBDH,(IP)=0006,上一條指令執(zhí)行結(jié)束后CS:IP指向EB 03(jmp short s的機(jī)器碼);
  2. 讀取指令碼EB 03進(jìn)入指令緩沖器;
  3. (IP) = (IP) + 所讀取指令的長度 = (IP) + 2 = 0008,CS:IP指向add ax,1;
  4. CPU指行指令緩沖器中的指令EB 03;
  5. 指令EB 03執(zhí)行后,(IP)=000BH,CS:IP指向inc ax

jmp near ptr 標(biāo)號 (段內(nèi)近轉(zhuǎn)移)

指令“jmp near ptr 標(biāo)號”的功能為:(IP) = (IP) + 16位位移。

2、轉(zhuǎn)移的目的地址在指令中的jmp指令

jmp far ptr 標(biāo)號(段間轉(zhuǎn)移或遠(yuǎn)轉(zhuǎn)移)

指令 “jmp far ptr 標(biāo)號” 功能如下:

  • (CS) = 標(biāo)號所在段的段地址;
  • (IP) = 標(biāo)號所在段中的偏移地址。
  • far ptr指明了指令用標(biāo)號的段地址和偏移地址修改CS和IP。
assume cs:codesg
codesg segment
 start: mov ax, 0
		 mov bx, 0
  jmp far ptr s ;s被翻譯成轉(zhuǎn)移的目的地址0B01 BD0B
  db 256 dup (0) ;轉(zhuǎn)移的段地址:0BBDH,偏移地址:010BH
 s: add ax,1
  inc ax
codesg ends
end start

在這里插入圖片描述

3、轉(zhuǎn)移地址在寄存器或內(nèi)存中的jmp指令
jmp 16位寄存器 功能:IP =(16位寄存器)

轉(zhuǎn)移地址在內(nèi)存中的jmp指令有兩種格式:

jmp word ptr 內(nèi)存單元地址(段內(nèi)轉(zhuǎn)移)

功能:從內(nèi)存單元地址處開始存放著一個字,是轉(zhuǎn)移的目的偏移地址。

mov ax, 0123H
mov ds:[0], ax
jmp word ptr ds:[0]
;執(zhí)行后,(IP)=0123H

jmp dword ptr 內(nèi)存單元地址(段間轉(zhuǎn)移)
功能:從內(nèi)存單元地址處開始存放著兩個字,高地址處的字是轉(zhuǎn)移的目的段地址,低地址處是轉(zhuǎn)移的目的偏移地址。

1、(CS)=(內(nèi)存單元地址+2)
2、(IP)=(內(nèi)存單元地址)

mov ax, 0123H
mov ds:[0], ax;偏移地址
mov word ptr ds:[2], 0;段地址
jmp dword ptr ds:[0]
;執(zhí)行后,
;(CS)=0
;(IP)=0123H
;CS:IP 指向 0000:0123。

4、jcxz指令和loop指令

jcxz指令

jcxz指令為有條件轉(zhuǎn)移指令,所有的有條件轉(zhuǎn)移指令都是短轉(zhuǎn)移,

在對應(yīng)的機(jī)器碼中包含轉(zhuǎn)移的位移,而不是目的地址。對IP的修改范圍都為-128~127。

指令格式:jcxz 標(biāo)號(如果(cx)=0,則轉(zhuǎn)移到標(biāo)號處執(zhí)行。)

當(dāng)(cx) = 0時,(IP) = (IP) + 8位位移

  • 8位位移 = “標(biāo)號”處的地址 - jcxz指令后的第一個字節(jié)的地址;
  • 8位位移的范圍為-128~127,用補(bǔ)碼表示;
  • 8位位移由編譯程序在編譯時算出。

當(dāng)(cx)!=0時,什么也不做(程序向下執(zhí)行)

loop指令

loop指令為循環(huán)指令,所有的循環(huán)指令都是短轉(zhuǎn)移,在對應(yīng)的機(jī)器碼中包含轉(zhuǎn)移的位移,而不是目的地址。

對IP的修改范圍都為-128~127。

指令格式:loop 標(biāo)號 ((cx) = (cx) - 1,如果(cx) ≠ 0,轉(zhuǎn)移到標(biāo)號處執(zhí)行)。

(cx) = (cx) - 1;如果 (cx) != 0,(IP) = (IP) + 8位位移。

  • 8位位移 = 標(biāo)號處的地址 - loop指令后的第一個字節(jié)的地址;
  • 8位位移的范圍為-128~127,用補(bǔ)碼表示;
  • 8位位移由編譯程序在編譯時算出。

如果(cx)= 0,什么也不做(程序向下執(zhí)行)。

九、call和ret指令

call和ret指令都是轉(zhuǎn)移指令,它們都修改IP,或同時修改CS和IP。

1、ret 和 retf

ret指令用棧中的數(shù)據(jù),修改IP的內(nèi)容,從而實(shí)現(xiàn)近轉(zhuǎn)移;

retf指令用棧中的數(shù)據(jù),修改CS和IP的內(nèi)容,從而實(shí)現(xiàn)遠(yuǎn)轉(zhuǎn)移。

CPU執(zhí)行ret指令時,相當(dāng)于進(jìn)行: pop IP:

(1)(IP) = ( (ss) * 16 + (sp) )

(2)(sp) = (sp) + 2

CPU執(zhí)行retf指令時,相當(dāng)于進(jìn)行:pop IP, pop CS:

(1)(IP) = ( (ss) * 16 + (sp) )

(2)(sp) = (sp) + 2

(3)(CS) = ( (ss) * 16 + (sp) )

(4)(sp) = (sp) + 2

assume cs:code 
stack seqment
	db 16 dup (0)
stack ends 

code segment
		mov ax, 4c00h
		int 21h 
 start:	mov ax, stack 
 		mov ss, ax
 		mov sp, 16
		mov ax, 0
		push ax ;ax入棧
		mov bx, 0
		ret ;ret指令執(zhí)行后,(IP)=0,CS:IP指向代碼段的第一條指令。可以push cs push ax retf
code ends
end start

2、call 指令

call指令經(jīng)常跟ret指令配合使用,因此CPU執(zhí)行call指令,進(jìn)行兩步操作:

(1)將當(dāng)前的 IP 或 CS和IP 壓入棧中;

(2)轉(zhuǎn)移(jmp)。

call指令不能實(shí)現(xiàn)短轉(zhuǎn)移,除此之外,call指令實(shí)現(xiàn)轉(zhuǎn)移的方法和 jmp 指令的原理相同。

call 標(biāo)號(近轉(zhuǎn)移)

CPU執(zhí)行此種格式的call指令時,相當(dāng)于進(jìn)行 push IP jmp near ptr 標(biāo)號

call far ptr 標(biāo)號(段間轉(zhuǎn)移)

CPU執(zhí)行此種格式的call指令時,相當(dāng)于進(jìn)行:push CS,push IP jmp far ptr 標(biāo)號

call 16位寄存器

CPU執(zhí)行此種格式的call指令時,相當(dāng)于進(jìn)行: push IP jmp 16位寄存器

call word ptr 內(nèi)存單元地址

CPU執(zhí)行此種格式的call指令時,相當(dāng)于進(jìn)行:push IP jmp word ptr 內(nèi)存單元地址

mov sp, 10h
mov ax, 0123h
mov ds:[0], ax
call word ptr ds:[0]
;執(zhí)行后,(IP)=0123H,(sp)=0EH

call dword ptr 內(nèi)存單元地址

CPU執(zhí)行此種格式的call指令時,相當(dāng)于進(jìn)行:push CS push IP jmp dword ptr 內(nèi)存單元地址

mov sp, 10h
mov ax, 0123h
mov ds:[0], ax
mov word ptr ds:[2], 0
call dword ptr ds:[0]
;執(zhí)行后,(CS)=0,(IP)=0123H,(sp)=0CH

3、call 和 ret 的配合使用

分析下面程序

assume cs:code
code segment
start:	mov ax,1
	 mov cx,3
 	call s ;(1)CPU指令緩沖器存放call指令,IP指向下一條指令(mov bx, ax),執(zhí)行call指令,IP入棧,jmp
 	
	 mov bx,ax	;(4)IP重新指向這里 bx = 8
 	mov ax,4c00h
 	int 21h
 s: add ax,ax
 	loop s;(2)循環(huán)3次ax = 8
	 ret;(3)return : pop IP
code ends
end start

call 與 ret 指令共同支持了匯編語言編程中的模塊化設(shè)計(jì)

編寫子程序

十、標(biāo)志寄存器

1、標(biāo)志寄存器
CPU內(nèi)部的寄存器中,有一種特殊的寄存器(對于不同的處理機(jī),個數(shù)和結(jié)構(gòu)都可能不同)具有以下3種作用。

(1)用來存儲相關(guān)指令的某些執(zhí)行結(jié)果;

(2)用來為CPU執(zhí)行相關(guān)指令提供行為依據(jù);

(3)用來控制CPU的相關(guān)工作方式。

這種特殊的寄存器在8086CPU中,被稱為標(biāo)志寄存器(flag)。

8086CPU的標(biāo)志寄存器有16位,其中存儲的信息通常被稱為程序狀態(tài)字(PSW-Program Status Word)

flag寄存器是按位起作用的,它的每一位都有專門的含義,記錄特定的信息。

在這里插入圖片描述

在8086CPU的指令集中,有的指令的執(zhí)行是影響標(biāo)志寄存器的,比如,add、sub、mul、div、inc、or、and等,它們大都是運(yùn)算指令(進(jìn)行邏輯或算術(shù)運(yùn)算);有的指令的執(zhí)行對標(biāo)志寄存器沒有影響,比如,mov、push、pop等,它們大都是傳送指令

1、零標(biāo)志位 (ZF)

零標(biāo)志位(Zero Flag)。它記錄相關(guān)指令執(zhí)行后,其結(jié)果是否為0。

如果結(jié)果為0,那么zf = 1(表示結(jié)果是0);如果結(jié)果不為0,那么zf = 0。

mov ax, 1
sub ax, 1 ;執(zhí)行后,結(jié)果為0,則zf = 1

mov ax, 2
sub ax, 1 ;執(zhí)行后,結(jié)果不為0,則zf = 0

2、奇偶標(biāo)志位 (PF)

奇偶標(biāo)志位(Parity Flag)。它記錄相關(guān)指令執(zhí)行后,其結(jié)果的所有bit位中1的個數(shù)是否為偶數(shù)。

如果1的個數(shù)為偶數(shù),pf = 1,如果為奇數(shù),那么pf = 0。

mov al, 1
add al, 10 ;執(zhí)行后,結(jié)果為00001011B,其中有3(奇數(shù))個1,則pf = 0;

mov al, 1
or al, 2 ;執(zhí)行后,結(jié)果為00000011B,其中有2(偶數(shù))個1,則pf = 1;

3、符號標(biāo)志位(SF)

符號標(biāo)志位(Symbol Flag)。它記錄相關(guān)指令執(zhí)行后,其結(jié)果是否為負(fù)。

如果結(jié)果為負(fù),sf = 1;如果非負(fù),sf = 0。

計(jì)算機(jī)中通常用補(bǔ)碼來表示有符號數(shù)據(jù)。計(jì)算機(jī)中的一個數(shù)據(jù)可以看作是有符號數(shù),也可以看成是無符號數(shù)。

00000001B,可以看作為無符號數(shù)1,或有符號數(shù)+1;
10000001B,可以看作為無符號數(shù)129,也可以看作有符號數(shù)-127。

對于同一個二進(jìn)制數(shù)據(jù),計(jì)算機(jī)可以將它當(dāng)作無符號數(shù)據(jù)來運(yùn)算,也可以當(dāng)作有符號數(shù)據(jù)來運(yùn)算

CPU在執(zhí)行add等指令的時候,就包含了兩種含義:可以將add指令進(jìn)行的運(yùn)算當(dāng)作無符號數(shù)的運(yùn)算,也可以將add指令進(jìn)行的運(yùn)算當(dāng)作有符號數(shù)的運(yùn)算

SF標(biāo)志,就是CPU對有符號數(shù)運(yùn)算結(jié)果的一種記錄,它記錄數(shù)據(jù)的正負(fù)。在我們將數(shù)據(jù)當(dāng)作有符號數(shù)來運(yùn)算的時候,可以通過它來得知結(jié)果的正負(fù)。如果我們將數(shù)據(jù)當(dāng)作無符號數(shù)來運(yùn)算,SF的值則沒有意義,雖然相關(guān)的指令影響了它的值

mov al, 10000001B
add al, 1 ;執(zhí)行后,結(jié)果為10000010B,sf = 1,表示:如果指令進(jìn)行的是有符號數(shù)運(yùn)算,那么結(jié)果為負(fù);
1
2
mov al, 10000001B
add al, 01111111B ;執(zhí)行后,結(jié)果為0,sf = 0,表示:如果指令進(jìn)行的是有符號數(shù)運(yùn)算,那么結(jié)果為非負(fù)

3、進(jìn)位標(biāo)志位(CF)

進(jìn)位標(biāo)志位(Carry Flag)。一般情況下,在進(jìn)行無符號數(shù)運(yùn)算的時候,它記錄了運(yùn)算結(jié)果的最高有效位向更高位的進(jìn)位值,或從更高位的借位值

在這里插入圖片描述

97H - 98H 產(chǎn)生借位CF = 1 ==》 (al) = 197H - 98H = FFH

4、溢出標(biāo)志位(OF)

溢出標(biāo)志位(Overflow Flag)。一般情況下,OF記錄了有符號數(shù)運(yùn)算的結(jié)果是否發(fā)生了溢出。

如果發(fā)生溢出,OF = 1;如果沒有,OF = 0。

CF和OF的區(qū)別:CF是對無符號數(shù)運(yùn)算有意義的標(biāo)志位,而OF是對有符號數(shù)運(yùn)算有意義的標(biāo)志位

CPU在執(zhí)行add等指令的時候,就包含了兩種含義:無符號數(shù)運(yùn)算和有符號數(shù)運(yùn)算。

  • 對于無符號數(shù)運(yùn)算,CPU用CF位來記錄是否產(chǎn)生了進(jìn)位;
  • 對于有符號數(shù)運(yùn)算,CPU用OF位來記錄是否產(chǎn)生了溢出,當(dāng)然,還要用SF位來記錄結(jié)果的符號。

mov al, 98
add al, 99 ;執(zhí)行后將產(chǎn)生溢出。因?yàn)檫M(jìn)行的"有符號數(shù)"運(yùn)算是:(al)=(al)+ 99 = 98 + 99=197 = C5H 為-59的補(bǔ)碼
;而結(jié)果197超出了機(jī)器所能表示的8位有符號數(shù)的范圍:-128-127。
;add 指令執(zhí)行后:無符號運(yùn)算沒有進(jìn)位CF=0,有符號運(yùn)算溢出OF=1
;當(dāng)取出的數(shù)據(jù)C5H按無符號解析C5H = 197, 當(dāng)按有符號解析通過SP得知數(shù)據(jù)為負(fù),即C5H為-59補(bǔ)碼存儲,

mov al,0F0H ;F0H,為有符號數(shù)-16的補(bǔ)碼 -Not(F0 - 1)
add al,088H ;88H,為有符號數(shù)-120的補(bǔ)碼 -Not(88- 1)
;執(zhí)行后,將產(chǎn)生溢出。因?yàn)閍dd al, 088H進(jìn)行的有符號數(shù)運(yùn)算結(jié)果是:(al)= -136
;而結(jié)果-136超出了機(jī)器所能表示的8位有符號數(shù)的范圍:-128-127。
;add 指令執(zhí)行后:無符號運(yùn)算有進(jìn)位CF=1,有符號運(yùn)算溢出OF=1

2、adc指令和sbb指令

adc是帶進(jìn)位加法指令,它利用了CF位上記錄的進(jìn)位值。

指令格式:adc 操作對象1, 操作對象2

功能:操作對象1 = 操作對象1 + 操作對象2 + CF

mov ax, 2
mov bx, 1
sub bx, ax ;無符號運(yùn)算借位CF=1,有符號運(yùn)算OF = 0
adc ax, 1 ;執(zhí)行后,(ax)= 4。adc執(zhí)行時,相當(dāng)于計(jì)算:(ax)+1+CF = 2+1+1 = 4。

在這里插入圖片描述

;計(jì)算1EF000H+201000H,結(jié)果放在ax(高16位)和bx(低16位)中。
;將計(jì)算分兩步進(jìn)行,先將低16位相加,然后將高16位和進(jìn)位值相加。
mov ax, 001EH 
mov bx, 0F000H 
add bx, 1000H
adc ax, 0020H

sbb指令

sbb是帶借位減法指令,它利用了CF位上記錄的借位值。

指令格式:sbb 操作對象1, 操作對象2

功能:操作對象1 = 操作對象1 - 操作對象2 - CF

;計(jì)算 003E1000H - 00202000H,結(jié)果放在ax,bx中,程序如下:
mov bx, 1000H
mov ax, 003EH
sub bx, 2000H
sbb ax, 0020H

3、cmp指令

cmp是比較指令,cmp的功能相當(dāng)于減法指令,只是不保存結(jié)果。cmp指令執(zhí)行后,將對標(biāo)志寄存器產(chǎn)生影響。

其他相關(guān)指令通過識別這些被影響的標(biāo)志寄存器位來得知比較結(jié)果。

cmp指令格式:cmp 操作對象1,操作對象2

例如:
指令cmp ax, ax,做(ax)-(ax)的運(yùn)算,結(jié)果為0,但并不在ax中保存,僅影響flag的相關(guān)各位。
指令執(zhí)行后:zf=1,pf=1,sf=0,cf=0,of=0。

CPU在執(zhí)行cmp指令的時候,也包含兩種含義:進(jìn)行無符號數(shù)運(yùn)算和進(jìn)行有符號數(shù)運(yùn)算。

cmp ax, bx 無符號比較時
(ax) = (bx) zf = 1
(ax) ≠ (bx) zf = 0
(ax) < (bx) cf = 1
(ax) ≥ (bx) cf = 0
(ax) > (bx) cf = 0 且 zf = 0
(ax) ≤ (bx) cf = 1 且 zf = 1

上面的表格可以正推也可以逆推

如果用cmp來進(jìn)行有符號數(shù)比較時
SF只能記錄實(shí)際結(jié)果的正負(fù),發(fā)生溢出的時候,實(shí)際結(jié)果的正負(fù)不能說明邏輯上真正結(jié)果的正負(fù)。
但是邏輯上的結(jié)果的正負(fù),才是cmp指令所求的真正結(jié)果,所以我們在考察SF的同時考察OF,就可以得知邏輯上真正結(jié)果的正負(fù),同時就知道比較的結(jié)果。

mov ah, 08AH ; -Not(8A-1) = -118 即當(dāng)成有符號數(shù)時為-118
mov bh, 070H ; 有符號數(shù)時最高位為0為正數(shù), 70H = 112
cmp ah, bh ;(ah)-(bh)實(shí)際得到的結(jié)果是1AH 
		 ; 在邏輯上,運(yùn)算所應(yīng)該得到的結(jié)果是:(-118)- 112 = -230
		 ; sf記錄實(shí)際結(jié)果的正負(fù),所以sf=0

cmp ah, bh
(1)如果sf=1,而of=0 。 of=0說明沒有溢出,邏輯上真正結(jié)果的正負(fù)=實(shí)際結(jié)果的正負(fù); sf=1,實(shí)際結(jié)果為負(fù),所以邏輯上真正的結(jié)果為負(fù),所以(ah)<(bh)

(2)如果sf=1,而of=1: of=1,說明有溢出,邏輯上真正結(jié)果的正負(fù)≠實(shí)際結(jié)果的正負(fù); sf=1,實(shí)際結(jié)果為負(fù)。
實(shí)際結(jié)果為負(fù),而又有溢出,這說明是由于溢出導(dǎo)致了實(shí)際結(jié)果為負(fù),,如果因?yàn)橐绯鰧?dǎo)致了實(shí)際結(jié)果為負(fù),那么邏輯上真正的結(jié)果必然為正。 這樣,sf=1,of=1,說明了(ah)>(bh)。

(3)如果sf=0,而of=1。of=1,說明有溢出,邏輯上真正結(jié)果的正負(fù)≠實(shí)際結(jié)果的正負(fù);sf=0,實(shí)際結(jié)果非負(fù)。而of=1說明有溢出,則結(jié)果非0,所以,實(shí)際結(jié)果為正。
實(shí)際結(jié)果為正,而又有溢出,這說明是由于溢出導(dǎo)致了實(shí)際結(jié)果非負(fù),如果因?yàn)橐绯鰧?dǎo)致了實(shí)際結(jié)果為正,那么邏輯上真正的結(jié)果必然為負(fù)。這樣,sf=0,of=1,說明了(ah)<(bh)。
(4)如果sf=0,而of=0
of=0,說明沒有溢出,邏輯上真正結(jié)果的正負(fù)=實(shí)際結(jié)果的正負(fù);sf=0,實(shí)際結(jié)果非負(fù),所以邏輯上真正的結(jié)果非負(fù),所以(ah)≥(bh)。

4、檢測比較結(jié)果的條件轉(zhuǎn)移指令

可以根據(jù)某種條件,決定是否修改IP的指令

jcxz它可以檢測cx中的數(shù)值,如果(cx)=0,就修改IP,否則什么也不做。

所有條件轉(zhuǎn)移指令的轉(zhuǎn)移位移都是[-128,127]。

多數(shù)條件轉(zhuǎn)移指令都檢測標(biāo)志寄存器的相關(guān)標(biāo)志位,根據(jù)檢測的結(jié)果來決定是否修改IP

這些條件轉(zhuǎn)移指令通常都和cmp相配合使用,它們所檢測的標(biāo)志位,都是cmp指令進(jìn)行無符號數(shù)比較的時記錄比較結(jié)果的標(biāo)志位

根據(jù)無符號數(shù)的比較結(jié)果進(jìn)行轉(zhuǎn)移的條件轉(zhuǎn)移指令(它們檢測zf、cf的值)

指令 含義 檢測的相關(guān)標(biāo)志位
je 等于則轉(zhuǎn)移 zf = 1
jne 不等于則轉(zhuǎn)移 zf = 0
jb 低于則轉(zhuǎn)移 cf = 1
jnb 不低于則轉(zhuǎn)移 cf = 0
ja 高于則轉(zhuǎn)移 cf = 0 且 zf = 0
jna 不高于則轉(zhuǎn)移 cf = 1 且 zf = 1

j:jump,e:equal,b:below,a:above,n:not

;編程,統(tǒng)計(jì)data段中數(shù)值為8的字節(jié)的個數(shù),用ax保存統(tǒng)計(jì)結(jié)果。
mov ax, data 
mov ds, ax 
mov bx, 0 ;ds:bx指向第一個字節(jié)
mov ax, 0 ;初始化累加器mov cx,8

s:
	cmp byte ptr[bx], 8 ;和8進(jìn)行比較
	jne next ;如果不相等轉(zhuǎn)到next,繼續(xù)循環(huán)
	inc ax ;如果相等就將計(jì)數(shù)值加1
next:
	inc bx
	loop s ;程序執(zhí)行后:(ax)=3

5、DF標(biāo)志和串傳送指令
方向標(biāo)志位。在串處理指令中,控制每次操作后si、di的增減。

  • df = 0每次操作后si、di遞增;
  • df = 1每次操作后si、di遞減。

格式:movsb
功能:將ds:si指向的內(nèi)存單元中的字節(jié)送入es:di中,然后根據(jù)標(biāo)志寄存器df位的值,將si和di遞增或遞減

格式:movsw
功能:將ds:si指向的內(nèi)存字單元中的字送入es:di中,然后根據(jù)標(biāo)志寄存器df位的值,將si和di遞增2或遞減2。

格式:rep movsb
movsb和movsw進(jìn)行的是串傳送操作中的一個步驟,一般來說,movsb和movsw都和rep配合使用,
功能:rep的作用是根據(jù)cx的值,重復(fù)執(zhí)行后面的串傳送指令

8086CPU提供下面兩條指令對df位進(jìn)行設(shè)置。

  • cld指令:將標(biāo)志寄存器的df位置0
  • std指令:將標(biāo)志寄存器的df位置1
;將data段中的第一個字符串復(fù)制到它后面的空間中。
data segment 
	db 'Welcome to masm!'
	db 16 dup (0)
data ends

mov ax, data 
mov ds, ax 
mov si, 0 ;ds:si 指向data:0
mov es, ax 
mov di, 16 ;es:di指向data:0010

mov cx, 16 ;(cx)=16,rep循環(huán)16次
c1d ;設(shè)置df=0,正向傳送
rep movsb

6、pushf和popf
pushf的功能是將標(biāo)志寄存器的值壓棧,而popf是從棧中彈出數(shù)據(jù),送入標(biāo)志寄存器中

pushf和popf,為直接訪問標(biāo)志寄存器提供了一種方法。

十一、內(nèi)中斷

1、內(nèi)中斷的產(chǎn)生

任何一個通用的CPU,都具備一種能力,可以在執(zhí)行完當(dāng)前正在執(zhí)行的指令之后,檢測到從CPU外部發(fā)送過來的或內(nèi)部產(chǎn)生的一種特殊信息,并且可以立即對所接收到的信息進(jìn)行處理。這種特殊的信息,我們可以稱其為:中斷信息。中斷的意思是指,CPU不再接著(剛執(zhí)行完的指令)向下執(zhí)行,而是轉(zhuǎn)去處理這個特殊信息。

中斷信息可以來自CPU的內(nèi)部和外部(內(nèi)中斷,外中斷)

內(nèi)中斷:當(dāng)CPU的內(nèi)部有需要處理的事情發(fā)生的時候,將產(chǎn)生中斷信息,引發(fā)中斷過程。這種中斷信息來自CPU的內(nèi)部

8086CPU的內(nèi)中斷(下面四種情況將產(chǎn)生中斷信息)

  • 除法錯誤,比如,執(zhí)行div指令產(chǎn)生的除法溢出;
  • 單步執(zhí)行;
  • 執(zhí)行into指令;
  • 執(zhí)行int指令。

中斷信息中包含中斷類型碼,中斷類型碼為一個字節(jié)型數(shù)據(jù),可以表示256種中斷信息的來源(中斷源)

上述的4種中斷源,在8086CPU中的中斷類型碼如下。

  • 除法錯誤:0
  • 單步執(zhí)行:1
  • 執(zhí)行into指令:4
  • 執(zhí)行int指令,該指令的格式為int n,指令中的n為字節(jié)型立即數(shù),是提供給CPU的中斷類型碼。

2、中斷處理程序、中斷向量表、中斷過程

中斷處理程序

用來處理中斷信息的程序被稱為中斷處理程序。

根據(jù)CPU的設(shè)計(jì),中斷類型碼的作用就是用來定位中斷處理程序。比如CPU根據(jù)中斷類型碼4,就可以找到4號中斷的處理程序

中斷向量表

中斷向量,就是中斷處理程序的入口地址。中斷向量表,就是中斷處理程序入口地址的列表

CPU用8位的中斷類型碼通過中斷向量表找到相應(yīng)的中斷處理程序的入口地址

在這里插入圖片描述

中斷過程

中斷過程的主要任務(wù)就是用中斷類型碼在中斷向量表中找到中斷處理程序的入口地址,設(shè)置CS和IP

簡要描述如下

  1. 取得中斷類型碼N;
  2. pushf
  3. TF=0,IF=0 (為什么這樣參考單步中斷)
  4. push CS , push IP
  5. (IP)=(N * 4),(CS)=(N * 4 + 2)

硬件在完成中斷過程后,CS:IP將指向中斷處理程序的入口,CPU開始執(zhí)行中斷處理程序。

3、iret指令

CPU隨時都可能執(zhí)行中斷處理程序,中斷處理程序必須一直存儲在內(nèi)存某段空間之中
而中斷處理程序的入口地址,即中斷向量,必須存儲在對應(yīng)的中斷向量表表項(xiàng)中。

中斷處理程序的常規(guī)編寫步驟:

  1. 保存用到的寄存器;
  2. 處理中斷;
  3. 恢復(fù)用到的寄存器;
  4. 用iret指令返回。

iret 指令描述為:pop IP pop CS popf

iret指令執(zhí)行后,CPU回到執(zhí)行中斷處理程序前的執(zhí)行點(diǎn)繼續(xù)執(zhí)行程序

4、除法錯誤中斷的處理

mov ax, 1000h
mov bh, 1
div bh ;除法溢出錯誤

1、當(dāng)CPU執(zhí)行div bh時,發(fā)生了除法溢出錯誤,產(chǎn)生0號中斷信息,從而引發(fā)中斷過程,

2、CPU執(zhí)行0號中斷處理程序

3、系統(tǒng)中的0號中斷處理程序的功能:顯示提示信息“Divide overflow”后,返回到操作系統(tǒng)中。

編程實(shí)驗(yàn)

編程:編寫0號中斷處理程序do0,當(dāng)發(fā)生除法溢出時,在屏幕中間顯示“overflow!”,返回DOS。

1、0000:0200至0000:02FF的256個字節(jié)的空間所對應(yīng)的中斷向量表項(xiàng)都是空的,可以將中斷處理程序do0傳送到內(nèi)存0000:0200處。

2、中斷處理程序do0放到0000:0200,再將其地址登記在中斷向量表對應(yīng)表項(xiàng)

  • 0號表項(xiàng)的地址0:0。0:0字單元存放偏移地址,0:2字單元存放段地址
  • 將do0的段地址0存放在0000:0002字單元中,將偏移地址200H存放在0000:0000字單元
assume cs:code

code segment
start:	
		mov ax, cs
		mov ds, ax
		mov si, offset do0		;設(shè)置ds:si指向源地址
		mov ax, 0
		mov es, ax
		mov di, 200h			;設(shè)置es:di指向目的地址0000:0200
		mov cx, offset do0end - offset do0		;設(shè)置cx為傳輸長度 編譯時給出do0部分代碼長度
		cld				 ;設(shè)置傳輸方向?yàn)檎?
		rep movsb ;將do0的代碼送入0:200處
		
		mov ax, 0  ;設(shè)置中斷向量表
		mov es, ax
		mov word ptr es:[0*4], 200h
		mov word ptr es:[0*4+2], 0

 	mov ax,4c00h
 	int 21h

;do0程序的主要任務(wù)是顯示字符串
do0:	jmp short do0 start 
 	db "overflow!"

do0start:
 	mov ax, cs
 	mov ds, ax
 	mov si, 202h			;設(shè)置ds:si指向字符串

 	mov ax, 0b800h
 	mov es, ax
		mov di, 12*160+36*2		;設(shè)置es:di指向顯存空間的中間位置

 mov cx, 9				;設(shè)置cx為字符串長度
	s:	mov al, [si]
 	mov es:[di], al
 	inc si
 	add di, 1
		mov al, 02h  ;設(shè)置顏色
		mov es:[di], al 
		add di, 1
 	loop s

 	mov ax, 4c00h
 	int 21h
do0end:	nop

code ends
end start

5、單步中斷

CPU在執(zhí)行完一條指令之后,如果檢測到標(biāo)志寄存器的TF位為1,則產(chǎn)生單步中斷,引發(fā)中斷過程。單步中斷的中斷類型碼為1

Debug是如何利用CPU所提供的單步中斷的功能進(jìn)行調(diào)試?如使用t命令查看寄存器狀態(tài)

Debug提供了單步中斷的中斷處理程序,功能為顯示所有寄存器中的內(nèi)容后等待輸入命令

在使用t命令執(zhí)行指令時,Debug將TF設(shè)置為1,在CPU執(zhí)行完這條指令后就引發(fā)單步中斷,執(zhí)行單步中斷的中斷處理程序,所有寄存器中的內(nèi)容被顯示在屏幕上,并且等待輸入命令。

在進(jìn)入中斷處理程序之前,設(shè)置TF=0。從而避免CPU在執(zhí)行中斷處理程序的時候發(fā)生單步中斷

6、int指令

int指令的格式為:int n ,n為中斷類型碼,它的功能是引發(fā)中斷過程。

CPU執(zhí)行int n指令,相當(dāng)于引發(fā)一個n號中斷的中斷過程

在程序中使用int指令調(diào)用任何一個中斷的中斷處理程序(中斷例程)

編寫供應(yīng)用程序調(diào)用的中斷例程

實(shí)驗(yàn)1

;求2 * 3456^2
assume cs:code

code segment

start: 
 mov ax, 3456 ;(ax)=3456
​ int 7ch ; 調(diào)用中斷7ch的中斷例程,計(jì)算ax中的數(shù)據(jù)的平方
​ add ax, ax 
​ adc dx, dx ;存放結(jié)果,將結(jié)果乘以2

​ mov ax,4c00h
​ int 21h
code ends
end start
;編程:安裝中斷7ch的中斷例程
;功能:求一word型數(shù)據(jù)的平方。
;參數(shù):(ax) = 要計(jì)算的數(shù)據(jù)。
;返回值:dx、ax中存放結(jié)果的高16位和低16位。

assume cs:code

code segment
start:
		mov ax,cs
		mov ds,ax
		mov si,offset sqr					;設(shè)置ds:si指向源地址
		mov ax,0
		mov es,ax
		mov di,200h							;設(shè)置es:di指向目的地址
		mov cx,offset sqrend - offset sqr	;設(shè)置cx為傳輸長度
		cld									;設(shè)置傳輸方向?yàn)檎?
		rep movsb

		mov ax,0
		mov es,ax
		mov word ptr es:[7ch*4],200h
		mov word ptr es:[7ch*4+2],0

		mov ax,4c00h
		int 21h

 sqr: 
		mul ax
		iret ;CPU執(zhí)行int 7ch指令進(jìn)入中斷例程之前,標(biāo)志寄存器、當(dāng)前的CS和IP被壓入棧
		 ;在執(zhí)行完中斷例程后,應(yīng)該用iret 指令恢復(fù)int 7ch執(zhí)行前的標(biāo)志寄存器和CS、IP的
sqrend:	nop

code ends
end start

實(shí)驗(yàn)2

;功能:將一個全是字母,以0結(jié)尾的字符串,轉(zhuǎn)化為大寫。
;參數(shù):ds:si指向字符串的首地址。
;應(yīng)用舉例:將data段中的字符串轉(zhuǎn)化為大寫。
assume cs:code

data segment
	db 'conversation',0
data ends

code segment
start: mov ax, data
		mov ds, ax
		mov si, 0
		int 7ch
		
		mov ax,4c00h
		int 21h
code ends
end start
assume cs:code
code segment

start:
		mov ax,cs
		mov ds,ax
		mov si,offset capital
		mov ax,0
		mov es,ax
		mov di,200h
		mov cx,offset capitalend - offset capital
		cld
		rep movsb

		mov ax,0
		mov es,ax
		mov word ptr es:[7ch*4],200h
		mov word ptr es:[7ch*4+2],0

		mov ax,4c00h
		int 21h

capital:
		push cx
		push si
		
change: 
		mov cl,[si]
		mov ch,0
		jcxz ok
		and byte ptr [si],11011111b
		inc si
		jmp short change
ok:	
		pop si
		pop cx
		iret
		
capitalend:nop

code ends

end start

7、BIOS和DOS所提供的中斷例程

在系統(tǒng)板的ROM中存放著一套程序,稱為BIOS(基本輸入輸出系統(tǒng))

BIOS中主要包含以下幾部分內(nèi)容

  • 硬件系統(tǒng)的檢測和初始化程序;
  • 外部中斷和內(nèi)部中斷的中斷例程;
  • 用于對硬件設(shè)備進(jìn)行I/O操作的中斷例程;
  • 其他和硬件系統(tǒng)相關(guān)的中斷例程。

程序員在編程的時候,可以用int 指令直接調(diào)用BIOS和DOS系統(tǒng)提供的中斷例程,來完成某些工作。
和硬件設(shè)備相關(guān)的DOS中斷例程中,一般都調(diào)用了BIOS的中斷例程。

BIOS和DOS中斷例程的安裝過程

BIOS和DOS提供的中斷例程是如何安裝到內(nèi)存中的呢?

1、開機(jī)后,CPU一加電,初始化(CS)= 0FFFFH,(IP)= 0,自動從FFFF:0單元開始執(zhí)行程序。FFFF:0處有一條轉(zhuǎn)跳指令,CPU執(zhí)行該指令后,轉(zhuǎn)去執(zhí)行BIOS中的硬件系統(tǒng)檢測和初始化程序。

2、初始化程序?qū)⒔IOS所支持的中斷向量,即將BIOS提供的中斷例程的入口地址登記在中斷向量表中。
注意,對于BIOS所提供的中斷例程,只需將入口地址登記在中斷向量表中即可,因?yàn)樗鼈兪枪袒絉OM中的程序,一直在內(nèi)存中存在。

3、硬件系統(tǒng)檢測和初始化完成后,調(diào)用int 19h進(jìn)行操作系統(tǒng)的引導(dǎo)。從此將計(jì)算機(jī)交由操作系統(tǒng)控制。

4、DOS啟動后,除完成其他工作外,還將它所提供的中斷例程裝入內(nèi)存,并建立相應(yīng)的中斷向量。

BIOS中斷例程應(yīng)用

一般來說,一個供程序員調(diào)用的中斷例程中往往包括多個子程序,中斷例程內(nèi)部用傳遞進(jìn)來的參數(shù)來決定執(zhí)行哪一個子程序。

BIOS和DOS提供的中斷例程,都用ah來傳遞內(nèi)部子程序的編號。

編程:在屏幕的5行12列顯示3個紅底高亮閃爍綠色的“al。

assume cs:code 

code segment
;int 10h中斷例程的"設(shè)置光標(biāo)位置"功能
mov ah, 2;設(shè)置光標(biāo)調(diào)用第10h號中斷例程的2號子程序,功能為設(shè)置光標(biāo)位置(可以提供光標(biāo)所在的行號、列號和頁號作為參數(shù))

;設(shè)置光標(biāo)到第0頁,第5行,第12列
mov bh, 0;第0頁
mov dh, 5;dh中放行號
mov dl, 12;dl中放列號
int 10h

;int10h中斷例程的"在光標(biāo)位置顯示字符"功能。
mov ah,9 ;調(diào)用第10h號中斷例程的9號子程序,功能為在光標(biāo)位置顯示字符
;提供要顯示的字符、顏色屬性、頁號、字符重復(fù)個數(shù)作為參數(shù)
mov al,'a' ;字符
mov b1,11001010b ;顏色屬性
mov bh,0 ;第0頁
mov cx,3 ;字符重復(fù)個數(shù)
int 10h

code ends 
end

bh中頁號的含義:內(nèi)存地址空間中,B8000H~BFFFFH共32kB的空間,為80*25彩色字符模式的顯示緩沖區(qū)。
一屏的內(nèi)容在顯示緩沖區(qū)中共占4000個字節(jié)。顯示緩沖區(qū)分為8頁,每頁4KB(約4000B),顯示器可以顯示任意一頁的內(nèi)容。一般情況下,顯示第0頁的內(nèi)容。也就是說,通常情況下,B8000H~B8F9FH中的4000個字節(jié)的內(nèi)容將出現(xiàn)在顯示器上。

DOS中斷例程應(yīng)用

int 21h中斷例程是DOS提供的中斷例程,4ch號功能,即程序返回功能

mov ah, 4ch ;調(diào)用第21h號中斷例程的4ch號子程序,功能為程序返回,可以提供返回值作為參數(shù)
mov al, 0 ;返回值
int 21h

編程:在屏幕的5行12列顯示字符串“Welcome to masm!”。

assume cs:code 
 
data segment 
	db	'Welcome to masm', '$' ;“$”本身并不顯示,只起到邊界的作用
data ends 

code segment
start:	mov ah, 2 ;10號中斷設(shè)置光標(biāo)位置功能
		mov bh, 0 ;第0頁
		mov dh, 5;dh中放行號
		mov dl, 12 ;dl中放列號
		int 10h 
		
		mov ax, data 
		mov ds, ax 
		mov dx, 0 ;ds:dx指向字符串的首地址data:0 (參數(shù))
		mov ah, 9 ;調(diào)用第21h號中斷例程的9號子程序,功能為在光標(biāo)位置顯示字符串,可以提供要顯示字符串的地址作為參數(shù)
		int 21h 
		
		mov ax, 4c00h ;21號中斷程序返回功能
		int 21h 
code ends
end start

十二、端口

在PC機(jī)系統(tǒng)中,和CPU通過總線相連的芯片除各種存儲器外,還有以下3種芯片。

  • 各種接口卡(比如,網(wǎng)卡、顯卡)上的接口芯片,它們控制接口卡進(jìn)行工作;
  • 主板上的接口芯片,CPU通過它們對部分外設(shè)進(jìn)行訪問;
  • 其他芯片,用來存儲相關(guān)的系統(tǒng)信息,或進(jìn)行相關(guān)的輸入輸出處理。

在這些芯片中,都有一組可以由CPU讀寫的寄存器。這些寄存器,它們在物理上可能處于不同的芯片中,
但是它們在以下兩點(diǎn)上相同。

  • 都和CPU的總線相連,這種連接是通過它們所在的芯片進(jìn)行的;
  • CPU對它們進(jìn)行讀或?qū)懙臅r候都通過控制線向它們所在的芯片發(fā)出端口讀寫命令。

從CPU的角度,將這些寄存器都當(dāng)作端口,對它們進(jìn)行統(tǒng)一編址,從而建立了一個統(tǒng)一的端口地址空間。
每一個端口在地址空間中都有一個地址。在訪問端口的時候,CPU通過端口地址來定位端口。因?yàn)槎丝谒诘男酒虲PU通過總線相連,

CPU可以直接讀寫以下3個地方的數(shù)據(jù)。

CPU內(nèi)部的寄存器;
內(nèi)存單元;
端口。

1、端口的讀寫

端口地址和內(nèi)存地址一樣,通過地址總線來傳送。在PC系統(tǒng)中,CPU最多可以定位64KB個不同的端口。則端口地址的范圍為0-65535。

端口的讀寫指令只有兩條:in和out,分別用于從端口讀取數(shù)據(jù)和往端口寫入數(shù)據(jù)。

在in和out指令中,只能使用ax或al來存放從端口中讀入的數(shù)據(jù)或要發(fā)送到端口中的數(shù)據(jù)。

;對0~255以內(nèi)的端口進(jìn)行讀寫時:
in al, 20h ;從20h端口讀入一個字節(jié)
out 20h, al ;往20h端口寫入一個字節(jié)

;對256~65535的端口進(jìn)行讀寫時,端口號放在dx中:
mov dx, 3f8h ;將端口號3f8h送入dx
in al, dx ;從3f8h端口讀入一個字節(jié)
out dx, al ;向3f8h端口寫入一個字節(jié)

2、CMOS RAM芯片

PC機(jī)中,有一個CMOSRAM芯片,一般簡稱為CMOS。此芯片的特征如下

1、包含一個實(shí)時鐘和一個有128個存儲單元的RAM存儲器
2、該芯片靠電池供電。關(guān)機(jī)后內(nèi)部的實(shí)時鐘正常工作,RAM中的信息不丟失
3、128個字節(jié)的RAM中,內(nèi)部實(shí)時鐘占用0~0dh單元來保存時間信息,其余大部分單元用于保存系統(tǒng)配置信息,供系統(tǒng)啟動時BIOS程序讀取。BIOS也提供了相關(guān)的程序,使我們可以在開機(jī)的時候配置CMOSRAM中的系統(tǒng)信息。
該芯片內(nèi)部有兩個端口,端口地址為70h和71h。CPU通過這兩個端口來讀寫CMOS RAM
4、70h為地址端口,存放要訪問的CMOSRAM單元的地址;71h為數(shù)據(jù)端口,存放從選定的CMOSRAM單元中讀取的數(shù)據(jù),或要寫入到其中的數(shù)據(jù)。
可見,CPU對CMOS RAM的讀寫分兩步進(jìn)行,比如,讀CMOS RAM的2號單元:
①將2送入端口70h;
②從端口71h讀出2號單元的內(nèi)容。

CMOSRAM中存儲的時間信息

在CMOS RAM中,存放著當(dāng)前的時間:年、月、日、時、分、秒。長度都為1個字節(jié),
存放單元為:

9 8 7 6 5 4 3 2 1 0

BCD碼是以4位二進(jìn)制數(shù)表示十進(jìn)制數(shù)碼的編碼方法 4 == 0100B

一個字節(jié)可表示兩個BCD碼。則CMOS RAM存儲時間信息的單元中,存儲了用兩個BCD碼表示的兩位十進(jìn)制數(shù),高4位的BCD碼表示十位,低4位的BCD碼表示個位。比如,00010100b表示14。

;編程,在屏幕中間顯示當(dāng)前的月份。
assume cs:code
code segment 
start:	mov al,8 ;從CMOS RAM的8號單元讀出當(dāng)前月份的BCD碼。
		out 70h,al 
		in al, 71h ;從數(shù)據(jù)端口71h中取得指定單元中的數(shù)據(jù):
		
		mov ah, al ;al中為從CMOSRAM的8號單元中讀出的數(shù)據(jù)
		mov cl, 4
		shr ah, cl ;ah中為月份的十位數(shù)碼值,左移四位空出四位
		and al, 00001111b ;al中為月份的個位數(shù)碼值
		
		add ah, 30h ;BCD碼值+30h=十進(jìn)制數(shù)對應(yīng)的ASCII
		add al, 30h 
		
		mov bx, 0b800h 
		mov es, bx 
		mov byte ptr es:[160*12+40*2], ah ;顯示月份的十位數(shù)碼
		mov byte ptr es:[160*12+40*2+2], al ;接著顯示月份的個位數(shù)碼
		
		mov ax,4c00h
		int 21h
code ends
end start

3、shl和shr指令
shl和shr是邏輯移位指令

shl是邏輯左移指令,它的功能為:

  • 將一個寄存器或內(nèi)存單元中的數(shù)據(jù)向左移位;
  • 將最后移出的一位寫入CF中;
  • 最低位用0補(bǔ)充。

shr是邏輯右移指令,同理

mov al, 01001000b 
shl al, 1 ;將a1中的數(shù)據(jù)左移一位執(zhí)行后(al)=10010000b,CF=0。

mov al, 01010001b 
mov cl, 3 ;如果移動位數(shù)大于1時,必須將移動位數(shù)放在cl中
shl al, c1

mov al, 10000001b 
shr al, 1 ;將al中的數(shù)據(jù)右移一位執(zhí)行后(al)=01000000b,CF=1。

將X邏輯左移一位,相當(dāng)于執(zhí)行X=X*2。
將X邏輯右移一位,相當(dāng)于執(zhí)行X=X/2

十三、外中斷

1、外中斷

PU在計(jì)算機(jī)系統(tǒng)中,除了能夠執(zhí)行指令,進(jìn)行運(yùn)算以外,還應(yīng)該能夠?qū)ν獠吭O(shè)備進(jìn)行控制,接收它們的輸入,向它們進(jìn)行輸出(I/O能力)

PC系統(tǒng)的接口卡和主板上,裝有各種接口芯片。這些外設(shè)接口芯片的內(nèi)部有若干寄存器,CPU將這些寄存器當(dāng)作端口來訪問

外設(shè)的輸入不直接送入內(nèi)存和CPU,而是送入相關(guān)的接口芯片的端口中;
CPU向外設(shè)的輸出也不是直接送入外設(shè),而是先送入端口中,再由相關(guān)的芯片送到外設(shè)。
CPU還可以向外設(shè)輸出控制命令,而這些控制命令也是先送到相關(guān)芯片的端口中,然后再由相關(guān)的芯片根據(jù)命令對外設(shè)實(shí)施控制。

即:CPU通過端口和外部設(shè)備進(jìn)行聯(lián)系

當(dāng)CPU外部有需要處理的事情發(fā)生的時候,比如說,外設(shè)的輸入到達(dá),相關(guān)芯片將向CPU發(fā)出相應(yīng)的中斷信息。CPU在執(zhí)行完當(dāng)前指令后,可以檢測到發(fā)送過來的中斷信息,引發(fā)中斷過程,處理外設(shè)的輸入。

PC系統(tǒng)中,外中斷源有兩類

1、可屏蔽中斷

可屏蔽中斷是CPU可以不響應(yīng)的外中斷。CPU是否響應(yīng)可屏蔽中斷,要看標(biāo)志寄存器的IF位的設(shè)置。
當(dāng)CPU檢測到可屏蔽中斷信息時,如果IF=1,則CPU在執(zhí)行完當(dāng)前指令后響應(yīng)中斷,引發(fā)中斷過程;如果IF=0,則不響應(yīng)可屏蔽中斷。

可屏蔽中斷信息來自于CPU外部,中斷類型碼是通過數(shù)據(jù)總線送入CPU的;而內(nèi)中斷的中斷類型碼是在CPU內(nèi)部產(chǎn)生的。

中斷過程中將IF置0的原因就是,在進(jìn)入中斷處理程序后,禁止其他的可屏蔽中斷。
如果在中斷處理程序中需要處理可屏蔽中斷,可以用指令將IF置1。

8086CPU提供的設(shè)置IF的指令:sti,設(shè)置IF=1;cli,設(shè)置IF=0。

2、不可屏蔽中斷

不可屏蔽中斷是CPU必須響應(yīng)的外中斷。當(dāng)CPU檢測到不可屏蔽中斷信息時,則在執(zhí)行完當(dāng)前指令后,立即響應(yīng),引發(fā)中斷過程。

對于8086CPU,不可屏蔽中斷的中斷類型碼固定為2,所以中斷過程中,不需要取中斷類型碼。則不可屏蔽中斷的中斷過程為:①標(biāo)志寄存器入棧,IF=0,TF=0;②CS、IP入棧;③(IP)=(8),(CS)=(0AH)。

幾乎所有由外設(shè)引發(fā)的外中斷,都是可屏蔽中斷。當(dāng)外設(shè)有需要處理的事件(比如說鍵盤輸入)發(fā)生時,相關(guān)芯片向CPU發(fā)出可屏蔽中斷信息。不可屏蔽中斷是在系統(tǒng)中有必須處理的緊急情況發(fā)生時用來通知CPU的中斷信息。

2、PC機(jī)鍵盤的處理過程
鍵盤中有一個芯片對鍵盤上的每一個鍵的開關(guān)狀態(tài)進(jìn)行掃描。按下一個鍵時,開關(guān)接通,該芯片就產(chǎn)生一個掃描碼,掃描碼說明了按下的鍵在鍵盤上的位置。掃描碼被送入主板上的相關(guān)接口芯片的寄存器中,該寄存器的端口地址為60h。松開按下的鍵時,也產(chǎn)生一個掃描碼,掃描碼說明了松開的鍵在鍵盤上的位置。松開按鍵時產(chǎn)生的掃描碼也被送入60h端口中。

一般將按下一個鍵時產(chǎn)生的掃描碼稱為通碼,松開一個鍵產(chǎn)生的掃描碼稱為斷碼。

掃描碼長度為一個字節(jié),通碼的第7位為0,斷碼的第7位為1
即:斷碼 = 通碼 + 80h。比如,g鍵的通碼為22h,斷碼為a2h

鍵盤的輸入到達(dá)60h端口時,相關(guān)的芯片就會向CPU發(fā)出中斷類型碼為9的可屏蔽中斷信息。CPU檢測到該中斷信息后,如果IF=1,則響應(yīng)中斷,引發(fā)中斷過程,轉(zhuǎn)去執(zhí)行int 9中斷例程。

在這里插入圖片描述

BIOS提供了int9中斷例程,用來進(jìn)行基本的鍵盤輸入處理,主要的工作如下:

(1)讀出60h端口中的掃描碼;
(2)如果是字符鍵的掃描碼,將該掃描碼和它所對應(yīng)的字符碼(即ASCII碼)送入內(nèi)存中的BIOS鍵盤緩沖區(qū); 如果是控制鍵(比如Ctrl)和切換鍵(比如CapsLock)的掃描碼,則將其轉(zhuǎn)變?yōu)闋顟B(tài)字節(jié)寫入內(nèi)存中存儲狀態(tài)字節(jié)的單元;
(3)對鍵盤系統(tǒng)進(jìn)行相關(guān)的控制,比如說,向相關(guān)芯片發(fā)出應(yīng)答信息。

BIOS鍵盤緩沖區(qū)可以存儲15個鍵盤輸入,一個鍵盤輸入用一個字單元存放,高位字節(jié)存放掃描碼,低位字節(jié)存放字符碼。

0040:17單元存儲鍵盤狀態(tài)字節(jié),該字節(jié)記錄了控制鍵和切換鍵的狀態(tài)。鍵盤狀態(tài)字節(jié)各位記錄的信息如下。

0 右shift狀態(tài) 置1表示按下右shift鍵
1 左shift狀態(tài) 置1表示按下左shift鍵
2 Ctrl狀態(tài) 置1表示按下Ctrl鍵
3 Alt狀態(tài) 置1表示按下Alt鍵
4 ScrollLock狀態(tài) 置1表示Scroll指示燈亮
5 NumLock狀態(tài) 置1表示小鍵盤輸入的是數(shù)字
6 CapsLock狀態(tài) 置1表示輸入大寫字母
7 Insert狀態(tài) 置1表示處于刪除態(tài)

編寫int 9中斷例程

;編程:在屏幕中間依次顯示“a”~“z”,并可以讓人看清。在顯示的過程中,按下'Esc'鍵后,改變顯示的顏色。

;完整功能代碼:

assume cs:code

stack segment
	db 128 dup (0)
stack ends

data segment
	dw 0,0
data ends

code segment
start:	
	mov ax,stack
	mov ss,ax
	mov sp,128
	mov ax,data
	mov ds,ax
	mov ax,0
	mov es,ax

	push es:[9*4]
	pop ds:[0]
	push es:[9*4+2]
	pop ds:[2]		;將原來的int 9中斷例程的入口地址保存在ds:0、ds:2單元中

	mov word ptr es:[9*4], offset int9
	mov es:[9*4+2], cs	;在中斷向量表中設(shè)置新的int 9中斷例程的入口地址

;顯示字符串
	mov ax, 0b800h
	mov es, ax
	mov ah, 'a'
s:	
	mov es:[160*12+40*2], ah
	call delay
	inc ah
	cmp ah, 'z'
	jna s
	mov ax,0
	mov es,ax

	push ds:[0]
	pop es:[9*4]
	push ds;[2]
	pop es;[9*4+2] 	;將中斷向量表中int 9中斷例程的入口恢復(fù)為原來的地址

	mov ax,4c00h
	int 21h

;將循環(huán)延時的程序段寫為一個子程序
delay:	
	push ax 
	push dx
	mov dx, 2000h ;用兩個16位寄存器來存放32位的循環(huán)次數(shù)
	mov ax, 0
s1: 	
	sub ax, 1
	sbb dx, 0
	cmp ax, 0
	jne s1
	cmp dx, 0
	jne s1
	pop dx
	pop ax
	ret

;------以下為新的int 9中斷例程--------------------

int9:	
	push ax
	push bx
	push es

	in al, 60h;從端口60h讀出鍵盤的輸入

	pushf ;標(biāo)志寄存器入棧

	pushf 
	pop bx
	and bh,11111100b
	push bx
	popf	;TF=0,IF=0
	
	call dword ptr ds:[0] 	;對int指令進(jìn)行模擬,調(diào)用原來的int 9中斷例程

	cmp al,1
	jne int9ret

	mov ax,0b800h
	mov es,ax
	inc byte ptr es:[160*12+40*2+1] ;屬性增加1,改變顏色

int9ret:
	pop es
	pop bx
	pop ax
	iret

code ends

end start

CPU對外設(shè)輸入的通常處理方法
(1)外設(shè)的輸入送入端口;
(2)向CPU發(fā)出外中斷(可屏蔽中斷)信息;
(3)CPU檢測到可屏蔽中斷信息,如果IF=1,CPU在執(zhí)行完當(dāng)前指令后響應(yīng)中斷,執(zhí)行相應(yīng)的中斷例程;
(4)可在中斷例程中實(shí)現(xiàn)對外設(shè)輸入的處理。

端口和中斷機(jī)制,是CPU進(jìn)行I/O的基礎(chǔ)。

十四、直接定址表

assume cs:code
code segment
  a : db 1,2,3,4,5,6,7,8 ;在后面加有“:”的地址標(biāo)號,只能在代碼段中使用,不能在其他段中使用。
  b : dw 0
start :mov si,offset a
  mov bx,offset b
  mov cx,8
 s : mov al,cs:[si]
  mov ah,0
  add cs:[bx],ax
  inc si
  loop s
  mov ax,4c00h
  int 21h
code ends
end start

程序中,code、a、b、start、s都是標(biāo)號。這些標(biāo)號僅僅表示了內(nèi)存單元的地址

描述了單位長度的標(biāo)號

assume cs:code
code segment
  a db 1,2,3,4,5,6,7,8 ;標(biāo)號a、b后面沒有":",因此它們是可以同時描述內(nèi)存地址和單元長度的標(biāo)號。
    ;標(biāo)號a,描述了地址code:0,和從這個地址開始,以后的內(nèi)存單元都是字節(jié)單元
  b dw 0  ;標(biāo)號b描述了地址code:8,和從這個地址開始,以后的內(nèi)存單元都是字單元。
start : mov si,0
  mov cx,8
 s : mov al,a[si]
  mov ah,0
  add b,ax
  inc si
  loop s
  mov ax,4c00h
  int 21h
code ends
end start

使用數(shù)據(jù)標(biāo)號來描述存儲數(shù)據(jù)的單元的地址和長度。

assume cs:code,ds:data ;用偽指令assume將標(biāo)號所在的段和一個段寄存器聯(lián)系起來(編譯器需要)
data segment  
  a db 1,2,3,4,5,6,7,8
  b dw 0
data ends
code segment
start: mov ax,data
  mov ds,ax ;真正確定ds寄存器
  mov si,0
  mov cx,8
s: mov al,a[si] ;編譯為:mov al,[si+0] 默認(rèn)所訪問單元的段地址在ds
  mov ah,0
  add b,ax ;編譯為:add [8],ax
  inc si
  loop s
  mov ax,4c00h
  int 21h
code ends
end start
data segment
	a db 1,2,3,4,5,6,7,8
	b dw 0
	c dw a, b ;等價于c dw offset a, offset b
	;數(shù)據(jù)標(biāo)號c處存儲的兩個字型數(shù)據(jù)為標(biāo)號a、b 的偏移地址
data ends

data segment
	a db 1,2,3,4,5,6,7,8
	b dw 0
	c dd a,b ;等價于c dw offset a, seg a, offset b, seg b
	;數(shù)據(jù)標(biāo)號c處存儲的兩個雙字型數(shù)據(jù)為標(biāo)號a的偏移地址和段地址、標(biāo)號b 的偏移地址和段地址
data ends

seg操作符,功能為取得某一標(biāo)號的段地址

建立一張表,表中依次存儲字符“0”~“F”,我們可以通過數(shù)值0 ~ 15直接查找到對應(yīng)的字符

assume cs:code

code segment
start: 
		mov al,0eh

 call showbyte

 mov ax,4c00h
 int 21h

;子程序:
;用al傳送要顯示的數(shù)據(jù)

showbyte:
 jmp short show

 table db '0123456789ABCDEF'	;字符表

show: push bx
 push es

 mov ah,al
 shr ah,1  
 shr ah,1
 shr ah,1
 shr ah,1			 ;右移4位,ah中得到高4位的值
 and al,00001111b		;al中為低4位的值

 mov bl,ah
 mov bh,0
 mov ah,table[bx]		;用高4位的值作為相對于table的偏移,取得對應(yīng)的字符

 mov bx,0b800h
 mov es,bx
 mov es:[160*12+40*2],ah

 mov bl,al
 mov bh,0
 mov al,table[bx]		;用低4位的值作為相對于table的偏移,取得對應(yīng)的字符
 
 mov es:[160*12+40*2+2],al

 pop es
 pop bx
 ret

code ends
end start

十五、 指令系統(tǒng)總結(jié)

我們對8086CPU的指令系統(tǒng)進(jìn)行一下總結(jié)。讀者若要詳細(xì)了解8086指令系統(tǒng)中的各個指令的用,可以查看有關(guān)的指令手冊。

8086CPU提供以下幾大類指令。

1、數(shù)據(jù)傳送指令

mov、push、pop、pushf、popf、xchg 等都是數(shù)據(jù)傳送指令,這些指令實(shí)現(xiàn)寄存器和內(nèi)存、寄器和寄存器之間的單個數(shù)據(jù)傳送。

2、算術(shù)運(yùn)算指令
add、sub、adc、sbb、inc、dec、cmp、imul、idiv、aaa等都是算術(shù)運(yùn)算指令,這些指令實(shí)現(xiàn)存器和內(nèi)存中的數(shù)據(jù)的算數(shù)運(yùn)算。它們的執(zhí)行結(jié)果影響標(biāo)志寄存器的sf、zf、of、cf、pf、af位。
3、邏輯指令
and、or、not、xor、test、shl、shr、sal、sar、rol、ror、rcl、rcr等都是邏輯指令。除了not指外,它們的執(zhí)行結(jié)果都影響標(biāo)志寄存器的相關(guān)標(biāo)志位。
4、轉(zhuǎn)移指令
可以修改IP,或同時修改CS和IP的指令統(tǒng)稱為轉(zhuǎn)移指令。轉(zhuǎn)移指令分為以下幾類。
(1)無條件轉(zhuǎn)移指令,比如,jmp;
(2)條件轉(zhuǎn)移指令,比如,jcxz、je、jb、ja、jnb、jna等;
(3)循環(huán)指令,比如,loop;
(4)過程,比如,call、ret、retf;
(5)中斷,比如,int、iret。
5、處理機(jī)控制指令
對標(biāo)志寄存器或其他處理機(jī)狀態(tài)進(jìn)行設(shè)置,cld、std、cli、sti、nop、clc、cmc、stc、hlt、wait、esc、lock等都是處理機(jī)控制指令。
6、串處理指令
對內(nèi)存中的批量數(shù)據(jù)進(jìn)行處理,movsb、movsw、cmps、scas、lods、stos等。若要使用這些指令方便地進(jìn)行批量數(shù)據(jù)的處理,則需要和rep、repe、repne 等前綴指令配合使用。

文中大部分的圖片來自王爽《匯編語言》個別圖片來自劉宏偉·計(jì)算機(jī)組成原理課件
博主靠這本書入門匯編,只是匆匆看了一遍,很多地方理解片面甚至錯誤,將來發(fā)現(xiàn)一定修正

相關(guān)文章

  • 匯編實(shí)現(xiàn)直接插入排序的方法示例

    匯編實(shí)現(xiàn)直接插入排序的方法示例

    這篇文章主要介紹了匯編實(shí)現(xiàn)直接插入排序的方法示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-02-02
  • 詳解匯編語言 dup偽指令

    詳解匯編語言 dup偽指令

    dup它有多種意義,包括Linux c 函數(shù)、C語言函數(shù)DUP、匯編指令、化學(xué)物質(zhì)DUP。這篇文章主要介紹了匯編語言 dup偽指令的相關(guān)知識,需要的朋友可以參考下
    2020-01-01
  • ARM匯編判斷之如何用匯編判斷數(shù)組中正負(fù)數(shù)個數(shù)

    ARM匯編判斷之如何用匯編判斷數(shù)組中正負(fù)數(shù)個數(shù)

    這篇文章主要介紹了ARM匯編判斷之如何用匯編判斷數(shù)組中正負(fù)數(shù)個數(shù),在匯編語言中程序的基本框架是不變的,這里我們可以直接把正向遍歷的程序給貼過來,然后我們思考怎么運(yùn)用判斷后綴把數(shù)組中正數(shù)和負(fù)數(shù)分開,進(jìn)行判斷個數(shù)和分別求和,需要的朋友可以參考下
    2022-04-04
  • 詳解匯編語言RCL(帶進(jìn)位循環(huán)左移)和RCR(帶進(jìn)位循環(huán)右移)指令

    詳解匯編語言RCL(帶進(jìn)位循環(huán)左移)和RCR(帶進(jìn)位循環(huán)右移)指令

    這篇文章主要介紹了匯編語言RCL(帶進(jìn)位循環(huán)左移)和RCR(帶進(jìn)位循環(huán)右移)指令的相關(guān)知識,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-01-01
  • UEFI開發(fā)實(shí)戰(zhàn)SlimBootloader中調(diào)用FSP

    UEFI開發(fā)實(shí)戰(zhàn)SlimBootloader中調(diào)用FSP

    這篇文章主要為大家介紹了UEFI開發(fā)實(shí)戰(zhàn)SlimBootloader中調(diào)用FSP基礎(chǔ)教程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • 匯編語言?masm5與debug命令使用方法小結(jié)

    匯編語言?masm5與debug命令使用方法小結(jié)

    本文總結(jié)了匯編程序的基本框架及規(guī)范、masm5工具的基本使用方法、debug命令的基本使用方法
    2023-08-08
  • 詳解匯編語言MOV指令

    詳解匯編語言MOV指令

    在匯編語言中,MOV指令是數(shù)據(jù)傳送指令,也是最基本的編程指令,這篇文章主要介紹了匯編語言MOV指令,需要的朋友可以參考下
    2020-01-01
  • 匯編語言顯示功能實(shí)現(xiàn)教程詳解

    匯編語言顯示功能實(shí)現(xiàn)教程詳解

    這篇文章主要為大家介紹了匯編語言顯示功能的實(shí)現(xiàn)過程,文中通過問題實(shí)例分析來為大家進(jìn)行詳細(xì)的描述講解,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2021-11-11
  • 利用DOSBox運(yùn)行匯編的詳細(xì)步驟

    利用DOSBox運(yùn)行匯編的詳細(xì)步驟

    本文分步驟給大家介紹了利用DOSBox運(yùn)行匯編,起初是利用VS2017進(jìn)行配置,但后面運(yùn)行好像有些問題,就想到用DOSBox,本文分步驟給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧
    2022-03-03
  • 8086匯編開發(fā)環(huán)境搭建和Debug模式介紹(圖文詳解)

    8086匯編開發(fā)環(huán)境搭建和Debug模式介紹(圖文詳解)

    這篇文章主要介紹了8086匯編開發(fā)環(huán)境搭建和Debug模式介紹,本文圖文并茂給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-01-01

最新評論

97国产在线av精品| 精品国产污污免费网站入口自| 亚洲 欧美 精品 激情 偷拍| 五月天中文字幕内射| 国产 在线 免费 精品| 老鸭窝在线观看一区| 免费无码人妻日韩精品一区二区| 9久在线视频只有精品| 啊啊啊想要被插进去视频| 91在线视频在线精品3| 亚洲美女美妇久久字幕组| av网址在线播放大全| 亚洲熟女综合色一区二区三区四区| 青青青艹视频在线观看| 天码人妻一区二区三区在线看| 黄色在线观看免费观看在线| 91国内精品自线在拍白富美| 国产午夜福利av导航| 91人妻精品久久久久久久网站| 69精品视频一区二区在线观看| 一级A一级a爰片免费免会员| 天天色天天爱天天爽| 青青伊人一精品视频| 成人综合亚洲欧美一区| 免费看美女脱光衣服的视频| 婷婷久久久综合中文字幕| 午夜福利人人妻人人澡人人爽| 美女av色播在线播放| 人妻少妇av在线观看| 欧美日本在线视频一区| 绝顶痉挛大潮喷高潮无码 | 久久精品36亚洲精品束缚| 中文字幕成人日韩欧美| 91色老99久久九九爱精品| 亚洲一区二区三区精品视频在线| 亚洲国产成人av在线一区| 午夜久久久久久久99| 欧美视频综合第一页| 91精品国产观看免费| 2022天天干天天操| 亚洲天天干 夜夜操| 日韩精品激情在线观看| av高潮迭起在线观看| aiss午夜免费视频| 天天色天天舔天天射天天爽| 亚洲高清视频在线不卡| 999热精品视频在线| 一区二区视频在线观看视频在线| 亚洲国产欧美一区二区三区久久| aⅴ五十路av熟女中出| 好太好爽好想要免费| 农村胖女人操逼视频| 婷婷午夜国产精品久久久| 日韩加勒比东京热二区| 欧美日本在线视频一区| 伊人情人综合成人久久网小说| 91久久综合男人天堂| 精品国产午夜视频一区二区| 中文字幕在线一区精品| 性感美女高潮视频久久久| 亚洲精品麻豆免费在线观看| 日本成人一区二区不卡免费在线| 欧美怡红院视频在线观看| 亚洲国际青青操综合网站| 99热这里只有精品中文| 特一级特级黄色网片| 大屁股熟女一区二区三区| 婷婷午夜国产精品久久久| 综合激情网激情五月天| 亚洲少妇人妻无码精品| 日辽宁老肥女在线观看视频| 亚洲综合另类欧美久久| 无码中文字幕波多野不卡 | 在线免费观看欧美小视频| 日本韩国亚洲综合日韩欧美国产 | 91免费福利网91麻豆国产精品| aⅴ五十路av熟女中出| 久草视频福利在线首页| av天堂中文免费在线| 国产福利小视频二区| 香蕉片在线观看av| 国产美女午夜福利久久| 欧美亚洲国产成人免费在线| 欧美日韩一区二区电影在线观看| 成人av久久精品一区二区| 99精品国产aⅴ在线观看| 国产亚洲欧美另类在线观看| 亚洲1卡2卡三卡4卡在线观看 | 亚洲成人av一区久久| 亚洲激情偷拍一区二区| 久久亚洲天堂中文对白| 亚洲精品国产久久久久久| 午夜在线一区二区免费| 插小穴高清无码中文字幕| 阴茎插到阴道里面的视频| 日韩激情文学在线视频| 插逼视频双插洞国产操逼插洞| 春色激情网欧美成人| 黄色无码鸡吧操逼视频| 国产精品污污污久久| 老熟妇凹凸淫老妇女av在线观看| 日本女大学生的黄色小视频| 免费一级黄色av网站| 性生活第二下硬不起来| 人妻久久无码中文成人| 521精品视频在线观看| 午夜激情久久不卡一区二区| 国产高清在线观看1区2区| 亚洲人妻av毛片在线| 亚洲av色图18p| 99精品免费观看视频 | 黄色的网站在线免费看| 看一级特黄a大片日本片黑人| 干逼又爽又黄又免费的视频| 18禁网站一区二区三区四区| asmr福利视频在线观看| 婷婷久久久久深爱网| 97超碰免费在线视频| 午夜在线观看岛国av,com| 欧美成人黄片一区二区三区| 久久久久久九九99精品| 成人资源在线观看免费官网| sspd152中文字幕在线| 国产又色又刺激在线视频| 国产第一美女一区二区三区四区 | 日本高清成人一区二区三区| 女同互舔一区二区三区| 免费在线看的黄网站| 91九色国产porny蝌蚪| 欧美美女人体视频一区| 国产麻豆剧果冻传媒app| 好吊操视频这里只有精品| 国产在线观看免费人成短视频| 亚洲va欧美va人人爽3p| 在线观看操大逼视频| 欧美成人精品欧美一级黄色| 日韩一区二区电国产精品| 99精品国产aⅴ在线观看 | 91精品国产91青青碰| 中文字幕亚洲久久久| 免费一级特黄特色大片在线观看| 欧美香蕉人妻精品一区二区| 欧美美女人体视频一区| 久草极品美女视频在线观看| 蜜桃视频入口久久久| 国产免费av一区二区凹凸四季| 91色秘乱一区二区三区| 99久久99久国产黄毛片| 97年大学生大白天操逼| 国产janese在线播放| 亚洲精品国产在线电影| 欧美亚洲国产成人免费在线| 精品亚洲国产中文自在线| mm131美女午夜爽爽爽| 美洲精品一二三产区区别| 丝袜肉丝一区二区三区四区在线| 日韩激情文学在线视频| 久久精品视频一区二区三区四区| av一本二本在线观看| 欧美成人精品在线观看| 精产国品久久一二三产区区别| 亚洲成人国产综合一区| 亚洲蜜臀av一区二区三区九色| 欧美日本在线观看一区二区| 亚洲人妻30pwc| 亚洲男人在线天堂网| 色偷偷伊人大杳蕉综合网| 大胸性感美女羞爽操逼毛片| 夏目彩春在线中文字幕| 国产熟妇一区二区三区av| 成人性爱在线看四区| 国产一区二区欧美三区| 日日摸夜夜添夜夜添毛片性色av| 被大鸡吧操的好舒服视频免费| 亚洲成人av在线一区二区| 制丝袜业一区二区三区| 国产美女午夜福利久久| 国产性色生活片毛片春晓精品| 日韩av中文在线免费观看| 91av中文视频在线| 精品国产午夜视频一区二区| 深夜男人福利在线观看| 五月天色婷婷在线观看视频免费| 干逼又爽又黄又免费的视频| 偷拍3456eee| 中文字幕中文字幕 亚洲国产| 亚洲自拍偷拍综合色| 免费无码人妻日韩精品一区二区| 播放日本一区二区三区电影| 午夜在线一区二区免费| 不戴胸罩引我诱的隔壁的人妻| 久久久久久久一区二区三| 成年人的在线免费视频| 51精品视频免费在线观看| 久久久91蜜桃精品ad| 欧美第一页在线免费观看视频| 国产九色91在线观看精品| 绝顶痉挛大潮喷高潮无码| 中国黄片视频一区91| 亚洲最大黄了色网站| 亚洲成高清a人片在线观看| 东游记中文字幕版哪里可以看到| 久久热久久视频在线观看| 天天日夜夜操天天摸| 国产高清精品极品美女| av老司机亚洲一区二区| 欧美3p在线观看一区二区三区| 亚洲卡1卡2卡三卡四老狼| 香港三日本三韩国三欧美三级| 97成人免费在线观看网站| 可以免费看的www视频你懂的| 美女福利视频导航网站| 日本一二三区不卡无| asmr福利视频在线观看| 在线观看国产网站资源| 国产欧美精品一区二区高清| 欧美日韩高清午夜蜜桃大香蕉| 9色精品视频在线观看| 亚洲av无乱一区二区三区性色| 日本女人一级免费片| 精品国产亚洲av一淫| 亚洲欧美自拍另类图片| 男人操女人逼逼视频网站| 人妻熟女中文字幕aⅴ在线| 偷拍自拍 中文字幕| 久久久久只精品国产三级| 91传媒一区二区三区| 国产亚州色婷婷久久99精品| 国产一区成人在线观看视频| 色天天天天射天天舔| 97精品综合久久在线| 亚洲成人av一区在线| 五十路在线观看完整版| japanese日本熟妇另类| 天天日天天干天天爱| 天天干天天操天天插天天日| 一区二区三区久久中文字幕| 亚洲免费视频欧洲免费视频| 五十路人妻熟女av一区二区| 亚洲 国产 成人 在线| 人人超碰国字幕观看97| rct470中文字幕在线| 唐人色亚洲av嫩草| 日韩一区二区电国产精品| 人妻3p真实偷拍一二区| 亚洲偷自拍高清视频| 中文字幕高清在线免费播放| 黄片大全在线观看观看| 爆乳骚货内射骚货内射在线| 亚洲免费在线视频网站| 亚洲综合色在线免费观看| 91国内精品久久久久精品一| 日本韩国免费一区二区三区视频 | av完全免费在线观看av| 偷拍自拍福利视频在线观看| 亚洲在线免费h观看网站| 亚洲嫩模一区二区三区| 涩涩的视频在线观看视频| 91精品视频在线观看免费| 欧美特级特黄a大片免费| 成人精品在线观看视频| 91av中文视频在线| 人妻少妇av在线观看| 亚洲的电影一区二区三区| 中出中文字幕在线观看| 五十路人妻熟女av一区二区| 伊人成人在线综合网| 亚洲av日韩精品久久久久久hd| 日本美女性生活一级片| 在线免费观看黄页视频| 在线成人日韩av电影| 动漫美女的小穴视频| 在线观看视频 你懂的| 久久久久久性虐视频| 男生舔女生逼逼的视频| 2019av在线视频| 国产视频在线视频播放| 国产精品精品精品999| 国产在线观看黄色视频| 日韩成人综艺在线播放| 亚洲欧洲一区二区在线观看| 91精品高清一区二区三区| 成人av免费不卡在线观看| 男人和女人激情视频| 久久永久免费精品人妻专区| 自拍偷拍亚洲精品第2页| 在线观看的黄色免费网站| 国产又粗又猛又爽又黄的视频美国| 偷拍美女一区二区三区| 精品久久婷婷免费视频| 大香蕉伊人中文字幕| 黄色视频成年人免费观看| 蝴蝶伊人久久中文娱乐网| 色av色婷婷人妻久久久精品高清 | 国产又粗又黄又硬又爽| 婷婷激情四射在线观看视频| 狍和女人的王色毛片| 日韩av免费观看一区| 日本午夜福利免费视频| 日本人竟这样玩学生妹| 一二三中文乱码亚洲乱码one| 日韩一区二区三区三州| 亚洲欧美激情国产综合久久久| 丰满少妇人妻xxxxx| 男人的天堂在线黄色| 人妻丰满熟妇综合网| 国产又粗又硬又猛的毛片视频| 国产精品人妻熟女毛片av久| 香蕉av影视在线观看| 人妻少妇av在线观看| 巨乳人妻日下部加奈被邻居中出 | 在线不卡日韩视频播放| av大全在线播放免费| 亚洲自拍偷拍综合色| 国产黄色大片在线免费播放| 成人av在线资源网站| 不戴胸罩引我诱的隔壁的人妻| 偷偷玩弄新婚人妻h视频| 黑人大几巴狂插日本少妇| 老鸭窝在线观看一区| 久久尻中国美女视频| 亚洲熟女久久久36d| 非洲黑人一级特黄片| 午夜精品九一唐人麻豆嫩草成人| 成人免费公开视频无毒| 欧美男同性恋69视频| 六月婷婷激情一区二区三区| 色婷婷综合激情五月免费观看| a v欧美一区=区三区| 亚洲变态另类色图天堂网| 538精品在线观看视频| 中文字幕日韩精品就在这里| 天天干天天操天天爽天天摸| 亚洲一区二区人妻av| 国产黄色大片在线免费播放 | 国产高清在线在线视频| 老有所依在线观看完整版| 91中文字幕最新合集| 五十路老熟女码av| 啪啪啪啪啪啪啪啪av| 欧美乱妇无乱码一区二区| 日韩欧美亚洲熟女人妻| 亚洲国产精品久久久久久6| 福利视频网久久91| 99久久中文字幕一本人| 国产午夜无码福利在线看| 老师让我插进去69AV| 亚洲中文字幕人妻一区| 人妻素人精油按摩中出| 欧美一区二区三区激情啪啪啪| 欧美日韩高清午夜蜜桃大香蕉| 最近中文2019年在线看| 国产精品黄大片在线播放| 91免费黄片可看视频| 欧美视频一区免费在线| av老司机精品在线观看| 国产高清女主播在线| 亚洲免费国产在线日韩| 欧美熟妇一区二区三区仙踪林| 国产九色91在线视频| 美日韩在线视频免费看| 女同互舔一区二区三区| www天堂在线久久| 制服丝袜在线人妻中文字幕| 91极品大一女神正在播放| 欧美地区一二三专区| 黄色片黄色片wyaa| 亚洲嫩模一区二区三区| 亚洲国产香蕉视频在线播放| 欧洲精品第一页欧洲精品亚洲| 天堂av在线播放免费| 亚洲av日韩精品久久久| 含骚鸡巴玩逼逼视频| 一区二区视频在线观看免费观看| 天天干狠狠干天天操| 免费看美女脱光衣服的视频| 亚洲国产成人在线一区| 国产麻豆剧果冻传媒app| 最新中文字幕免费视频| 女同久久精品秋霞网| 麻豆精品成人免费视频| 激情小视频国产在线| 在线观看的a站 最新| 中文字幕一区二 区二三区四区 | 免费看国产又粗又猛又爽又黄视频| 日本少妇人妻xxxxxhd| 色呦呦视频在线观看视频| 欧美日韩不卡一区不区二区| 日韩av有码一区二区三区4| 在线免费91激情四射 | 九色视频在线观看免费| 色97视频在线播放| 中文字幕无码一区二区免费| 自拍 日韩 欧美激情| 粉嫩av蜜乳av蜜臀| 亚洲一级av大片免费观看| 国产高清精品一区二区三区| 无码国产精品一区二区高潮久久4| 日韩精品二区一区久久| 传媒在线播放国产精品一区| 天天日天天操天天摸天天舔| 中文字幕av熟女人妻| 又粗又硬又猛又黄免费30| 日本少妇的秘密免费视频| 天天插天天色天天日| 年轻的人妻被夫上司侵犯| 国产亚洲欧美视频网站| 黑人借宿ntr人妻的沦陷2| 3D动漫精品啪啪一区二区下载| 午夜精品久久久久久99热| 在线观看av观看av| 伊人成人在线综合网| 日日摸夜夜添夜夜添毛片性色av| 中文字幕国产专区欧美激情| 一区二区在线观看少妇| 五十路人妻熟女av一区二区| 51国产成人精品视频| 欧美老妇精品另类不卡片| 成人国产激情自拍三区| 在线观看的黄色免费网站| 一区二区三区的久久的蜜桃的视频| 91福利视频免费在线观看| 蜜臀成人av在线播放| 2020韩国午夜女主播在线| 色伦色伦777国产精品| 日本韩国在线观看一区二区| 青青青青青青青青青国产精品视频| 一区二区免费高清黄色视频| 婷婷色国产黑丝少妇勾搭AV| 日韩精品电影亚洲一区| 欧美视频一区免费在线| 亚洲激情唯美亚洲激情图片| 九九热99视频在线观看97| 97欧洲一区二区精品免费| 亚洲一区二区三区精品视频在线| 自拍偷拍日韩欧美亚洲| 日本免费午夜视频网站| 绝色少妇高潮3在线观看| 东游记中文字幕版哪里可以看到| 在线视频免费观看网| 韩国三级aaaaa高清视频| 少妇深喉口爆吞精韩国| 亚洲va天堂va国产va久| 国产不卡av在线免费| 国产精品亚洲а∨天堂免| 人妻少妇亚洲一区二区| 国产麻豆剧果冻传媒app| 国产白袜脚足J棉袜在线观看| 在线观看国产免费麻豆| 国产福利小视频免费观看| 91国偷自产一区二区三区精品| 免费观看丰满少妇做受| 欧美少妇性一区二区三区| 99久久99久国产黄毛片| 久久久超爽一二三av| 性色av一区二区三区久久久| 1024久久国产精品| 一区二区在线观看少妇| 青青草亚洲国产精品视频| 91久久人澡人人添人人爽乱| 免费无毒热热热热热热久| 天天干天天操天天摸天天射| 免费费一级特黄真人片| 一区二区三区美女毛片| 亚洲精品福利网站图片| 美女福利视频导航网站| 91久久国产成人免费网站| 中文字幕人妻熟女在线电影| 久久机热/这里只有| 国产老熟女伦老熟妇ⅹ| 国产精品人妻熟女毛片av久| 精品高潮呻吟久久av| 人人人妻人人澡人人| 国产真实灌醉下药美女av福利| 欧美亚洲少妇福利视频| 久久久精品欧洲亚洲av| 欧美一区二区中文字幕电影 | 亚洲成人三级在线播放| av中文字幕在线观看第三页| 国产白嫩美女一区二区| 日本一区二区三区免费小视频| 韩国爱爱视频中文字幕| 91麻豆精品91久久久久同性 | 国产实拍勾搭女技师av在线| 视频久久久久久久人妻| 免费男阳茎伸入女阳道视频 | 国产变态另类在线观看| 国产高清精品一区二区三区| 女警官打开双腿沦为性奴| 久久久久久97三级| 日本一二三中文字幕| 蜜桃精品久久久一区二区| 新婚人妻聚会被中出| 经典国语激情内射视频| 亚洲福利天堂久久久久久| yellow在线播放av啊啊啊 | 欧美日韩v中文在线| 亚洲最大免费在线观看| 高清成人av一区三区| 精品成人午夜免费看| 天天干天天日天天谢综合156| 午夜毛片不卡免费观看视频| 亚洲av一妻不如妾| 黄色中文字幕在线播放| 精品人妻伦一二三区久| 在线免费观看99视频| 黄色在线观看免费观看在线| 护士特殊服务久久久久久久| 免费十精品十国产网站| av森泽佳奈在线观看| 成人激情文学网人妻| 极品丝袜一区二区三区| 色哟哟国产精品入口| 一级黄色av在线观看| 欲满人妻中文字幕在线| 欧美日韩高清午夜蜜桃大香蕉| 一二三中文乱码亚洲乱码one| 免费岛国喷水视频在线观看| 只有精品亚洲视频在线观看| 桃色视频在线观看一区二区| 偷拍自拍亚洲美腿丝袜| 久久免看30视频口爆视频| 九九视频在线精品播放| 日本脱亚入欧是指什么| 亚洲va欧美va人人爽3p| 91麻豆精品久久久久| 北条麻妃高跟丝袜啪啪| 日本少妇人妻xxxxx18| 黄色三级网站免费下载| 午夜大尺度无码福利视频| 91九色国产熟女一区二区| 男女啪啪啪啪啪的网站| 北条麻妃av在线免费观看| 91国产在线视频免费观看| 青青擦在线视频国产在线| av在线免费中文字幕| 在线观看911精品国产| 丰满熟女午夜福利视频| 视频一区 二区 三区 综合| 亚洲一区久久免费视频| 美女福利视频网址导航| 日本www中文字幕| 国产成人精品久久二区91| 天天干天天日天天谢综合156| 青青青青草手机在线视频免费看| 青青操免费日综合视频观看| 日日操综合成人av| 特级无码毛片免费视频播放| 国产成人精品一区在线观看 | 亚洲av可乐操首页| av在线资源中文字幕| 人妻久久无码中文成人| 国产精品自拍在线视频| 欧美一级片免费在线成人观看| 成人亚洲国产综合精品| 不卡一区一区三区在线| 亚洲伊人av天堂有码在线| 精品国产成人亚洲午夜| 狍和女人的王色毛片| 天堂av狠狠操蜜桃| 亚洲成人激情视频免费观看了 | 激情伦理欧美日韩中文字幕| 黄页网视频在线免费观看| 亚洲一区久久免费视频| 久草极品美女视频在线观看| 老司机福利精品免费视频一区二区 | 人妻少妇中文有码精品| 91片黄在线观看喷潮| 国产丰满熟女成人视频| 激情国产小视频在线| 欧美爆乳肉感大码在线观看| 都市激情校园春色狠狠| 午夜精品福利一区二区三区p| aiss午夜免费视频| 一二三中文乱码亚洲乱码one| 五月天中文字幕内射| 欧洲黄页网免费观看| 91中文字幕最新合集| 亚洲精品三级av在线免费观看| 开心 色 六月 婷婷| 狠狠的往里顶撞h百合| 国产变态另类在线观看| 93人妻人人揉人人澡人人| 国产av国片精品一区二区| 大鸡巴操娇小玲珑的女孩逼| 日本人妻少妇18—xx| 免费69视频在线看| 日本a级视频老女人| 国产av一区2区3区| 日本女人一级免费片| 大陆精品一区二区三区久久| 欧美精品激情在线最新观看视频| 伊人开心婷婷国产av| 边摸边做超爽毛片18禁色戒| 国产janese在线播放| 精品久久久久久久久久中文蒉 | 国产精品一二三不卡带免费视频 | 国产午夜无码福利在线看| 欧美久久久久久三级网| 亚洲欧美色一区二区| 九色精品视频在线播放| 亚洲av天堂在线播放| 黄色片黄色片wyaa| 男人插女人视频网站| 绯色av蜜臀vs少妇| 日韩欧美制服诱惑一区在线| 天天日天天摸天天爱| 亚洲超碰97人人做人人爱| 视频一区二区三区高清在线| 黑人解禁人妻叶爱071| 午夜青青草原网在线观看| 五月激情婷婷久久综合网| 激情人妻校园春色亚洲欧美| 天天操天天干天天艹| 亚洲自拍偷拍综合色| 又粗又硬又猛又黄免费30| 亚洲欧美成人综合视频| 大鸡巴插入美女黑黑的阴毛| 成人影片高清在线观看| 欧美在线一二三视频| 日本少妇人妻xxxxx18| 亚洲激情偷拍一区二区| 日本乱人一区二区三区| 男女啪啪啪啪啪的网站| 人人妻人人爽人人澡人人精品| 欧美偷拍亚洲一区二区| 欧美韩国日本国产亚洲| 欧美亚洲偷拍自拍色图| 亚洲男人让女人爽的视频| 中文字幕在线永久免费播放| 日本午夜福利免费视频| 骚货自慰被发现爆操| wwwxxx一级黄色片| 99精品视频在线观看婷婷| 大香蕉日本伊人中文在线| 天堂av狠狠操蜜桃| 欧美亚洲少妇福利视频| 天天日天天鲁天天操| 成人国产小视频在线观看| 1000小视频在线| 亚洲欧美综合在线探花| 91精品激情五月婷婷在线| 青草青永久在线视频18| 青青青视频自偷自拍38碰| 性欧美日本大妈母与子| 非洲黑人一级特黄片| 国产无遮挡裸体免费直播视频| 66久久久久久久久久久| 中出中文字幕在线观看| 亚洲国产精品免费在线观看| 国产黄色a级三级三级三级| 欧美特级特黄a大片免费| 国产精品黄页网站视频| 亚洲少妇人妻无码精品| 国产内射中出在线观看| 亚洲一区二区久久久人妻| 一二三区在线观看视频| 久久尻中国美女视频| 中文字幕日韩精品日本| 久久丁香花五月天色婷婷| 亚洲码av无色中文| 中文字幕人妻三级在线观看| 最新激情中文字幕视频| 午夜在线一区二区免费| av乱码一区二区三区| 福利片区一区二体验区| 19一区二区三区在线播放| 91在线免费观看成人| 又色又爽又黄的美女裸体| 精品91高清在线观看| 男人天堂av天天操| 亚欧在线视频你懂的| 91麻豆精品传媒国产黄色片| chinese国产盗摄一区二区 | 日韩成人综艺在线播放| 宅男噜噜噜666免费观看| 亚洲av日韩高清hd| 91在线视频在线精品3| 亚洲欧美激情中文字幕| 国产不卡av在线免费| 久久热久久视频在线观看| 国产精品三级三级三级| 伊人综合免费在线视频| 久久香蕉国产免费天天| 硬鸡巴动态操女人逼视频| 免费人成黄页网站在线观看国产| 99久久99一区二区三区| 五十路息与子猛烈交尾视频| 在线免费观看99视频| 亚洲综合在线视频可播放| 天天操天天插天天色| 精品一区二区三区三区色爱| 天天干天天操天天摸天天射| 2019av在线视频| 亚洲av无码成人精品区辽| 久久h视频在线观看| 午夜美女少妇福利视频| 91成人在线观看免费视频| 中文字幕在线视频一区二区三区 | 午夜福利人人妻人人澡人人爽| 天天操天天干天天日狠狠插| 国产一级麻豆精品免费| 国产1区,2区,3区| 又色又爽又黄又刺激av网站| 一区二区三区的久久的蜜桃的视频| 91国内精品久久久久精品一| 青春草视频在线免费播放| 99人妻视频免费在线| 狠狠躁夜夜躁人人爽天天天天97| 91p0rny九色露脸熟女| 少妇一区二区三区久久久| 欧美中国日韩久久精品| 亚洲 欧美 自拍 偷拍 在线| 国产女人被做到高潮免费视频| 亚洲 中文 自拍 另类 欧美| 中文字幕人妻av在线观看| 最新的中文字幕 亚洲| gav成人免费播放| av乱码一区二区三区| 亚洲成人精品女人久久久| 91国产在线视频免费观看| 国产精品久久久久久久精品视频| 在线国产日韩欧美视频| 天堂av在线播放免费| 日本精品视频不卡一二三| 亚洲免费va在线播放| 亚洲国产香蕉视频在线播放| 国产亚洲欧美45p| 欧美亚洲偷拍自拍色图| 日本三极片中文字幕| 国产麻豆乱子伦午夜视频观看| 大学生A级毛片免费视频| 成人av免费不卡在线观看| 免费看美女脱光衣服的视频| 18禁免费av网站| 国产视频网站国产视频| 欧美另类z0z变态| 日本后入视频在线观看| 熟女妇女老妇一二三区| 偷拍自拍亚洲视频在线观看| 成人乱码一区二区三区av| 成人高潮aa毛片免费| 美女操逼免费短视频下载链接| 久草视频在线一区二区三区资源站| 黄色av网站免费在线| 性感美女高潮视频久久久| 亚洲欧美一区二区三区电影| 嫩草aⅴ一区二区三区| 啊啊好慢点插舔我逼啊啊啊视频| 天天日天天敢天天干| 大陆胖女人与丈夫操b国语高清| 2021久久免费视频| av中文字幕在线观看第三页| 97精品视频在线观看| 91片黄在线观看喷潮| 亚洲av在线观看尤物| 伊人开心婷婷国产av | 人妻激情图片视频小说| 女同互舔一区二区三区| 免费看国产av网站| 老司机免费福利视频网| 国产午夜亚洲精品麻豆| 91精品国产综合久久久蜜| 大陆胖女人与丈夫操b国语高清| 性色蜜臀av一区二区三区| 色哟哟国产精品入口| 性欧美激情久久久久久久| 婷婷久久一区二区字幕网址你懂得| 精品91高清在线观看| 青青青青青青青在线播放视频| 中文字幕人妻av在线观看| 都市激情校园春色狠狠| 日日爽天天干夜夜操| 97人妻无码AV碰碰视频| 香港一级特黄大片在线播放| 直接能看的国产av| 国产综合视频在线看片| 日本成人一区二区不卡免费在线| 久久久久只精品国产三级| 99婷婷在线观看视频| 3D动漫精品啪啪一区二区下载| 2022天天干天天操| 欧美一级视频一区二区| 9色精品视频在线观看| 93人妻人人揉人人澡人人| 人妻久久无码中文成人| 2018最新中文字幕在线观看| 免费啪啪啪在线观看视频| 欧美精品亚洲精品日韩在线| 1区2区3区4区视频在线观看| 超级福利视频在线观看| 韩国亚洲欧美超一级在线播放视频| 免费观看污视频网站| 国产欧美精品不卡在线| 欧美精产国品一二三区| 一区二区三区视频,福利一区二区| 久久久制服丝袜中文字幕| 一区二区三区麻豆福利视频| 国产97在线视频观看| 97少妇精品在线观看| 97国产福利小视频合集| 四虎永久在线精品免费区二区 | 不卡一不卡二不卡三| 黄色大片免费观看网站| 国产成人精品久久二区91| 久青青草视频手机在线免费观看| 青青青青青免费视频| 女同性ⅹxx女同h偷拍| 人妻凌辱欧美丰满熟妇| 日本美女成人在线视频| 亚洲国产在线精品国偷产拍| 精品久久久久久高潮| 2018在线福利视频| 黄色资源视频网站日韩| 日本韩国亚洲综合日韩欧美国产| 人妻少妇一区二区三区蜜桃| 亚洲成人激情视频免费观看了| 精产国品久久一二三产区区别| 在线视频免费观看网| 99精品国产自在现线观看| 东京热男人的av天堂| 超碰在线观看免费在线观看| 大鸡吧插逼逼视频免费看| 蜜桃视频在线欧美一区| 色偷偷伊人大杳蕉综合网| 69精品视频一区二区在线观看| 欧美交性又色又爽又黄麻豆| 97欧洲一区二区精品免费| 久久精品亚洲成在人线a| 黄色三级网站免费下载| 免费无毒热热热热热热久| 18禁美女羞羞免费网站| 久久久久久97三级| 一区二区在线观看少妇| 91国内精品久久久久精品一| 高清成人av一区三区| 天天插天天狠天天操| 在线观看的a站 最新| 亚洲少妇人妻无码精品| 日韩欧美一级aa大片| 亚洲福利午夜久久久精品电影网| 在线观看操大逼视频| 久久www免费人成一看片| 亚洲伊人av天堂有码在线| 成人动漫大肉棒插进去视频| 中文字幕一区二区三区人妻大片| 99精品国产免费久久| 亚洲伊人久久精品影院一美女洗澡 | 免费成人av中文字幕| 天天干天天日天天干天天操| 91九色porny国产在线| 中文字幕在线永久免费播放| 狍和女人的王色毛片| 99精品久久久久久久91蜜桃| 人妻丝袜精品中文字幕| 中文字幕在线观看国产片| 亚洲欧美清纯唯美另类 | 亚洲精品午夜久久久久| 日韩精品啪啪视频一道免费| av天堂资源最新版在线看| 1区2区3区4区视频在线观看| 热99re69精品8在线播放| 大胆亚洲av日韩av| 国产一区二区视频观看| av在线免费中文字幕| 少妇深喉口爆吞精韩国| 57pao国产一区二区| 亚洲欧美综合在线探花| 欧美成人黄片一区二区三区 | 无码中文字幕波多野不卡| 精品一区二区三区三区88| 中国熟女一区二区性xx| 99热色原网这里只有精品| 中文字幕 亚洲av| 清纯美女在线观看国产| 综合色区亚洲熟妇shxstz| 后入美女人妻高清在线| 一区二区三区另类在线 | 天天综合天天综合天天网| 国产大学生援交正在播放| 成人综合亚洲欧美一区| 性感美女诱惑福利视频| 日韩精品激情在线观看| 在线观看国产网站资源| av中文字幕国产在线观看| 视频啪啪啪免费观看| 偷拍3456eee| 视频在线免费观看你懂得| 国产91久久精品一区二区字幕| 人人爽亚洲av人人爽av| 青青草精品在线视频观看| 国产黄色大片在线免费播放| 综合激情网激情五月天| 91精品啪在线免费| 91精品一区二区三区站长推荐| 人妻在线精品录音叫床| 午夜精彩视频免费一区| 国产免费高清视频视频| 天干天天天色天天日天天射| 色综合久久久久久久久中文| 亚洲中文字幕综合小综合| 国产精品自拍在线视频| 91小伙伴中女熟女高潮| 亚洲一区二区久久久人妻| 中文字幕人妻三级在线观看| 丝袜肉丝一区二区三区四区在线看| 视频二区在线视频观看| 日韩精品中文字幕播放| 欧美精品中文字幕久久二区| 含骚鸡巴玩逼逼视频| 97人人模人人爽人人喊| 一区二区三区精品日本| 521精品视频在线观看| 绯色av蜜臀vs少妇| 日本人妻少妇18—xx| 青青草亚洲国产精品视频| 日韩欧美在线观看不卡一区二区| 亚洲av男人天堂久久| 一区二区在线视频中文字幕| 1769国产精品视频免费观看| 色狠狠av线不卡香蕉一区二区| 亚洲福利精品福利精品福利| 又大又湿又爽又紧A视频| 丰满少妇人妻xxxxx| 国产精品久久久久久久精品视频| 青娱乐最新视频在线| 国产又粗又黄又硬又爽| 日本女人一级免费片| 在线不卡日韩视频播放| 日本人妻精品久久久久久| 免费69视频在线看| 久久久久久久99精品| 久久热这里这里只有精品| 国产97在线视频观看| 91人妻精品一区二区在线看| 岛国免费大片在线观看| 狠狠操操操操操操操操操| 亚洲公开视频在线观看| 成人高清在线观看视频| 伊人日日日草夜夜草| 3337p日本欧洲大胆色噜噜| 在线观看日韩激情视频| 国产日韩精品免费在线| 大胆亚洲av日韩av| mm131美女午夜爽爽爽| 丝袜肉丝一区二区三区四区在线| 一区二区熟女人妻视频| 熟女少妇激情五十路| 久草视频在线免播放| 大鸡巴操娇小玲珑的女孩逼| 91国产在线免费播放| 亚洲美女美妇久久字幕组| 久久久久五月天丁香社区| 国产日韩精品一二三区久久久 | 91桃色成人网络在线观看| 国产亚洲精品视频合集| 青青青青爽手机在线| 1000部国产精品成人观看视频| 91片黄在线观看喷潮| 91九色porny国产蝌蚪视频| 国产亚洲精品视频合集| 国产福利小视频大全| 99re久久这里都是精品视频| 欧美日韩情色在线观看| 欧美交性又色又爽又黄麻豆| 美女av色播在线播放| 日韩成人免费电影二区| 亚洲 自拍 色综合图| 国产品国产三级国产普通话三级| 日韩激情文学在线视频| 91精品资源免费观看| 久久尻中国美女视频| 大陆胖女人与丈夫操b国语高清| 天天插天天色天天日| 93精品视频在线观看| 亚洲午夜高清在线观看| 国产大学生援交正在播放| 自拍偷拍亚洲另类色图| 亚洲视频在线观看高清| 日韩欧美国产一区不卡| 中文字幕+中文字幕| 又粗又硬又猛又黄免费30| 免费大片在线观看视频网站| 中文字幕免费福利视频6| 亚洲欧美综合在线探花| 亚洲另类综合一区小说| 韩国一级特黄大片做受| 日韩人妻xxxxx| 88成人免费av网站| 欧美韩国日本国产亚洲| 九色精品视频在线播放| 动漫黑丝美女的鸡巴| 香蕉91一区二区三区| 97超碰免费在线视频| 久久综合老鸭窝色综合久久| 四川乱子伦视频国产vip| 黑人性生活视频免费看| 很黄很污很色的午夜网站在线观看| 亚洲一级av大片免费观看| 日韩成人综艺在线播放| 蜜桃臀av蜜桃臀av| 五月精品丁香久久久久福利社| 78色精品一区二区三区| 亚洲天天干 夜夜操| 精品久久婷婷免费视频| 亚洲 中文字幕在线 日韩| 3D动漫精品啪啪一区二区下载| 天天操天天爽天天干| 性色蜜臀av一区二区三区| 在线视频国产欧美日韩| 欧美地区一二三专区| 亚洲精品中文字幕下载| 人人人妻人人澡人人| 2020中文字幕在线播放| xxx日本hd高清| 精品黑人巨大在线一区| 欧美一区二区三区四区性视频| 亚洲麻豆一区二区三区| 亚洲 清纯 国产com| 亚洲精品国产综合久久久久久久久| 懂色av蜜桃a v| 极品丝袜一区二区三区| 亚洲国产欧美国产综合在线 | 国产熟妇乱妇熟色T区| 插小穴高清无码中文字幕| 中文字幕在线永久免费播放| 欧美viboss性丰满| 国产janese在线播放| 熟女人妻三十路四十路人妻斩| 啊啊好大好爽啊啊操我啊啊视频| 又黄又刺激的午夜小视频| 日韩av有码中文字幕| 人妻自拍视频中国大陆| 亚洲天堂av最新网址| 日本乱人一区二区三区| 热久久只有这里有精品| 91色九色porny| 欧美精品久久久久久影院| 午夜毛片不卡免费观看视频| 18禁美女羞羞免费网站| 中文字幕一区的人妻欧美日韩| 爆乳骚货内射骚货内射在线| 大鸡巴后入爆操大屁股美女| 欧美男人大鸡吧插女人视频| 国产极品美女久久久久久| 中文字幕人妻av在线观看| 人妻少妇性色欲欧美日韩| 久久这里只有精彩视频免费| 不卡日韩av在线观看| 天天插天天色天天日| 中文人妻AV久久人妻水| 精品视频中文字幕在线播放 | 中文字幕日韩91人妻在线| 国产在线观看黄色视频| 888欧美视频在线| 91综合久久亚洲综合| 中文字幕免费在线免费| 午夜精品福利91av| 日本www中文字幕| 视频二区在线视频观看| 欧美黑人性猛交xxxxⅹooo| 激情五月婷婷免费视频| 99国内精品永久免费视频| 日本黄色三级高清视频| 天天干天天操天天玩天天射| 日韩av免费观看一区| av在线资源中文字幕| 美女操逼免费短视频下载链接| 人妻在线精品录音叫床| 操操网操操伊剧情片中文字幕网| 伊拉克及约旦宣布关闭领空| 黄色视频成年人免费观看| brazzers欧熟精品系列| 唐人色亚洲av嫩草| 日本一区精品视频在线观看| 亚洲欧美国产麻豆综合| 日韩av有码中文字幕| 蜜桃视频入口久久久| 欧美在线精品一区二区三区视频| 青娱乐蜜桃臀av色| 亚洲av极品精品在线观看| 日本少妇的秘密免费视频| 中文字幕人妻熟女在线电影| 91国内精品自线在拍白富美| 欧美视频中文一区二区三区| 九色porny九色9l自拍视频| 国产精品熟女久久久久浪潮| 可以免费看的www视频你懂的| 天天干天天操天天摸天天射| 天堂av在线播放免费| 亚洲最大黄了色网站| 一本久久精品一区二区| 久久人人做人人妻人人玩精品vr| 大陆胖女人与丈夫操b国语高清| 亚洲精品成人网久久久久久小说| 久久三久久三久久三久久| 日韩激情文学在线视频| 日韩精品啪啪视频一道免费| 亚洲熟女久久久36d| av在线资源中文字幕| 首之国产AV医生和护士小芳| 亚洲成人国产综合一区| 中文字幕一区二区人妻电影冢本 | 国产综合高清在线观看| 国产精品久久综合久久| 亚洲av午夜免费观看| 扒开让我视频在线观看| 成人av在线资源网站| 天天干天天操天天爽天天摸| 51国产成人精品视频 | 国产视频精品资源网站| 337p日本大胆欧美人| 78色精品一区二区三区| 欧美日本在线视频一区| 在线免费观看日本伦理| 深夜男人福利在线观看| xxx日本hd高清| 曰本无码人妻丰满熟妇啪啪| 日本美女成人在线视频| caoporn蜜桃视频| 99国产精品窥熟女精品| 亚洲精品国产在线电影| 中文字幕综合一区二区| 93精品视频在线观看| 青青草成人福利电影| av完全免费在线观看av| 快点插进来操我逼啊视频| 国产一区二区欧美三区| 91免费观看国产免费| 91久久精品色伊人6882| 国产精品sm调教视频| 成人区人妻精品一区二视频| 天天做天天干天天舔| 精品国产在线手机在线| 国产自拍在线观看成人| 亚洲一区二区三区偷拍女厕91 | 性感美女福利视频网站| 成人免费做爰高潮视频| 清纯美女在线观看国产| 亚洲精品麻豆免费在线观看| 亚洲精品福利网站图片| 男女啪啪啪啪啪的网站| 亚洲激情,偷拍视频| 天天干天天爱天天色| 日日操综合成人av| 国产精品熟女久久久久浪潮| 综合激情网激情五月五月婷婷| 久久免费看少妇高潮完整版| 都市激情校园春色狠狠| 中英文字幕av一区| 亚洲欧美另类手机在线| 国产麻豆精品人妻av| 日本人妻欲求不满中文字幕| 777奇米久久精品一区| 亚洲高清国产拍青青草原| 岛国青草视频在线观看| 国产第一美女一区二区三区四区| 亚洲va国产va欧美va在线| 日本少妇人妻xxxxxhd| 男人操女人逼逼视频网站| 超碰97免费人妻麻豆| 欧美偷拍亚洲一区二区| 少妇人妻100系列| 97精品视频在线观看| 欧美精产国品一二三区| av日韩在线观看大全| 日本av在线一区二区三区| 中文字幕人妻熟女在线电影| 好太好爽好想要免费| 视频 一区二区在线观看| 超黄超污网站在线观看| 亚洲无码一区在线影院| 91麻豆精品91久久久久同性| 中字幕人妻熟女人妻a62v网| 制丝袜业一区二区三区| 9色在线视频免费观看| 成年人黄视频在线观看| 3337p日本欧洲大胆色噜噜| 欧美精产国品一二三产品价格| 亚洲粉嫩av一区二区三区| 久草电影免费在线观看| 日视频免费在线观看| 亚洲综合一区二区精品久久| 中文字幕—97超碰网| 国产大学生援交正在播放| 老熟妇xxxhd老熟女| 九色porny九色9l自拍视频| 久草视频福利在线首页| 午夜大尺度无码福利视频| 91中文字幕最新合集| 国产精品国色综合久久| 999热精品视频在线| av高潮迭起在线观看| avjpm亚洲伊人久久| 一区二区视频在线观看免费观看| 亚洲国产中文字幕啊啊啊不行了| 丁香花免费在线观看中文字幕| 国产精品一区二区三区蜜臀av| 亚洲成人线上免费视频观看| 丝袜肉丝一区二区三区四区在线看| 在线视频精品你懂的| 青青色国产视频在线| 精品国产污污免费网站入口自 | 狠狠操狠狠操免费视频| 熟女人妻一区二区精品视频| 激情人妻校园春色亚洲欧美| 伊人情人综合成人久久网小说| www,久久久,com| 521精品视频在线观看| 天天日夜夜操天天摸| 日韩欧美高清免费在线| 亚洲另类综合一区小说| 99热久久这里只有精品8| 成年女人免费播放视频| 国产不卡av在线免费| 成人性黑人一级av| 亚洲国产美女一区二区三区软件 | 国产乱子伦一二三区| 亚洲成人熟妇一区二区三区 | 久久久久五月天丁香社区| 粗大的内捧猛烈进出爽大牛汉子| 3D动漫精品啪啪一区二区下载| 日韩美av高清在线| 成年人啪啪视频在线观看| 日韩国产乱码中文字幕| 日本特级片中文字幕| 精品首页在线观看视频| 福利午夜视频在线观看| 日韩美av高清在线| 国产精品久久久久网| 亚洲无线观看国产高清在线| 91色秘乱一区二区三区| 秋霞午夜av福利经典影视| 又大又湿又爽又紧A视频| 国产一区自拍黄视频免费观看| 亚洲人人妻一区二区三区| 亚洲 自拍 色综合图| 亚洲男人在线天堂网| 噜噜色噜噜噜久色超碰| 日韩精品一区二区三区在线播放| 在线免费91激情四射| 97人人妻人人澡人人爽人人精品| 动色av一区二区三区| 3344免费偷拍视频| 青青青青青手机视频| 黄色录像鸡巴插进去| 99久久99久国产黄毛片| 男人天堂av天天操| 国产内射中出在线观看| 阿v天堂2014 一区亚洲| 国产精彩福利精品视频| 日本熟女50视频免费| 亚洲免费成人a v| 久草电影免费在线观看| 国产精品久久久黄网站| 五十路丰满人妻熟妇| 天天日天天透天天操| 青青擦在线视频国产在线| 2o22av在线视频| 在线国产精品一区二区三区| 99精品免费久久久久久久久a| 亚洲久久午夜av一区二区| 一区二区免费高清黄色视频| 秋霞午夜av福利经典影视| 东京热男人的av天堂| 美味人妻2在线播放| 色哟哟在线网站入口| 在线成人日韩av电影| 91社福利《在线观看| 五月天久久激情视频| 国产精彩福利精品视频| 高清成人av一区三区| 精品一区二区三区三区色爱| 麻豆性色视频在线观看| 久久久极品久久蜜桃| 色综合久久久久久久久中文| 日韩不卡中文在线视频网站| 中文字日产幕乱六区蜜桃| av手机免费在线观看高潮| 老熟妇xxxhd老熟女| 欧美老妇精品另类不卡片| 国产实拍勾搭女技师av在线| 晚上一个人看操B片| 国产高清97在线观看视频| 亚洲精品久久综合久| 久久香蕉国产免费天天| 亚洲欧美清纯唯美另类| 1024久久国产精品| 在线免费91激情四射 | 免费黄页网站4188| 天天操天天爽天天干| 沈阳熟妇28厘米大战黑人| 亚洲一区二区三区久久受| 国内自拍第一页在线观看| eeuss鲁片一区二区三区| 亚洲一区自拍高清免费视频| 老鸭窝日韩精品视频观看| 999热精品视频在线| 天堂av中文在线最新版| 初美沙希中文字幕在线| av线天堂在线观看| 91免费观看在线网站 | 激情小视频国产在线| 日韩成人免费电影二区| jul—619中文字幕在线| 搡老熟女一区二区在线观看| 伊人成人综合开心网| 高潮喷水在线视频观看| 新婚人妻聚会被中出| 啊啊啊想要被插进去视频| 国产片免费观看在线观看| 国产一区二区火爆视频| 超碰在线观看免费在线观看| 香蕉91一区二区三区| 岳太深了紧紧的中文字幕| 国产精品成久久久久三级蜜臀av| 55夜色66夜色国产精品站| 2021天天色天天干| 日本裸体熟妇区二区欧美| 亚洲av成人网在线观看| 91精品资源免费观看| 久久精品国产999| 一区二区三区国产精选在线播放| 精品一线二线三线日本| 欧美一区二区三区高清不卡tv| 一区二区三区四区视频在线播放| 国产之丝袜脚在线一区二区三区| 又大又湿又爽又紧A视频| 亚洲av日韩av第一区二区三区| 亚洲码av无色中文| 日本熟妇一区二区x x| 欧美日韩人妻久久精品高清国产| 国产精彩对白一区二区三区| 亚洲成人激情av在线| 中文字幕,亚洲人妻| 91色网站免费在线观看 | 久草免费人妻视频在线| 少妇人妻真实精品视频| 中国熟女一区二区性xx| 乱亲女秽乱长久久久| 中文字幕综合一区二区| 欧美xxx成人在线| 久久热这里这里只有精品| 国产精品视频欧美一区二区| 欧洲黄页网免费观看| 亚洲专区激情在线观看视频| 国产又粗又硬又大视频| 天天躁夜夜躁日日躁a麻豆| 在线观看的黄色免费网站| 18禁美女无遮挡免费| 九色porny九色9l自拍视频| 在线国产日韩欧美视频| 夜色17s精品人妻熟女| 亚洲av男人天堂久久| 在线国产日韩欧美视频| 2018最新中文字幕在线观看| 亚洲老熟妇日本老妇| 任你操视频免费在线观看| 亚洲一区二区三区精品视频在线| 在线亚洲天堂色播av电影| 国产精品黄片免费在线观看| 2o22av在线视频| 一个人免费在线观看ww视频| 可以在线观看的av中文字幕| 欧美成人黄片一区二区三区| 国产在线观看黄色视频| 91p0rny九色露脸熟女| 午夜免费观看精品视频| 天天日天天敢天天干| 午夜久久香蕉电影网| 久久久91蜜桃精品ad| 亚洲美女美妇久久字幕组| 久久麻豆亚洲精品av| 人妻少妇性色欲欧美日韩| 色狠狠av线不卡香蕉一区二区| 欲乱人妻少妇在线视频裸| 日本真人性生活视频免费看| 欧美熟妇一区二区三区仙踪林| 亚洲av男人天堂久久| 在线免费观看国产精品黄色| 欧美国产亚洲中英文字幕| 日韩美女精品视频在线观看网站| 欧美日本国产自视大全| 大胸性感美女羞爽操逼毛片| 东京热男人的av天堂| 精品suv一区二区69| 少妇高潮无套内谢麻豆| 天堂va蜜桃一区入口| 亚洲人妻av毛片在线| 插小穴高清无码中文字幕| 白白操白白色在线免费视频| 亚洲男人在线天堂网| 日本av高清免费网站| 中文字幕免费在线免费| 丰满的子国产在线观看| 亚洲激情,偷拍视频| 国产亚洲四十路五十路| 人妻久久久精品69系列| 高清成人av一区三区| nagger可以指黑人吗| 操人妻嗷嗷叫视频一区二区| 亚洲一区二区三区五区 | 日本熟女精品一区二区三区| 日韩亚洲高清在线观看| 日本真人性生活视频免费看| 人妻无码中文字幕专区| 少妇ww搡性bbb91| 久草视频在线看免费| 国产三级影院在线观看| 成年人该看的视频黄免费| 欧美美女人体视频一区| 中文字幕综合一区二区| 777奇米久久精品一区| 亚洲视频在线视频看视频在线| 国内精品在线播放第一页| 专门看国产熟妇的网站| 超碰97人人澡人人| 亚洲av成人网在线观看| 噜噜色噜噜噜久色超碰| 丰满少妇翘臀后进式| 国产亚洲四十路五十路| 欧美偷拍亚洲一区二区| 亚洲的电影一区二区三区 | 福利视频广场一区二区| 亚洲国产免费av一区二区三区 | 麻豆精品成人免费视频| 国产亚洲国产av网站在线| 天天日天天爽天天干| 老司机你懂得福利视频| 黄色av网站免费在线| 欧美精品一区二区三区xxxx| 国产极品精品免费视频| 又黄又刺激的午夜小视频| 操日韩美女视频在线免费看| 欧美一区二区三区激情啪啪啪| 果冻传媒av一区二区三区| 在线观看欧美黄片一区二区三区| 最新中文字幕免费视频| 欧美一区二区三区乱码在线播放| 国产视频在线视频播放| 沈阳熟妇28厘米大战黑人| 午夜精品福利91av| 韩国女主播精品视频网站| 91破解版永久免费| 精品久久久久久久久久久久人妻 | 精品国产成人亚洲午夜| 久久h视频在线观看| 天天操天天爽天天干| 91小伙伴中女熟女高潮| 国产精品一二三不卡带免费视频| 久久精品国产999| 亚洲一区二区三区精品乱码| 国产美女精品福利在线| 少妇ww搡性bbb91| 宅男噜噜噜666国产| 亚洲国产美女一区二区三区软件| 一区二区视频视频视频| 亚洲成人情色电影在线观看| 啊用力插好舒服视频| 黄页网视频在线免费观看| 午夜极品美女福利视频| 69精品视频一区二区在线观看| 伊人成人在线综合网| 黄色大片免费观看网站| 精品黑人一区二区三区久久国产 | 福利午夜视频在线观看| 亚洲av男人的天堂你懂的| 天天干天天操天天扣| 一区二区久久成人网| 精品黑人巨大在线一区| 插小穴高清无码中文字幕| 91亚洲精品干熟女蜜桃频道| 国产精品国色综合久久| 青青青爽视频在线播放| 黄色av网站免费在线| 天天日天天爽天天爽| 亚洲成人精品女人久久久| 午夜久久香蕉电影网| 成年美女黄网站18禁久久| 肏插流水妹子在线乐播下载| 不卡一不卡二不卡三| 不卡日韩av在线观看| 天天操夜夜骑日日摸| 欧洲国产成人精品91铁牛tv| 亚洲护士一区二区三区| 免费在线观看污污视频网站| 99久久超碰人妻国产| 无码日韩人妻精品久久| 午夜蜜桃一区二区三区| 久久精品国产23696| 五月天色婷婷在线观看视频免费| 99国产精品窥熟女精品| 人妻丝袜诱惑我操她视频| 国产一级麻豆精品免费| 只有精品亚洲视频在线观看| 天天日天天干天天搡| 黄色无码鸡吧操逼视频| 大尺度激情四射网站| 国产中文精品在线观看| 日本阿v视频在线免费观看| 大鸡吧插逼逼视频免费看| 亚洲天堂有码中文字幕视频| 岛国av高清在线成人在线| 日本欧美视频在线观看三区| 天天摸天天亲天天舔天天操天天爽 | 最新日韩av传媒在线| 亚洲福利精品视频在线免费观看 | 欧美少妇性一区二区三区| 亚洲av一妻不如妾| 大白屁股精品视频国产| 日韩北条麻妃一区在线| 成人H精品动漫在线无码播放| 91国产在线视频免费观看| 中文字幕av熟女人妻| 不戴胸罩引我诱的隔壁的人妻| av天堂中文字幕最新| 天美传媒mv视频在线观看| 姐姐的朋友2在线观看中文字幕| 午夜精品一区二区三区城中村| 中国产一级黄片免费视频播放| 99一区二区在线观看| 天天摸天天日天天操| 99亚洲美女一区二区三区| 亚洲免费国产在线日韩| 亚洲中文字幕综合小综合| 欧美日韩v中文在线| 一区二区视频视频视频| 一级a看免费观看网站| 91精品国产高清自在线看香蕉网| 亚洲一区二区三区五区| av在线免费观看亚洲天堂| 国产精品久久久久久久久福交| 亚洲变态另类色图天堂网| 中文字幕 亚洲av| www日韩a级s片av| 久久人人做人人妻人人玩精品vr| 欧美特色aaa大片| 日韩欧美亚洲熟女人妻| 888欧美视频在线| 欧美一区二区三区久久久aaa| av破解版在线观看| 国产亚洲欧美45p| 视频 一区二区在线观看| 真实国模和老外性视频| 91国内精品久久久久精品一| 91啪国自产中文字幕在线| 日本午夜爽爽爽爽爽视频在线观看 | 日本熟妇色熟妇在线观看| 亚洲一区久久免费视频| 日韩欧美在线观看不卡一区二区 | 99精品视频之69精品视频 | 国产内射中出在线观看| 不卡一不卡二不卡三| 亚洲公开视频在线观看| 亚洲精品麻豆免费在线观看| 亚洲人成精品久久久久久久| 日本性感美女三级视频| 中文字幕日韩91人妻在线| 日本性感美女视频网站| 馒头大胆亚洲一区二区| 极品性荡少妇一区二区色欲| 国产在线观看黄色视频| 黄网十四区丁香社区激情五月天 | 免费成人va在线观看| 亚洲欧美一区二区三区电影| 国产av福利网址大全| 久久久久久九九99精品| 亚洲欧美综合在线探花| 边摸边做超爽毛片18禁色戒| 2022天天干天天操| 中文字幕在线乱码一区二区| 含骚鸡巴玩逼逼视频| 精品成人午夜免费看| 色综合久久五月色婷婷综合| 国产精品亚洲在线观看| 欧美va不卡视频在线观看| 视频啪啪啪免费观看| 亚洲av自拍偷拍综合| 日韩精品激情在线观看| 日本18禁久久久久久| 久久精品在线观看一区二区| 亚洲va国产va欧美精品88| 午夜精品一区二区三区4| 国产日本欧美亚洲精品视| 无码中文字幕波多野不卡| 中文字幕一区二区亚洲一区| 日视频免费在线观看| 色吉吉影音天天干天天操| 一区二区三区在线视频福利| 国产又粗又硬又猛的毛片视频| 任你操视频免费在线观看| 日本女大学生的黄色小视频| 高潮喷水在线视频观看| 桃色视频在线观看一区二区| 999热精品视频在线| 爆乳骚货内射骚货内射在线| 欧美亚洲牲夜夜综合久久| 国产成人精品av网站| 和邻居少妇愉情中文字幕| 欧美另类重口味极品在线观看| 性生活第二下硬不起来| 4个黑人操素人视频网站精品91| 成熟丰满熟妇高潮xx×xx| 日韩av熟妇在线观看| 最后99天全集在线观看| 99热久久极品热亚洲| 国产精品视频欧美一区二区| 亚洲自拍偷拍综合色| 和邻居少妇愉情中文字幕| sw137 中文字幕 在线| 免费国产性生活视频| 亚洲一区二区三区精品视频在线| 日本少妇的秘密免费视频| 日韩成人免费电影二区| 综合精品久久久久97| 18禁美女无遮挡免费| 性欧美日本大妈母与子| yy96视频在线观看| 97人妻无码AV碰碰视频| 国产精品人妻熟女毛片av久| gay gay男男瑟瑟在线网站| 国产av自拍偷拍盛宴| 精品一区二区三区午夜| 超碰公开大香蕉97| 国产成人精品午夜福利训2021| 国产成人精品福利短视频| av中文字幕福利网| 伊人情人综合成人久久网小说 | 人妻丝袜榨强中文字幕| 日日操综合成人av| 精品成人啪啪18免费蜜臀| 日本美女成人在线视频| 亚洲一级 片内射视正片| 黑人解禁人妻叶爱071| 爱有来生高清在线中文字幕| 国产精品黄色的av| 久草免费人妻视频在线| 蜜桃专区一区二区在线观看| 青青色国产视频在线| 日本性感美女视频网站| av中文字幕网址在线| 久久这里有免费精品| 蜜臀av久久久久蜜臀av麻豆| 人人妻人人人操人人人爽| 欧美地区一二三专区| 超碰在线观看免费在线观看| 日韩精品一区二区三区在线播放| 日本韩国在线观看一区二区| 色综合天天综合网国产成人| 亚洲欧美综合在线探花| 日本一二三中文字幕| 中文字幕av一区在线观看| 在线免费观看日本片| 91成人在线观看免费视频| 新97超碰在线观看| 五十路av熟女松本翔子| www天堂在线久久| av网址国产在线观看| 国产成人精品一区在线观看| 沈阳熟妇28厘米大战黑人| 黄片三级三级三级在线观看| 国产又粗又硬又猛的毛片视频 | 国产精品久久久久国产三级试频 | 亚洲成人av一区在线| 亚洲欧美福利在线观看| 国产欧美日韩在线观看不卡| 夜鲁夜鲁狠鲁天天在线| 亚洲一区二区三区偷拍女厕91| 免费岛国喷水视频在线观看| 国产福利小视频二区| 免费人成黄页网站在线观看国产| 麻豆精品成人免费视频| 热久久只有这里有精品| 女人精品内射国产99| 日韩美女搞黄视频免费| 91快播视频在线观看| 91九色国产porny蝌蚪| 中字幕人妻熟女人妻a62v网| 成人av中文字幕一区| 最后99天全集在线观看| 最新国产精品网址在线观看| 午夜精品九一唐人麻豆嫩草成人| 男人操女人的逼免费视频| 精品黑人一区二区三区久久国产| 日韩a级精品一区二区| 少妇与子乱在线观看| 九色精品视频在线播放| 夜夜嗨av蜜臀av| 国产妇女自拍区在线观看| 亚洲人妻国产精品综合| 亚洲成人熟妇一区二区三区| 521精品视频在线观看| 在线网站你懂得老司机| 黄片三级三级三级在线观看| 亚洲综合色在线免费观看| 绝顶痉挛大潮喷高潮无码 | 91快播视频在线观看| 色哟哟在线网站入口| 大尺度激情四射网站| 青青草精品在线视频观看| 美女张开腿让男生操在线看| av男人天堂狠狠干| 国产视频网站一区二区三区| 久久国产精品精品美女| 亚洲精品av在线观看| 1024久久国产精品| yellow在线播放av啊啊啊| 国产一区二区视频观看| 国产av自拍偷拍盛宴| 国内自拍第一页在线观看| 天天干天天插天天谢| 日本18禁久久久久久| 欧美一区二区三区高清不卡tv| 日韩欧美一级aa大片| 久碰精品少妇中文字幕av| 搡老熟女一区二区在线观看| av乱码一区二区三区| 在线免费观看欧美小视频| 免费费一级特黄真人片| 亚洲午夜高清在线观看| 中文字幕av男人天堂| 天天操天天弄天天射| 亚洲一区二区激情在线| 婷婷色国产黑丝少妇勾搭AV| 宅男噜噜噜666国产| 扒开腿挺进肉嫩小18禁视频| 欧美精产国品一二三产品价格| 亚洲熟女久久久36d| 18禁美女羞羞免费网站| 亚洲国产欧美一区二区三区久久| 成人福利视频免费在线| 中文字幕一区二 区二三区四区| 日本精品一区二区三区在线视频。| 自拍偷区二区三区麻豆| 91自产国产精品视频| 在线观看黄色成年人网站| 国产精品黄片免费在线观看| 超碰97人人澡人人| 亚洲成人激情视频免费观看了| 亚洲精品国产综合久久久久久久久 | 自拍偷拍一区二区三区图片| 快点插进来操我逼啊视频| 黄色无码鸡吧操逼视频| 天天插天天色天天日| 国产内射中出在线观看| 亚洲第17页国产精品| 日本一二三区不卡无| 国产精品国产三级国产精东| 日韩午夜福利精品试看| 国产性感美女福利视频| 在线观看一区二区三级| 国产精品久久久久国产三级试频| 最新国产亚洲精品中文在线| 视频一区 视频二区 视频| 亚洲激情偷拍一区二区| 欧美80老妇人性视频| 国产精品人妻一区二区三区网站| av天堂中文字幕最新| 2018在线福利视频| 亚洲蜜臀av一区二区三区九色| 91亚洲精品干熟女蜜桃频道| 97瑟瑟超碰在线香蕉| 韩国三级aaaaa高清视频| 国产丰满熟女成人视频| 一区二区久久成人网| 少妇人妻二三区视频 | 午夜蜜桃一区二区三区| 福利片区一区二体验区| 啊啊好慢点插舔我逼啊啊啊视频 | 国产三级片久久久久久久| 国产真实乱子伦a视频| 亚洲av香蕉一区区二区三区犇| 国产在线免费观看成人| 午夜在线观看一区视频| 九九热99视频在线观看97| 中文字幕奴隷色的舞台50| 欧美精品国产综合久久| 免费黄页网站4188| 中文字幕一区二 区二三区四区| 午夜精品福利一区二区三区p | 大胆亚洲av日韩av| 国产性生活中老年人视频网站| 人妻自拍视频中国大陆| 九色porny九色9l自拍视频| 99热99re在线播放| 视频二区在线视频观看 | av线天堂在线观看| av天堂中文免费在线| 啊啊啊想要被插进去视频| av视屏免费在线播放| 欧美在线精品一区二区三区视频 | 日本www中文字幕| 含骚鸡巴玩逼逼视频| 中文字母永久播放1区2区3区| 婷婷五月亚洲综合在线| 天天操天天弄天天射| 欧美国品一二三产区区别| 3337p日本欧洲大胆色噜噜| 在线观看的黄色免费网站| 国产黑丝高跟鞋视频在线播放 | 人人人妻人人澡人人| 国产精品视频资源在线播放| 社区自拍揄拍尻屁你懂的| 精品一区二区三区三区88| 91亚洲国产成人精品性色| 超碰97免费人妻麻豆| 75国产综合在线视频| 亚洲在线一区二区欧美| 天天躁日日躁狠狠躁av麻豆| 经典国语激情内射视频| 污污小视频91在线观看| 中文字幕最新久久久| 91破解版永久免费| 日本一区美女福利视频| 超级福利视频在线观看| 欧美视频综合第一页| 97瑟瑟超碰在线香蕉| 国产又粗又硬又猛的毛片视频 | 日韩伦理短片在线观看| 天天色天天舔天天射天天爽| 啊啊啊视频试看人妻| 中国熟女一区二区性xx| 熟女国产一区亚洲中文字幕| 一区二区三区综合视频| 一区二区三区毛片国产一区| 天天干天天操天天爽天天摸| 天天日天天舔天天射进去| 男人操女人逼逼视频网站| 五月婷婷在线观看视频免费| 玖玖一区二区在线观看| 天堂中文字幕翔田av | 888欧美视频在线| 人妻少妇一区二区三区蜜桃| 久久香蕉国产免费天天| 国产性色生活片毛片春晓精品 | 2012中文字幕在线高清| 91精品视频在线观看免费| 亚洲 自拍 色综合图| 在线免费观看黄页视频| 亚洲一区二区激情在线| 9国产精品久久久久老师| 一区二区三区四区中文| 午夜免费体验区在线观看| 婷婷六月天中文字幕| 国产中文精品在线观看| 18禁无翼鸟成人在线| 五月婷婷在线观看视频免费| 中文字幕人妻三级在线观看| 一二三中文乱码亚洲乱码one| 大陆胖女人与丈夫操b国语高清| 精品人妻一二三区久久| 大鸡吧插入女阴道黄色片| 亚洲2021av天堂| 天天干天天操天天插天天日| 99视频精品全部15| 天天干天天操天天插天天日| jiujiure精品视频在线| 搡老熟女一区二区在线观看| 熟女俱乐部一二三区| 国产成人精品一区在线观看 | 天天做天天爽夜夜做少妇| yy6080国产在线视频| 中文字幕一区二区亚洲一区| 亚洲av人人澡人人爽人人爱| 天天色天天操天天透| 亚洲av在线观看尤物| 青青青青视频在线播放| 亚洲最大免费在线观看| 色呦呦视频在线观看视频| 五月激情婷婷久久综合网| 久草视频中文字幕在线观看| 真实国模和老外性视频| 午夜国产免费福利av| 亚洲欧美成人综合在线观看| 农村胖女人操逼视频| 在线观看国产网站资源| 人妻在线精品录音叫床| 亚洲成人精品女人久久久| 日本后入视频在线观看| 日韩一个色综合导航| 日本18禁久久久久久| 一个人免费在线观看ww视频| 最新国产精品拍在线观看| 91国内精品自线在拍白富美| 久久久久久久亚洲午夜综合福利 | 精品久久久久久久久久久99| 福利视频广场一区二区| 偷青青国产精品青青在线观看| 国产性色生活片毛片春晓精品| yy96视频在线观看| 欧美一区二区三区久久久aaa| 99久久中文字幕一本人| 国产乱弄免费视频观看| 夜夜骑夜夜操夜夜奸| 亚洲精品午夜久久久久| 国产一线二线三线的区别在哪| 国产精品成人xxxx| 日韩欧美中文国产在线| 视频一区二区三区高清在线| 一级a看免费观看网站| 日韩特级黄片高清在线看| 国产又粗又黄又硬又爽| 亚洲欧美一区二区三区爱爱动图| 午夜美女少妇福利视频| 日曰摸日日碰夜夜爽歪歪| 亚洲 中文字幕在线 日韩| 天天日天天爽天天爽| 国产真实灌醉下药美女av福利| 精品一线二线三线日本| 视频在线免费观看你懂得| 日日夜夜精品一二三| 在线观看亚洲人成免费网址| 女同久久精品秋霞网| 五十路熟女人妻一区二| 国产精品女邻居小骚货| 国产超码片内射在线| av中文字幕电影在线看| 最新97国产在线视频| 免费费一级特黄真人片| 国产免费av一区二区凹凸四季| 亚洲图片欧美校园春色| 亚国产成人精品久久久| 久久h视频在线观看| 日本脱亚入欧是指什么| 精品久久婷婷免费视频| 黄页网视频在线免费观看| av天堂中文免费在线| 香蕉av影视在线观看| 538精品在线观看视频| av俺也去在线播放| 国产福利在线视频一区| 熟女91pooyn熟女| 在线不卡成人黄色精品| 福利一二三在线视频观看| 19一区二区三区在线播放| 18禁网站一区二区三区四区| 国产视频网站国产视频| 搡老熟女一区二区在线观看| 9国产精品久久久久老师| 天天日夜夜干天天操| 黄色视频在线观看高清无码 | 青青草精品在线视频观看| 在线网站你懂得老司机| 99视频精品全部15| 2017亚洲男人天堂| 国产日韩精品电影7777| 一区二区三区av高清免费| 黄色视频成年人免费观看| 亚洲av自拍偷拍综合| 1区2区3区不卡视频| 78色精品一区二区三区| 香港一级特黄大片在线播放| 护士小嫩嫩又紧又爽20p| 久久永久免费精品人妻专区| 五月婷婷在线观看视频免费| 日本欧美视频在线观看三区| 亚洲精品无码久久久久不卡| 午夜美女少妇福利视频| 亚洲黄色av网站免费播放| 黄色无码鸡吧操逼视频| 91亚洲国产成人精品性色| 国产又粗又硬又猛的毛片视频| 九九热99视频在线观看97| 红桃av成人在线观看| 福利视频一区二区三区筱慧| 美洲精品一二三产区区别| 亚洲国产在线精品国偷产拍| 国产精品系列在线观看一区二区| 亚洲国产精品免费在线观看| 岳太深了紧紧的中文字幕| 岛国一区二区三区视频在线| 无码国产精品一区二区高潮久久4| 亚洲精品三级av在线免费观看| 又色又爽又黄的美女裸体| 不戴胸罩引我诱的隔壁的人妻| 99精品视频在线观看婷婷| av中文字幕在线观看第三页| 色哟哟在线网站入口| 日本一区二区三区免费小视频| 欧美视频中文一区二区三区| 久久一区二区三区人妻欧美| 国产日韩av一区二区在线| xxx日本hd高清| 中文字幕在线欧美精品| 97精品人妻一区二区三区精品| 青青社区2国产视频| 欧美女同性恋免费a| 97人妻人人澡爽人人精品| 年轻的人妻被夫上司侵犯| 黄工厂精品视频在线观看| 91免费观看国产免费| 毛茸茸的大外阴中国视频| 国产欧美精品免费观看视频| 日本少妇高清视频xxxxx| 成人av免费不卡在线观看| 丝袜长腿第一页在线| 男女啪啪啪啪啪的网站| 99热久久这里只有精品| 国产日韩精品电影7777| 女同性ⅹxx女同hd| 开心 色 六月 婷婷| 亚洲一区av中文字幕在线观看| 午夜精品久久久久麻豆影视| 在线免费观看亚洲精品电影| 白白操白白色在线免费视频| 天天日天天干天天要| 97少妇精品在线观看| 欧美黄色录像免费看的| 中文字幕第三十八页久久| 欧美日韩v中文在线| 91精品高清一区二区三区| 又色又爽又黄又刺激av网站 | 97资源人妻免费在线视频| 宅男噜噜噜666国产| 欧美色婷婷综合在线| 看一级特黄a大片日本片黑人| 高清一区二区欧美系列| 亚洲粉嫩av一区二区三区| 久久久久久久精品成人热| 国产乱子伦精品视频潮优女| av新中文天堂在线网址| 黄工厂精品视频在线观看| 成人性黑人一级av| 大白屁股精品视频国产| 免费大片在线观看视频网站| 亚洲蜜臀av一区二区三区九色 | 精品人妻伦一二三区久| 999久久久久999| 精品人妻每日一部精品| 超碰97免费人妻麻豆| 成人午夜电影在线观看 久久| 日本黄在免费看视频| www,久久久,com| 特黄老太婆aa毛毛片| 国产丰满熟女成人视频| 深田咏美亚洲一区二区| 亚洲激情偷拍一区二区| 国产丰满熟女成人视频| 久久免看30视频口爆视频| 中文字幕日韩精品就在这里| 国产精品国色综合久久| 特黄老太婆aa毛毛片| huangse网站在线观看| 成人影片高清在线观看| 极品丝袜一区二区三区| 日韩美在线观看视频黄| 一区二区三区视频,福利一区二区 丰满的子国产在线观看 | 日韩精品电影亚洲一区| 97人妻无码AV碰碰视频| 欧美黑人性猛交xxxxⅹooo| 在线观看免费岛国av| 婷婷激情四射在线观看视频| 婷婷综合亚洲爱久久| 亚洲 清纯 国产com| 精品av久久久久久久| 亚洲人妻av毛片在线| 日本一道二三区视频久久 | 日韩熟女系列一区二区三区| 国产又色又刺激在线视频| 欧洲国产成人精品91铁牛tv| 日本熟女精品一区二区三区| 一区二区在线视频中文字幕| aaa久久久久久久久| 大屁股熟女一区二区三区| 鸡巴操逼一级黄色气| 国产久久久精品毛片| 3337p日本欧洲大胆色噜噜| 第一福利视频在线观看| 91 亚洲视频在线观看| 国产午夜亚洲精品麻豆| 日本美女成人在线视频| 日本精品美女在线观看| 成年人午夜黄片视频资源| 天天日天天做天天日天天做| 性感美女高潮视频久久久| 亚洲欧美综合另类13p| 姐姐的朋友2在线观看中文字幕| 骚逼被大屌狂草视频免费看| 中文字幕网站你懂的| 亚洲2021av天堂| 在线免费观看靠比视频的网站| 成年人免费看在线视频| 国产之丝袜脚在线一区二区三区| 91国内精品自线在拍白富美| 91片黄在线观看喷潮| av中文字幕福利网| 日本高清撒尿pissing| 91精品国产综合久久久蜜| 91快播视频在线观看| 91国产资源在线视频| 国产亚洲视频在线二区| 国产精品黄大片在线播放| 欧亚乱色一区二区三区| 亚洲国产免费av一区二区三区 | 开心 色 六月 婷婷| 熟女视频一区,二区,三区| 97少妇精品在线观看| 日韩a级黄色小视频| 93精品视频在线观看| 日韩av熟妇在线观看| 日本免费视频午夜福利视频| 天天操夜夜骑日日摸| 社区自拍揄拍尻屁你懂的| 国产黑丝高跟鞋视频在线播放 | 日韩欧美制服诱惑一区在线| 日韩欧美一级aa大片| aiss午夜免费视频| 超污视频在线观看污污污| 日本高清成人一区二区三区| 中文字幕高清资源站| 亚国产成人精品久久久| 青青草精品在线视频观看| 91 亚洲视频在线观看| 在线观看免费岛国av| 国产av一区2区3区| 亚洲精品麻豆免费在线观看| 久久农村老妇乱69系列| 亚洲一区二区三区uij| 国产卡一卡二卡三乱码手机| 快插进小逼里大鸡吧视频| 岛国毛片视频免费在线观看| 首之国产AV医生和护士小芳| 国产日韩精品一二三区久久久 | 亚洲午夜精品小视频| 91快播视频在线观看| 无码日韩人妻精品久久| av一区二区三区人妻| 精品老妇女久久9g国产| 狠狠鲁狠狠操天天晚上干干| 亚洲 欧美 自拍 偷拍 在线| 日视频免费在线观看| 久久热久久视频在线观看| 岛国av高清在线成人在线| 中文乱理伦片在线观看| 摧残蹂躏av一二三区| 91麻豆精品秘密入口在线观看| 中文字幕,亚洲人妻| 婷婷久久久综合中文字幕| 青青草精品在线视频观看| 免费人成黄页网站在线观看国产| 国产精品人妻66p| 1000部国产精品成人观看视频 | 中文字幕在线第一页成人| 婷婷久久久久深爱网| 快插进小逼里大鸡吧视频| 亚洲国产精品久久久久久6| 丰满少妇人妻xxxxx| 成人亚洲精品国产精品| 玩弄人妻熟妇性色av少妇| 亚洲成人国产综合一区| 大香蕉福利在线观看| 国产精品久久综合久久| 国产成人自拍视频在线免费观看| 精品国产亚洲av一淫| 亚洲 人妻 激情 中文| 成人精品在线观看视频| 亚洲av黄色在线网站| 国产综合精品久久久久蜜臀| 精品久久久久久久久久中文蒉 | 国产亚州色婷婷久久99精品| 80电影天堂网官网| 人妻无码色噜噜狠狠狠狠色| 久草视频 久草视频2| 日本韩国免费福利精品| 亚洲 中文 自拍 无码| 夜夜嗨av蜜臀av| 人妻少妇一区二区三区蜜桃| 国产精品一区二区av国| 欧美成一区二区三区四区| 亚洲最大黄 嗯色 操 啊| 欧美中国日韩久久精品| 成人亚洲精品国产精品| 99热碰碰热精品a中文| 人人在线视频一区二区| 亚洲一级 片内射视正片| 欧美偷拍亚洲一区二区| 中文字幕一区二区三区蜜月| 亚洲另类伦春色综合小| 天天做天天爽夜夜做少妇| 国产V亚洲V天堂无码欠欠| 久草福利电影在线观看| 国产无遮挡裸体免费直播视频| 男人的天堂一区二区在线观看| 亚洲av色图18p| 天天日天天日天天擦| av中文字幕在线导航| 黄色视频在线观看高清无码| 欧美怡红院视频在线观看| 久久美欧人妻少妇一区二区三区| 19一区二区三区在线播放| 经典亚洲伊人第一页| av天堂资源最新版在线看| 制服丝袜在线人妻中文字幕| 中文字幕日韩人妻在线三区| 中文字幕 亚洲av| 精品国产午夜视频一区二区| 一级a看免费观看网站| 97国产在线av精品| 蜜臀av久久久久蜜臀av麻豆| 色天天天天射天天舔| 五十路熟女人妻一区二| 日美女屁股黄邑视频| 一区二区三区毛片国产一区| 日韩国产乱码中文字幕| 又粗又长 明星操逼小视频| 一区二区三区精品日本| 日韩欧美一级aa大片| 极品性荡少妇一区二区色欲| aiss午夜免费视频| 老司机欧美视频在线看| 黄色成年网站午夜在线观看| 日比视频老公慢点好舒服啊| 九色porny九色9l自拍视频| 青青青艹视频在线观看| 大香蕉伊人中文字幕| 黑人3p华裔熟女普通话| 男人天堂av天天操| 国产成人自拍视频播放| 天天射夜夜操综合网| 日本少妇在线视频大香蕉在线观看| 性色蜜臀av一区二区三区| av亚洲中文天堂字幕网| 男生舔女生逼逼视频| 午夜精品福利一区二区三区p | 四川乱子伦视频国产vip| 国内自拍第一页在线观看| 中文字幕第1页av一天堂网| 久久久噜噜噜久久熟女av| 日本免费午夜视频网站| 国产视频一区二区午夜| 97超碰人人搞人人| 亚洲一级 片内射视正片| 五月婷婷在线观看视频免费| 色综合天天综合网国产成人 | 精品一线二线三线日本| 大鸡吧插逼逼视频免费看| 制丝袜业一区二区三区| 北条麻妃肉色丝袜视频| 日本高清在线不卡一区二区| 在线观看911精品国产| 久久久精品精品视频视频| 成人av亚洲一区二区| 美女张开两腿让男人桶av| 人人超碰国字幕观看97| 欧美男人大鸡吧插女人视频| 国产精品女邻居小骚货| 中文字幕奴隷色的舞台50| eeuss鲁片一区二区三区| 五月天中文字幕内射| 插小穴高清无码中文字幕| 亚洲成人线上免费视频观看| 亚洲av第国产精品| 黑人巨大精品欧美视频| 欧美视频不卡一区四区| 国产视频一区二区午夜| jiujiure精品视频在线| yy96视频在线观看| 国产在线观看黄色视频| 被大鸡吧操的好舒服视频免费| 久久久久久99国产精品| 免费黄高清无码国产| 久久久久久久久久久免费女人| 成人激情文学网人妻 | 熟女妇女老妇一二三区| 欧美精品久久久久久影院| 日本一道二三区视频久久| av黄色成人在线观看| 啪啪啪啪啪啪啪啪av| 中国无遮挡白丝袜二区精品 | 天天日天天爽天天爽| 中文字幕在线乱码一区二区| 欧美精产国品一二三区| 国产精品国色综合久久| 中文字幕一区二区三区人妻大片| 97小视频人妻一区二区| 欧美日韩一区二区电影在线观看| 成年人该看的视频黄免费| 亚洲成人精品女人久久久| 91极品新人『兔兔』精品新作| 色97视频在线播放| 中出中文字幕在线观看| 免费观看成年人视频在线观看| 91精品资源免费观看| 免费手机黄页网址大全| 亚洲自拍偷拍精品网| 99av国产精品欲麻豆| 国产女人叫床高潮大片视频| 在线可以看的视频你懂的| 综合激情网激情五月五月婷婷| 亚洲综合另类精品小说| 亚洲高清国产自产av| 大鸡巴插入美女黑黑的阴毛| 免费十精品十国产网站| 欧美日韩高清午夜蜜桃大香蕉| 又粗又长 明星操逼小视频 | 中文字幕 亚洲av| 中文字幕免费福利视频6| 在线观看911精品国产| 国产福利小视频免费观看| 国产一线二线三线的区别在哪| 看一级特黄a大片日本片黑人| 骚逼被大屌狂草视频免费看| 绯色av蜜臀vs少妇| 美女 午夜 在线视频| 狠狠的往里顶撞h百合| 四川五十路熟女av| 精产国品久久一二三产区区别| 2020韩国午夜女主播在线| 日韩一区二区三区三州| 九九视频在线精品播放| brazzers欧熟精品系列| 欧美精品伦理三区四区| 特级欧美插插插插插bbbbb| 国产日韩精品电影7777| 精品国产乱码一区二区三区乱| 传媒在线播放国产精品一区| 欧美视频不卡一区四区| 亚洲人妻30pwc| 天堂av在线播放免费| 在线免费观看亚洲精品电影| 福利视频一区二区三区筱慧| 成人福利视频免费在线| 天天操,天天干,天天射| 九色精品视频在线播放| 男人操女人逼逼视频网站| 国产+亚洲+欧美+另类| 天天操天天污天天射| 成人动漫大肉棒插进去视频| 日本a级视频老女人| 欧美一级片免费在线成人观看| 夫妻在线观看视频91| 黄色男人的天堂视频| 国产福利小视频二区| 午夜场射精嗯嗯啊啊视频| 成人亚洲国产综合精品| 黄色中文字幕在线播放| 大鸡巴操娇小玲珑的女孩逼| 人妻凌辱欧美丰满熟妇| 国产精品黄色的av| 欧美综合婷婷欧美综合| 2022中文字幕在线| 国产精品一二三不卡带免费视频| 欧美一级片免费在线成人观看| 91人妻精品一区二区在线看| 成人av免费不卡在线观看| 99亚洲美女一区二区三区| 91国产在线视频免费观看| 国产亚州色婷婷久久99精品| sejizz在线视频| 99re6热在线精品| 91免费观看国产免费| 中文字幕无码一区二区免费| 99av国产精品欲麻豆| 欧美交性又色又爽又黄麻豆| 美女骚逼日出水来了| 免费成人va在线观看| 韩国黄色一级二级三级| 天天做天天干天天操天天射| 天天做天天爽夜夜做少妇| 亚洲中文精品人人免费| 亚洲欧美国产麻豆综合| 色秀欧美视频第一页| 中英文字幕av一区| 97精品成人一区二区三区| 日本少妇的秘密免费视频| 熟女少妇激情五十路| mm131美女午夜爽爽爽| 蜜臀成人av在线播放| 日本一区精品视频在线观看| 1024久久国产精品| 最新国产精品拍在线观看| 国产精品黄片免费在线观看| 亚洲午夜高清在线观看| 在线成人日韩av电影| 搡老熟女一区二区在线观看| 亚洲人成精品久久久久久久| mm131美女午夜爽爽爽| 日韩加勒比东京热二区| 国产丰满熟女成人视频| 国产视频精品资源网站| 91www一区二区三区| 成人综合亚洲欧美一区| 大陆av手机在线观看| 久久久久久久99精品| 国产精品手机在线看片| 午夜dv内射一区区| 91在线免费观看成人| 999久久久久999| 午夜精品福利一区二区三区p| 国产av一区2区3区| 亚洲欧美激情人妻偷拍| 美女被肏内射视频网站| 亚洲av色香蕉一区二区三区| 大陆av手机在线观看| 18禁网站一区二区三区四区| 红桃av成人在线观看| 在线制服丝袜中文字幕| 国产av自拍偷拍盛宴| 男人的天堂在线黄色| 丰满的子国产在线观看| 91精品国产黑色丝袜| 老司机免费福利视频网| 久久久久久9999久久久久| 色伦色伦777国产精品| 亚洲福利精品福利精品福利| 99热这里只有国产精品6| 国产亚洲成人免费在线观看| 国产高清精品极品美女| 99国产精品窥熟女精品| 五十路人妻熟女av一区二区| 加勒比视频在线免费观看| 农村胖女人操逼视频| 日本最新一二三区不卡在线| 最后99天全集在线观看| 国产一区二区在线欧美| 国产福利小视频大全| 四川乱子伦视频国产vip| 免费手机黄页网址大全| 亚洲1069综合男同| 老司机深夜免费福利视频在线观看| 青娱乐在线免费视频盛宴| 色吉吉影音天天干天天操| 亚洲欧美一区二区三区电影| 97色视频在线观看| 天天操天天爽天天干| 青草青永久在线视频18| 欧美怡红院视频在线观看| 丝袜肉丝一区二区三区四区在线看| 少妇深喉口爆吞精韩国|