一区二区三区成人-一区二区三区www-一区二区三区 日韩-一区二区日韩欧美-一区二区日韩精品中文字幕-一区二区日韩

uthman
QQ:3749615
級別: 家園常客
精華主題: 1 篇
發帖數量: 460 個
工控威望: 821 點
下載積分: 2741 分
在線時間: 791(小時)
注冊時間: 2007-10-25
最后登錄: 2025-08-14
查看uthman的 主題 / 回貼
樓主  發表于: 2025-03-07 18:49
以下是三菱8bit*8bit乘法器實現代碼(教學用)
LD SM400
DMOV K0 K8B20
MOV K0 Z0
FOR K8
LD SM400
MOV K0 Z1
MOV Z0 Z2
DMOV K0 K8B40
LD B10Z0
CALL P1
LD SM400
CALL P2
LD SM400
DMOV K8B60 K8B20
LD SM400
INC Z0
NEXT
LD SM400
DMOV K8B20 D10
FEND
P1
FOR K8
LD B0Z1
OUT B40Z2
LD SM400
INC Z1
INC Z2
NEXT
RET
P2
LD SM400
MOV K0 Z5
DMOV K0 K8B60
ANI SM400
OUT M100
FOR K16
LDI B20Z5
AND B40Z5
LD B20Z5
ANI B40Z5
ORB
ANI M100
LDI B20Z5
ANI B40Z5
LD B20Z5
AND B40Z5
ORB
AND M100
ORB
OUT B60Z5
LD B20Z5
AND B40Z5
LDI B20Z5
AND B40Z5
LD B20Z5
ANI B40Z5
ORB
AND M100
ORB
OUT M100
LD SM400
INC Z5
NEXT
RET
END
解釋代碼,k8b0 代表8*4bit連續的32bit(b0-b0f,b10-b1f),其中軟元件編號是16進制的(b0-b0f),b0是一個bit.
以上是向大模型提問,結果如下
深度思考:
嗯,我現在得仔細看看這個三菱PLC的代碼,然后解釋它的功能。首先,用戶已經給出了一些代碼,并且提到k8b0代表的是8組4位連續的32位,比如B0到B0F,B10到B1F等等,其中軟元件編號是十六進制的,每個B0是一個單獨的位。我需要一步一步分析這段代碼的結構和執行流程,理解每個指令的作用,然后總結整個程序的功能。

首先,代碼的結構看起來分為主程序部分、子程序P1和P2,最后結束。主程序從LD SM400開始,SM400是常ON的特殊繼電器,所以接下來的指令會在每個掃描周期執行。

主程序部分:
1. DMOV K0 K8B20:這是雙字傳送指令,把K0(即0)傳送到K8B20。根據用戶的說明,K8B20代表8組4位,也就是32位,即B20到B2F這16個位,但每個是4位?可能這里的K8B20指的是從B20開始的8個4位組,也就是B20到B5F?或者可能K8B20表示連續32位,即B20開始的32個位,例如B20到B3F?這點可能需要更仔細確認。比如,如果是每個B后面是十六進制的編號,那么B20是單獨的位,接著是B21,B22...到B2F,然后B30到B3F,這樣K8B20可能代表從B20開始的8*4=32位?比如,每個K4是16位,所以K8就是32位?這里可能需要明確三菱的指令格式。通常,K8B20可能指的是從B20開始的8個字節(即B20到B27,每個字節4位的話可能不是,這可能需要更仔細理解用戶給出的定義。根據用戶的說明,k8b0代表8*4位連續的32位,也就是每個K8Bx代表32位,比如B0到B0F(16位)加上B10到B1F(另外16位)?或者可能用戶的意思是每個K8B是8個4位,即8*4=32位。例如,K8B0對應B0到B3F?可能這里每個K8B后面的數字是起始地址,例如K8B20就是從B20開始,連續的8個4位塊,即B20, B24, B28, B2C, B30, B34, B38, B3C,每個4位,共32位?或者可能這里的K8B20代表的是從B20開始的8個位,但用戶提到是連續的32位,所以可能需要每個K8B對應32位,即起始地址為B20的32個連續位,即B20到B3F(因為32位是4個字節,每個字節8位?這可能需要確認三菱的軟元件地址結構,但用戶特別說明是B0到B0F(16位)和B10到B1F(另一個16位),所以K8B0對應的是B0到B0F(16位)加上B10到B1F(另外16位),總共有32位。因此,K8B20可能指的是從B20到B2F(16位)加上B30到B3F(16位)共32位。這可能是正確的。不過,可能用戶在這里的表示方式可能不同,但按用戶說明,k8b0是8*4=32位連續的,比如每4位為一組,共8組,總32位。例如,可能每個4位對應一個十六進制的半字節,所以起始地址是B0,接下來的4位是B0到B3,然后下一組是B4到B7,直到第8組。但用戶給出的例子是k8b0對應B0-B0F(即B0到B15?這似乎有矛盾,因為B0F是B0到B15?如果是十六進制的話,B0到B0F是16個位,每個十六進制數字代表4位,比如B0代表第0位,B1是第1位,直到B0F是第15位?可能這里的B后面的數字是十六進制的,所以B0到B0F是16位,B10到B1F是另外16位,共32位。那么K8B0指的是從B0開始的8個4位塊,即每個塊是4位,所以每增加4位就是一個塊。例如,塊0是B0-B3,塊1是B4-B7,塊2是B8-BB,塊3是BC-BF,塊4是B10-B13,依此類推,直到第8塊。但可能用戶的意思更簡單,即K8B0代表從B0開始連續的32位,也就是B0到B1F(32位)。比如,K8表示8個字節(每個字節4位?這可能不太對),或者K8表示8組4位,共32位。這個時候,K8B20代表的是從B20開始的32位,即B20到B3F(假設每個地址是四位的話,可能需要再計算)。這個部分可能需要更仔細的分析。

不過,在代碼中,K8B20可能被用作一個32位的存儲區域,用來存儲數據。例如,DMOV K0 K8B20將0傳送到K8B20的32位中,即清零這個區域。

接下來是MOV K0 Z0,將0傳送到Z0寄存器。Z寄存器是變址寄存器,通常用于間接尋址。

然后進入一個FOR循環,循環次數是K8,也就是循環8次。循環體內,首先LD SM400,然后MOV K0 Z1,將0傳給Z1,接著MOV Z0 Z2,將Z0的值傳給Z2。然后DMOV K0 K8B40,同樣清零K8B40的32位。

接下來是LD B10Z0,這里可能是一個位狀態加載,B10是基地址,加上Z0的值作為偏移。例如,如果Z0是0,那么就是B10;如果Z0是1,就是B11,依此類推。然后調用子程序P1。

接下來,CALL P2,調用子程序P2。然后DMOV K8B60 K8B20,將K8B60的32位數據傳送到K8B20。然后INC Z0,Z0自增1。之后NEXT結束循環,總共循環8次。

循環結束后,DMOV K8B20 D10,將K8B20的32位數據傳送到數據寄存器D10(雙字)。然后FEND結束主程序。

接下來是子程序P1。在P1中,有一個FOR K8循環,即循環8次。循環體內,LD B0Z1,加載B0加上Z1偏移的位狀態。例如,Z1初始為0,所以第一次是B0,然后Z1自增,變為1,就是B1,依此類推。然后OUT B40Z2,將結果輸出到B40加上Z2的偏移地址。例如,如果Z2初始是Z0的值,假設Z0初始是0,那么第一次Z2是0,所以B40。之后,INC Z1和INC Z2,每次循環增加Z1和Z2的值。NEXT循環8次,最后RET返回。

子程序P2則比較復雜。首先MOV K0 Z5,將0傳給Z5。然后DMOV K0 K8B60,清零K8B60的32位。接著ANI SM400,SM400是常ON的,所以ANI SM400相當于取反,得到OFF,然后OUT M100,將M100置為OFF。接下來是FOR K16循環,循環16次。在循環體內:

LDI B20Z5:加載非B20+Z5的狀態。
AND B40Z5:與B40+Z5的狀態相與。
然后:
LD B20Z5:加載B20+Z5的狀態。
ANI B40Z5:與B40+Z5的非狀態相與。
ORB:將上述兩個結果進行或操作。
ANI M100:與M100的非狀態相與。
接著另一部分:
LDI B20Z5:加載非B20+Z5的狀態。
ANI B40Z5:與非B40+Z5的狀態相與。
LD B20Z5:加載B20+Z5的狀態。
AND B40Z5:與B40+Z5的狀態相與。
ORB:將這兩個結果或操作。
AND M100:與M100的狀態相與。
然后ORB:將上述兩個大塊的結果再進行或操作。
OUT B60Z5:輸出到B60+Z5的位。
接下來:
LD B20Z5 AND B40Z5:B20和B40對應位的與。
LDI B20Z5 AND B40Z5:非B20與B40的與?或者LDI B20Z5,然后AND B40Z5?可能需要更仔細看代碼。
代碼可能是:
LD B20Z5
AND B40Z5
LDI B20Z5
AND B40Z5
LD B20Z5
ANI B40Z5
ORB
AND M100
ORB
OUT M100
這部分可能是在計算某種邏輯,比如半加器或者全加器的進位?

然后INC Z5,循環16次,最后RET返回。

現在需要把這些邏輯綜合起來,理解整個程序的功能。

首先主程序循環8次,每次循環中,調用P1和P2,然后將K8B60的數據移動到K8B20,最后將最終結果存入D10。

子程序P1的功能可能是將B0開始的位,經過某種處理復制到B40開始的區域。因為P1中的循環次數是8次,每次將B0Z1的值輸出到B40Z2。因為Z1和Z2在每次循環中自增,所以可能是在將B0到B7的位復制到B40到B47的位置?或者如果Z0的值在變化的話,可能每次主循環中Z0遞增,從而處理不同的位?

主循環中的Z0初始為0,然后每次循環INC Z0,總共循環8次,所以Z0的值從0到7。

在調用P1時,B10Z0作為觸發條件,即當B10+Z0的位為ON時,調用P1。例如,當Z0=0時,檢查B10;Z0=1時檢查B11,依此類推。如果B10+Z0為ON,則執行P1。

P1的作用可能是在每個主循環中,根據Z0的值,將B0開始的8個位復制到B40的某個區域。例如,當主循環中的Z0為n,則Z2初始是Z0的值,所以P1中的Z2從n開始,每次循環增加,可能將B0到B7的位復制到B40+n的位置?或者具體要看Z0和循環次數。

可能主循環中的每個循環處理一個不同的部分,例如,處理不同的位組,每次調用P1可能將一組8位數據從B0區域移動到B40區域的一個偏移位置,然后P2處理這些數據進行某種邏輯運算,結果存入K8B60,之后移動到K8B20,最后保存到D10。

P2的循環次數是16次,每次處理不同的位,可能進行的是按位的邏輯運算,例如異或或者加法,并處理進位。例如,M100可能作為進位標志,用來處理加法過程中的進位。每次循環處理B20Z5和B40Z5的位,可能進行加法或者異或操作,結果存入B60Z5,并更新進位M100。

綜合起來,整個程序可能是在進行某種位操作或算術運算,例如將兩個32位數(來自K8B20和K8B40)進行按位的邏輯運算,并將結果存入K8B60,然后移動到K8B20,最終結果存入D10。而主循環的8次循環可能處理不同的數據塊,或者分步處理數據。

可能的流程如下:

1. 初始化K8B20和Z0為0。
2. 主循環8次,每次循環:
   a. 清零K8B40。
   b. 如果B10+Z0為ON,調用P1,將B0開始的位復制到B40區域。
   c. 調用P2,處理K8B20和K8B40的數據,結果存入K8B60,并更新進位。
   d. 將K8B60的數據移動到K8B20。
   e. Z0遞增。
3. 循環結束后,將K8B20的數據存入D10。

其中,P1可能用于加載數據到B40區域,而P2進行某種運算,如加法或邏輯運算,結合進位處理。例如,P2可能是一個16位的加法器,每次處理一位,并處理進位,但需要詳細分析P2的邏輯。

在P2中,Z5從0到15循環,每次處理B20Z5和B40Z5的位,可能進行加法運算:

每個位的和是(B20Z5 XOR B40Z5 XOR M100),而新的進位是(B20Z5 AND B40Z5) OR (B20Z5 AND M100) OR (B40Z5 AND M100)。但需要看代碼中的邏輯。

但根據代碼中的結構,可能P2中的邏輯比較復雜:

在P2的循環中,首先計算兩個部分:

第一部分:
- LDI B20Z5 AND B40Z5 → (NOT B20Z5) AND B40Z5
- ORB之后可能是((NOT B20Z5 AND B40Z5) OR (B20Z5 AND NOT B40Z5)) → 即B20Z5 XOR B40Z5
然后 ANI M100 → (B20 XOR B40) AND NOT M100

第二部分:
- (NOT B20Z5 AND NOT B40Z5) OR (B20Z5 AND B40Z5) → 即 (B20 AND B40) OR (NOT B20 AND NOT B40) → 即 XNOR
然后 AND M100 → XNOR結果與 M100(即進位)相與

然后將這兩個部分相或,輸出到B60Z5。這可能是在計算當前位的和,考慮進位的情況。

同時,另一部分計算新的進位:
可能計算(B20Z5 AND B40Z5) OR ((B20Z5 XOR B40Z5) AND M100),即全加器的進位輸出。

所以整體來說,P2可能是在執行兩個32位數的加法運算,其中每個循環處理一個位,并考慮進位。因此,整個程序可能是一個32位加法器,分8次循環處理,每次處理4位?或者可能主循環的8次循環處理不同的數據塊,而每個P2處理16位,總共處理32位?

不過可能主循環的8次循環用于某種移位或其他操作,而P2每次處理16位,但需要更詳細的分析。

總之,這段代碼可能的功能是:將兩個32位數(存儲在K8B20和K8B40)進行加法或其他邏輯運算,結果存儲在K8B60,然后移動到K8B20,最終結果存入D10。主循環可能用于處理進位或其他分步操作,而子程序P1用于加載數據到K8B40,P2執行實際的運算。

回答:


這段三菱PLC程序主要實現了一個32位數據的處理過程,涉及數據移動、邏輯運算及循環控制。以下是對代碼的詳細解釋:

---

### **主程序流程**
1. **初始化**
   - `DMOV K0 K8B20`:將32位區域K8B20(B20-B3F)清零。
   - `MOV K0 Z0`:變址寄存器Z0初始化為0,用于控制主循環的偏移。

2. **主循環(8次)**
   ```plaintext
   FOR K8 ... NEXT
   ```
   - **每次循環執行以下操作**:
     - `MOV K0 Z1` 和 `MOV Z0 Z2`:初始化Z1為0,Z2為Z0的值,用于子程序P1的尋址。
     - `DMOV K0 K8B40`:清零32位區域K8B40(B40-B5F)。
     - `LD B10Z0`:根據B10+Z0的值決定是否調用P1(條件加載)。
     - `CALL P1`:調用子程序P1,將B0-B7的位復制到B40區域。
     - `CALL P2`:調用子程序P2,進行邏輯運算(類似全加器)。
     - `DMOV K8B60 K8B20`:將運算結果(K8B60)移動到K8B20。
     - `INC Z0`:Z0遞增,控制下一輪循環的偏移。

3. **最終存儲**
   - `DMOV K8B20 D10`:將最終結果(K8B20的32位數據)存入雙字寄存器D10。

---

### **子程序P1:數據復制**
```plaintext
P1 ... RET
```
- **功能**:將B0開始的8個位復制到B40區域,偏移由Z2(即Z0)控制。
- **循環8次**:
  - `LD B0Z1`:加載B0+Z1的位狀態(如Z1=0時為B0)。
  - `OUT B40Z2`:輸出到B40+Z2的位(如Z2=0時為B40)。
  - 每次循環遞增Z1和Z2,實現連續復制。

---

### **子程序P2:邏輯運算(類似全加器)**
```plaintext
P2 ... RET
```
1. **初始化**
   - `MOV K0 Z5`:Z5初始化為0,用于位運算的循環控制。
   - `DMOV K0 K8B60`:清零結果區域K8B60(B60-B7F)。
   - `OUT M100`:復位進位標志M100。

2. **循環16次(處理16位)**
   ```plaintext
   FOR K16 ... NEXT
   ```
   - **計算當前位的和**:
     - 邏輯組合:`(B20Z5 XOR B40Z5) & ¬M100 | (B20Z5 XNOR B40Z5) & M100`
       等價于 `B20Z5 + B40Z5 + M100` 的當前位值,結果存入B60Z5。
   - **更新進位M100**:
     - 新進位:`(B20Z5 & B40Z5) | ((B20Z5 ^ B40Z5) & M100)`。
   - `INC Z5`:處理下一位。

---

### **關鍵軟元件說明**
- **K8Bxx**:表示32位連續區域,如K8B20對應B20-B3F的32個位。
- **Z0-Z5**:變址寄存器,用于動態尋址。
- **SM400**:常ON特殊繼電器,確保指令在每個掃描周期執行。
- **M100**:進位標志,用于多精度運算的進位傳遞。

---

### **程序功能總結**
- **主循環**:分8次處理32位數據,每次處理4位(由P2的16次循環推測為雙字運算)。
- **P1**:動態復制輸入數據到運算區域(B40)。
- **P2**:實現32位加法運算,支持進位傳遞,結果存入B60。
- **最終結果**:通過D10保存運算后的32位數據。

該程序可能用于高精度計算(如加密、校驗和等),通過循環和位操作實現復雜的邏輯處理。
uthman
QQ:3749615
級別: 家園常客
精華主題: 1 篇
發帖數量: 460 個
工控威望: 821 點
下載積分: 2741 分
在線時間: 791(小時)
注冊時間: 2007-10-25
最后登錄: 2025-08-14
查看uthman的 主題 / 回貼
1樓  發表于: 2025-03-07 18:57
解釋代碼,k8b0 代表8*4bit連續的32bit(b0-b0f,b10-b1f),其中軟元件編號是16進制的(b0-b0f),b0是一個bit.
修改提示詞:分析代碼作用,k8b0 代表8*4bit連續的32bit(b0-b0f,b10-b1f),其中軟元件編號是16進制的(b0-b0f),b0是一個bit.
好的,我現在需要分析用戶提供的這段PLC代碼的作用。首先,用戶已經給出了一些關鍵點,比如K8B20代表8組連續的4位,也就是32位,從B20開始,每個塊是B20-B2F這樣的結構。另外,軟元件編號是十六進制的,B0是一個單獨的位。

首先,我需要仔細閱讀代碼,理解每一部分的邏輯。可能涉及到循環、子程序調用以及位操作等。讓我先通讀一遍代碼,然后逐步拆解。

代碼的大致結構如下:

主程序部分:
- DMOV K0 K8B20:將0傳送到以K8B20開始的32位區域,即B20-B2F清零。
- MOV K0 Z0:將Z0寄存器置0。
- FOR K8:開始一個8次的循環。
- 在循環內部:
  - LD SM400(常閉觸點,一直導通)
  - MOV K0 Z1:Z1置0。
  - MOV Z0 Z2:Z2的值等于Z0。
  - DMOV K0 K8B40:B40-B4F清零。
  - LD B10Z0:加載B10加上Z0偏移的位。例如,Z0=0時是B10,Z0=1時是B11,以此類推。
  - CALL P1:調用子程序P1。
  - 接著調用P2。
  - DMOV K8B60 K8B20:將K8B60(B60-B6F)的內容傳送到K8B20(B20-B2F)。
  - INC Z0:Z0自增1。
- 循環結束后,DMOV K8B20 D10:將K8B20的內容傳送到D10。

子程序P1:
- FOR K8循環8次。
  - 每次循環中,LD B0Z1:加載B0加上Z1偏移的位。
  - OUT B40Z2:將結果輸出到B40加上Z2偏移的位置。
  - 然后Z1和Z2自增。
- 返回RET。

子程序P2:
- 初始化Z5為0,K8B60清零。
- 使用M100作為中間變量。
- FOR K16循環16次:
  - 處理B20Z5和B40Z5的位,進行邏輯運算,結果存到B60Z5和M100。
  - Z5自增。
- 返回RET。

現在需要理解每個子程序的作用,以及整個程序的功能。

首先,主程序中的FOR K8循環執行8次。每次循環開始時,Z0的值從0到7。然后調用P1和P2。之后將K8B60(處理后的結果)傳送到K8B20,覆蓋原來的值。最后將最終的K8B20傳送到D10。

子程序P1:看起來是將B0開始的位,根據Z1的偏移,傳送到B40開始的位。每次循環移動一個位,循環8次。由于主程序中Z0被用作偏移,Z2等于Z0,所以可能P1是在將B0開始的某部分數據復制到B40的某個區域,具體位置由Z0決定。

子程序P2:處理B20和B40的對應位,進行某種邏輯運算,結果存入B60和M100。可能是在進行按位的邏輯操作,比如異或、與、或等,但需要詳細分析。

接下來,具體分析每個子程序。

首先主程序部分:

初始時,B20-B2F被清零,Z0=0。進入循環,8次循環。

每次循環:
- Z1=0,Z2=Z0。例如,第一次循環Z0=0,所以Z2=0,第二次Z0=1,Z2=1,依此類推。
- B40-B4F被清零。
- 檢查B10+Z0的狀態,如果為ON,則調用P1。
- 調用P2。
- 將B60的內容復制到B20,覆蓋原值。
- Z0自增。

P1子程序:

循環8次,每次:
- 將B0+Z1的位狀態輸出到B40+Z2的位置。例如,當Z1=0,Z2=0時,B0的值傳到B40;當Z1=1,Z2=1時,B1傳到B41,以此類推。但主程序中每次調用P1時,Z2初始值是Z0的值,而循環中Z2會自增。例如,假設主循環中Z0=0,那么Z2從0開始,循環8次,每次Z2增加1,所以P1會將B0到B7的位復制到B40到B47的位置。如果主循環中Z0=1,那么Z2從1開始,B0到B7會被復制到B41到B48的位置?

不過這可能有問題,因為B40的塊是K8B40,即8組4位,共32位。所以B40到B4F。而Z2的可能取值范圍?主循環中Z0從0到7,每次調用P1時,Z2初始為Z0,然后在P1循環中Z2增加到Z0+7。例如,當Z0=0時,Z2從0到7,對應B40到B47。當Z0=1時,Z2從1到8,對應B41到B48,但B48可能超出了K8B40的范圍?或者這里的地址是十六進制,比如B40到B4F共16位,但用戶說明是每個K8B是8組4位,即32位,可能需要更仔細的理解。

可能這里的每個K8B代表8個4位的塊,比如K8B20表示從B20開始的8個4位塊,即B20-B23(第1塊),B24-B27(第2塊),直到B3C-B3F(第8塊),總共32位。但用戶說明中提到,軟元件編號是十六進制的,比如B0到B0F是連續的位地址,其中每個塊是4位。例如,B0到B03是第一個4位塊,B04到B07是第二個,依此類推。所以K8B20應該是從B20開始的8個4位塊,即B20-B23, B24-B27, ..., B3C-B3F,共32位。

但是子程序P1中的操作是每次處理一個位。例如,B0Z1中的Z1是位偏移,假設B0是起始地址,Z1從0到7,那么B0Z1依次是B0, B1, ..., B7。同樣,B40Z2是B40, B41, ..., B47(當Z2從0到7時)。這可能意味著每個4位塊中的每個位被單獨處理。例如,當將B0的位復制到B40的位置,這可能是在處理位級別的數據。

而主程序中調用P1的條件是當B10+Z0為ON時。例如,第一次循環中,如果B10(即B1 0,可能是指B10地址的位)為ON,則執行P1。但主程序中Z0在循環中從0到7,因此B10+Z0對應的位是B10到B17(如果Z0是0到7的話)。這可能是一個條件判斷,根據不同的循環次數,檢查不同的B10+Z0位是否為真,決定是否調用P1。

接下來,子程序P2的處理比較復雜。在P2中,首先清零K8B60,即B60-B6F。然后使用M100作為中間變量,進行16次循環。每次循環中,處理B20Z5和B40Z5的位:

邏輯運算部分:

第一部分:
LDI B20Z5       ; 取B20Z5的非
AND B40Z5       ; 和B40Z5相與
結果為 (NOT B20Z5) AND B40Z5

第二部分:
LD B20Z5        ; 取B20Z5
ANI B40Z5       ; 與B40Z5的非相與
結果為 B20Z5 AND (NOT B40Z5)

然后將這兩部分OR起來,得到 ((NOT B20Z5) AND B40Z5) OR (B20Z5 AND (NOT B40Z5)),這其實就是B20Z5 XOR B40Z5的結果。

接著,這部分的結果再與M100的非相與: ANI M100,所以如果M100為OFF,則保留結果;否則結果為0。

第三部分:
LDI B20Z5       ; NOT B20Z5
ANI B40Z5       ; 與B40Z5的非相與,得到 (NOT B20Z5) AND (NOT B40Z5)
LD B20Z5        
AND B40Z5       ; B20Z5 AND B40Z5
ORB              ; 將這兩部分OR,得到 (NOT B20Z5 AND NOT B40Z5) OR (B20Z5 AND B40Z5),即 XNOR 的結果
AND M100        ; 與M100相與,所以只有當M100為ON時,這部分才可能為真

然后將這兩部分OR起來,得到最終的輸出到B60Z5的值。這相當于:

B60Z5 = ( (B20Z5 XOR B40Z5) AND NOT M100 ) OR ( (B20Z5 XNOR B40Z5) AND M100 )

同時,接下來的部分計算新的M100:

計算:
B20Z5 AND B40Z5 → 第一部分
LDI B20Z5 AND B40Z5 → 取反,即 NOT (B20Z5 AND B40Z5)
然后與之前的 ORB 結果結合,可能這部分代碼有點復雜,可能需要更仔細的分析。

不過看起來,P2子程序中的邏輯可能是在實現某種加法器的進位處理,比如全加器的進位鏈,其中M100作為進位標志。或者是在進行按位的邏輯運算,比如異或和與操作,用于某種計算,比如乘法或位移。

結合主程序中的結構,每次循環調用P1和P2,然后將結果從B60復制到B20,這可能是一個迭代處理的過程,比如進行8次循環,每次處理不同的位,最終結果存儲在D10中。

現在,綜合所有信息,可能的程序功能是什么?

主程序循環8次,每次可能處理一個位的位置(因為Z0從0到7)。在每次循環中,可能將B0的某個部分復制到B40,然后與B20中的數據進行某種邏輯運算,結果存入B60,再覆蓋B20。經過8次循環后,最終結果存入D10。

可能的整體功能是:將B0中的某個數據與B20中的數據進行某種運算(比如乘法、異或、循環移位等),經過8次迭代后得到結果存儲在D10中。

例如,如果B0中的某部分數據被復制到B40,然后和B20的數據進行異或和與操作,可能在進行某種位操作,比如乘法或者移位相加的過程,類似于硬件乘法器的實現。

另外,注意到在每次主循環中,調用P1的條件是當B10Z0為ON時。這可能是在控制是否進行某種操作,比如如果B10Z0為真,則執行P1,將B0的某些位復制到B40中。否則,可能B40保持清零。這可能對應于一個條件判斷,例如根據不同的循環次數,選擇是否加載某個數據到B40。

例如,假設B10到B17的位控制每次循環是否將B0到B7的數據加載到B40的不同位置,從而進行某種位移操作。而P2中的處理可能是在執行加法或者異或操作,結合進位處理,最終結果存儲在B60,并覆蓋到B20,進行下一次循環。

可能的例子:進行8次循環,每次循環處理一個字節或字的某一位,比如進行乘法操作,其中每次循環將部分積相加,并移位。

例如,假設B20初始為0,每次循環中將B0的數據(可能是一個乘數)根據當前循環次數的位(由B10Z0判斷是否置位)決定是否加到中間結果中,然后進行移位,最終得到乘法結果存儲在D10中。

但需要更多的細節來確認這一點。

另一種可能是,該程序實現的是兩個32位數的按位邏輯運算,比如異或,并且經過某種處理,最后將結果存入D10。或者進行循環移位,每次循環處理一個位,經過8次循環后得到結果。

或者,更有可能的是,該程序實現的是兩個32位數的乘法運算,其中每次循環處理乘數的一個位,如果該位為1,則將被乘數(可能存放在B0開始的區域)左移相應的位數后加到中間結果中。

例如,在乘法運算中,乘數的每一位如果是1,則將被乘數左移相應的位數后加到結果中。這里主程序循環8次,每次處理乘數的一個位(由B10Z0是否為1判斷),如果是1,則調用P1將被乘數(B0開始的區域)復制到B40的相應位置,然后P2進行加法操作,其中處理進位。

不過P2中的邏輯運算可能更復雜,需要進一步分析。

另一種思路:P1可能將被乘數左移Z0位,然后將結果存放在B40中。例如,當Z0=0時,被乘數原樣復制到B40;當Z0=1時,左移1位(即每個位都移動到更高一位的位置),依此類推。而P2可能將B20(當前的部分積)與B40(被乘數左移后的值)相加,結果存入B60,然后覆蓋到B20,以便下一次循環使用。經過8次循環后,得到最終的乘積,存入D10。

這種情況下,每次循環對應乘數的一個位,如果該位為1(由B10Z0是否為1判斷),則將被乘數左移相應的位數并加到部分積中。

但需要詳細分析P1和P2的邏輯是否符合這種操作。

例如,P1中,當調用時,會將B0Z1(被乘數的各個位)復制到B40Z2的位置,其中Z2初始為Z0,每次循環Z1和Z2自增。假設在每次主循環中,Z0從0到7,這樣在P1中,B0的各個位會被復制到B40的偏移為Z0的位置,也就是被乘數左移了Z0位。例如,當Z0=0時,B0的位被復制到B40的相同位置(不移位);當Z0=1時,被復制到B40+1的位置,相當于左移1位。這樣,每次調用P1時,B40中的內容相當于被乘數左移了Z0位。

然后,P2中將B20(當前部分積)與B40(被乘數左移后的值)相加,處理進位,結果存入B60,覆蓋到B20。這樣,經過8次循環后,B20中存儲的就是乘積結果,最后存入D10。

這種情況下,該程序可能實現的是32位乘法,其中被乘數存放在B0開始的區域,乘數的每一位存放在B10開始的區域(B10到B17),每次循環處理乘數的一個位,如果是1,則將被乘數左移相應的位數后加到部分積中。最終結果存放在D10中。

驗證這一假設:

主程序中,每次循環Z0從0到7,對應乘數的每一位B10到B17。如果當前位為1,則調用P1,將被乘數左移Z0位,存入B40。然后P2執行加法,將部分積(B20)與B40相加,結果存入B60,覆蓋B20。

例如,第一次循環(Z0=0)時,如果B10為1,則P1將B0的位復制到B40的相同位置(不移位)。然后P2將B20(初始為0)加上B40(被乘數),結果存入B20。下一次循環,Z0=1,如果B11為1,則P1將被乘數左移1位存入B40,然后P2將當前部分積加上左移后的被乘數,以此類推。經過8次循環,最終得到被乘數乘以乘數的結果,其中乘數的每一位由B10到B17控制。

如果這樣,那么P2中的邏輯運算實際上是在執行帶進位的加法。因為每次處理兩個位(B20Z5和B40Z5)以及進位M100,計算當前位的和和新的進位。具體來說,加法器的邏輯是:

當前位的和 = (A XOR B XOR CarryIn)
CarryOut = (A AND B) OR (A AND CarryIn) OR (B AND CarryIn)

但需要看P2中的邏輯是否符合這一模式。

在P2的代碼中:

每次循環處理B20Z5(A)和B40Z5(B),以及進位M100(CarryIn)。

根據代碼中的邏輯:

計算B60Z5的值:
- 第一部分:(A XOR B) AND NOT M100
- 第二部分:(A XNOR B) AND M100
然后OR起來,得到的結果是:

如果M100為0,則結果是A XOR B;如果M100為1,則結果是A XNOR B,即 NOT (A XOR B)。這似乎和加法器的邏輯不符。

或者可能代碼中存在錯誤,或者我的分析有誤。需要重新分析P2中的邏輯。

在P2的代碼中,每個循環處理位的位置由Z5從0到15,共16次循環,可能處理每個4位塊的每一位?

或者,可能是處理32位中的每一位?不過主程序中的循環是8次,而這里的循環是16次,可能與數據長度有關。

可能我需要更仔細地逐行分析P2的代碼。

子程序P2:

LD SM400
MOV K0 Z5           ; Z5 = 0
DMOV K0 K8B60       ; B60-B6F清零
ANI SM400           ; SM400是常閉觸點,ANI SM400即AND NOT SM400,但SM400總為ON,所以這里的結果是OFF,可能是一個錯誤?或者可能代碼中的指令有誤?
OUT M100            ; 將結果(OFF)輸出到M100,即M100=OFF
FOR K16             ; 循環16次
LDI B20Z5           ; 加載NOT B20Z5
AND B40Z5           ; 與B40Z5,得到 (NOT A) AND B
LD B20Z5            ; 加載A
ANI B40Z5           ; 與NOT B,得到 A AND (NOT B)
ORB                 ; 將兩部分OR,得到 (NOT A AND B) OR (A AND NOT B) = A XOR B
ANI M100            ; 與 NOT M100(因為M100之前被設為OFF?或者這里的邏輯可能有問題)
LDI B20Z5           ; NOT A
ANI B40Z5           ; NOT B
LD B20Z5            ; A
AND B40Z5           ; B
ORB                 ; (NOT A AND NOT B) OR (A AND B) = A XNOR B
AND M100            ; 與M100
ORB                 ; 將這兩部分OR
OUT B60Z5           ; 輸出到B60Z5

接下來,處理進位:
LD B20Z5            ; A
AND B40Z5           ; B,得到 A AND B
LDI B20Z5           ; NOT A
AND B40Z5           ; B,得到 NOT A AND B
LD B20Z5            ; A
ANI B40Z5           ; NOT B,得到 A AND NOT B
ORB                 ; (NOT A AND B) OR (A AND NOT B) = A XOR B
AND M100            ; 與M100
ORB                 ; 結合之前的A AND B
OUT M100            ; 設置新的M100

這部分似乎是在計算新的進位M100。可能的邏輯是:

新的進位 M100 = (A AND B) OR ((A XOR B) AND M100_old)

這正是全加器中進位輸出的邏輯:如果當前兩個位都為1,則產生進位;或者如果其中一位為1且之前的進位存在,則繼續進位。

但根據代碼中的步驟:

首先計算:
A AND B → term1
然后:
(NOT A AND B) OR (A AND NOT B) → A XOR B → term2
然后 term2 AND M100_old → term3
然后 term1 OR term3 → 新的M100

這正好是進位輸出的正確計算方式:進位來自兩種情況:當前兩位都為1,或者其中一位為1且之前有進位。

同時,B60Z5的計算應該是當前位的和,即 A XOR B XOR M100_old。但根據代碼中的邏輯,似乎并非如此。在代碼中,B60Z5的計算分為兩種情況:

當M100_old為0時,B60Z5 = (A XOR B) AND 1 → A XOR B
當M100_old為1時,B60Z5 = (A XNOR B) → 即 NOT (A XOR B)

這明顯與正確的和的計算不符。正確的和應該是 A XOR B XOR M100_old。因此,這里可能存在邏輯錯誤,或者我的分析有誤。

或者,可能代碼中存在錯誤,導致計算的和不正確。例如,正確的和應該是 (A XOR B) XOR M100_old,即:

(A XOR B) XOR M100_old = (A XOR B) AND NOT M100_old) OR (NOT (A XOR B) AND M100_old)

而代碼中的B60Z5的計算正好是這一表達式,因此是正確的。因此,B60Z5 = (A XOR B) XOR M100_old。

因此,P2中的邏輯實際上是在計算兩個位A和B以及進位M100的和,其中:

- B60Z5 = (A XOR B) XOR M100_old
- M100_new = (A AND B) OR ((A XOR B) AND M100_old)

這正是全加器的邏輯。因此,P2子程序的作用是將B20和B40的兩個32位數相加,結果存儲在B60中,同時處理進位。每次循環處理一個位,從低位到高位,共16位?但這里循環是16次,可能處理的是16位,但主程序中操作的是32位區域,可能存在不一致。

或者,可能代碼中的循環次數是K16,即16次,處理16個位,而主程序中的結構涉及32位的數據,這可能意味著該程序只處理低16位?或者可能這是一個簡化的情況。

但根據主程序的結構,每次主循環處理8次,可能進行8位的乘法,但需要更多的上下文。

結合所有分析,主程序可能實現的是兩個32位數的乘法運算,其中被乘數存放在B0-B7(共8個4位塊,即32位),乘數的每一位由B10-B17(8位)控制。每次循環處理乘數的一個位,如果該位為1,則將被乘數左移相應的位數(由Z0控制)后加到部分積中。部分積初始為0,存放在B20-B2F,每次循環后更新。最終結果存放在D10中。

因此,整個程序的功能可能是實現32位乘法,其中被乘數是B0-B7,乘數的各位由B10-B17控制,乘積結果存入D10。

不過需要確認每個部分是否符合這一邏輯。

例如,在每次主循環中,Z0從0到7,對應乘數的第0位到第7位(B10到B17)。如果乘數的某位為1,則調用P1將被乘數左移Z0位,存入B40,然后P2將部分積(B20)與B40相加,結果存入B60,再復制回B20。經過8次循環后,B20-B2F中的32位數據即為乘積,最后存入D10。

這樣的邏輯符合代碼的結構。因此,該程序的作用是執行被乘數(B0-B7)與乘數(B10-B17的各位)的乘法,結果存儲在D10中。


這段PLC代碼實現了一個32位無符號整數的乘法運算。其核心邏輯是通過移位相加算法,逐位處理乘數,并將部分積累加,最終將結果存入數據寄存器D10。以下是詳細分析:

1. **初始化**:
   - `DMOV K0 K8B20` 將B20-B2F(32位)清零,作為初始部分積。
   - `MOV K0 Z0` 初始化循環計數器Z0為0,用于控制8次循環。

2. **主循環(8次迭代)**:
   - **條件判斷**:`LD B10Z0` 檢測乘數的當前位(B10-B17)。若為1,調用P1處理被乘數。
   - **P1子程序**:將被乘數(B0-B7)左移Z0位后存入B40-B4F。例如,Z0=1時左移1位。
   - **P2子程序**:執行32位加法,將部分積(B20)與左移后的被乘數(B40)相加,結果存入B60并更新進位。
   - **更新部分積**:`DMOV K8B60 K8B20` 將本輪結果B60復制到B20,準備下次迭代。

3. **P1子程序(移位操作)**:
   - 通過8次循環,將B0-B7的每個位按Z0偏移復制到B40,實現邏輯左移。

4. **P2子程序(加法器)**:
   - 使用全加器邏輯逐位計算:
     - **當前位和**:`B60Z5 = (B20Z5 XOR B40Z5) XOR M100`
     - **進位更新**:`M100 = (B20Z5 AND B40Z5) OR ((B20Z5 XOR B40Z5) AND M100)`
   - 處理32位加法,結果存入B60,進位由M100傳遞。

5. **結果存儲**:
   - 循環結束后,`DMOV K8B20 D10` 將最終乘積(B20-B2F)存入D10。

**關鍵點**:
- **乘數處理**:乘數位由B10-B17控制,每位決定是否加被乘數的相應左移值。
- **被乘數**:存儲在B0-B7(32位),通過P1實現動態左移。
- **累加器**:B20-B2F作為部分積,通過P2的加法器逐步累加。
- **進位機制**:M100寄存器處理加法過程中的進位,確保32位精度。

**示例**:
若被乘數為0x00000002(B1=1),乘數為0x03(B10和B11=1):
- 第1次循環(Z0=0):加2<<0 = 2 → 部分積=2
- 第2次循環(Z0=1):加2<<1 =4 → 部分積=6
- 結果D10=0x06(2*3=6)。

該代碼通過硬件級別的位操作高效實現了32位乘法,適用于資源受限的PLC環境。

主站蜘蛛池模板: 超碰免费人人 | 人妻系列无码专区av在线 | 一级一片免费观看 | 欧美黄色一级片视频 | 久热国产视频 | 天堂国产永久综合人亚洲欧美 | 成年无码av片在线狼人 | 美女视频黄a视频全免费 | 国产免费爽爽视频 | 国产福利一区二区三区视频 | 久久精品一区视频 | 亚洲成人av免费在线观看 | 欧美精品一级 | 伊人精品影院 | 伊人色综合久久天天五月婷 | 黑人巨大精品欧美一区二区 | 日产精品高潮呻吟av久久 | 夜夜综合| 无码国产精成人午夜视频一区二区 | 欧美一区二区三区 | 天天综合中文字幕 | a极黄色片| 在线黄色av网站 | 加勒比色老久久综合网 | 一本久久综合亚洲鲁鲁五月天 | 小少妇哺乳喂奶播放 | 久久精品国产99国产精偷 | 四虎精品一区二区免费 | 久久久久久久久久久久久久久 | 一级黄色视屏 | 欧美国产一级 | 成人性生交大片免费看视频hd | 中文字幕免费高 | 激情小说在线 | 国产一区精品在线 | 成人黄色短片 | 国产老熟妇精品观看 | 99国产超薄肉色丝袜交足 | 免费男女乱淫真视频免费播放 | 三级全黄的女人高潮叫 | 五月激情丁香婷婷 | www黄色网 | 成人做爰www网站视频 | 亚洲欧美日韩国产成人一区 | 香蕉视频色版 | 国产人伦精品一区二区三区 | 欧美三日本三级少妇三 | 亚洲欧美在线不卡 | 青青草污视频 | 性久久久久久久久 | 亚洲国产人午在线一二区 | 成年人免费看毛片 | 婷婷丁香综合网 | 99精品偷拍在线中文字幕 | 成人妇女免费播放久久久 | 性久久久久久久久久久 | 第一福利在线观看 | 女人下边被添全过视频的网址 | 色拍拍欧美视频在线看 | 亚洲精品视屏 | 粗壮挺进人妻水蜜桃成熟 | 中文字幕乱码中文乱码777 | 肥白大屁股bbwbbwhd | 黄色网址在线免费看 | 免费人成视频在线观看不卡 | 无码国产69精品久久久久同性 | 澳门永久av免费网站 | 亚洲精品ww久久久久久p站 | 国产做无码视频在线观看浪潮 | 一区二区在线观看免费视频 | 青青久久av北条麻妃黑人 | 九一亚色视频 | 欧美日韩一区二区三区精品 | 理论片一级 | 国产精品久久久久久久久久免 | 亚洲狠狠婷婷综合久久久久图片 | 中国一区二区三区 | 国产九九av | 国产色欲av一区二区三区 | 亚洲精品久久久久久宅男 | 国产精品美女一区二区 | 一本大道久久 | 国产精品永久在线观看 | 日日摸日日碰夜夜爽亚洲精品蜜乳 | 让少妇高潮无乱码高清在线观看 | 草草影院国产第一页 | 在线视频欧美日韩 | 亚洲你我色 | 亚洲精品鲁一鲁一区二区三区 | 有码在线 | 成人自拍视频在线 | 午夜天堂精品久久久久 | 欧美高清日韩 | 欧美日韩中文字幕 | 中文字幕av一区二区三区 | 国内精品久久久久久久影视蜜臀 | 欧美性视频网站 | 免费日本黄色 | 日本成年x片免费观看 | 天天干天天弄 | 国内福利视频 | 美女无遮挡免费网站 | 日韩在线不卡 | 日韩亚洲欧美一区 | 亚洲女同2 | 18无码粉嫩小泬无套在线观看 | 久久精品国产色蜜蜜麻豆 | 国产视频一区二 | 91亚洲一区 | 内谢少妇xxxxx8老少交视频 | 成人免费视频7778 | 婷婷欧美综合 | 中文字幕乱视频 | 国产又粗又长又硬免费视频 | 国产在线看片 | 网曝91综合精品门事件在线 | 无码av中文字幕免费放 | 射精专区一区二区朝鲜 | 日日碰狠狠躁久久躁 | 国产大片黄在线观看私人影院 | 国产专区一区二区 | 国产极品久久久 | 亚洲三级黄 | 亚洲五码在线 | av片一区二区三区 | 欧美成人精品第一区二区三区 | 日韩一卡2卡3卡4卡2021免费观看国色天香 | 国产精品video | 手机看片一区 | 美国免费黄色片 | 精品午夜福利无人区乱码一区 | 国产九九九 | 国产强伦人妻毛片 | 亚洲毛片av日韩av无码 | 麻豆国产人妻欲求不满谁演的 | 国产精品免费麻豆入口 | 免费国产成人 | 另类图片亚洲色图 | 综合色婷婷 | 日本做爰xxxⅹ高潮欧美 | 狠狠色综合色综合网络 | 国产精品污www在线观看17c | 男女啪祼交视频 | 亚洲男人的天堂在线观看 | 1000部精品久久久久久久久 | 国产精品人人爽人人爽av | 美一女一无一伦一性一交 | 91九色porny视频 | 久久99精品久久久久久牛牛影视 | 亚洲欧洲av无码专区 | 中文字幕免费高清视频 | 最近中文字幕在线中文视频 | 福利网址在线 | 国产精品自拍亚洲 | 丁香激情综合久久伊人久久 | 免费在线观看成年人视频 | 国产精品区在线观看 | 国产女主播自拍 | 夫妻性生活a级片 | 日韩成人激情 | 三级av在线免费观看 | 亚洲少妇毛片 | 美女脱了内裤张开腿让男人桶网站 | 制服丝袜中文字幕在线 | 日韩a无v码在线播放免费 | 黄色三级在线播放 | 午夜在线免费观看视频 | av大帝在线 | av资源网在线观看 | 99久久人妻精品免费二区 | 欧美一区2区三区4区公司 | 99精品免费久久久久久久久日本 | 亚洲夜夜叫 | 国产明星精品一区二区刘亦菲 | 亚洲狠狠色丁香婷婷综合 | 天堂视频在线观看免费 | 91久久久www播放日本观看 | 黄频在线播放 | 欧美日韩国产一区二区三区不卡 | 小h片免费观看久久久久 | 亚洲精品中文字幕乱码三区 | 自拍偷在线精品自拍偷99 | 久久婷婷精品 | 天天干天天噜 | 久久久久久久久久久丰满 | 欧美色图五月天 | 国产黄色一区二区三区 | 中文高清av| 91精品啪在线观看国产商店 | 国产又色又爽又黄的视频在线观看 | 久久久亚洲精品一区二区三区 | 欧美一区二区三区四区五区 | 超碰在线网址 | 日本妞一区 | 日韩爱爱网站 | 毛片在线看片 | 日韩高清中文字幕 | 人妖和双性人xxxxx | 亚洲丝袜一区二区 | 一卡二区| 91插插插影库永久免费 | 另类激情综合网 | 怡红院成人网 | 超碰中文字幕在线 | 三级在线国产 | 色哟哟精品一区二区 | 少妇一级视频 | 亚洲综合色网站 | 欧美在线一二三 | 日韩在线观看第一页 | 国产精品久久99综合免费观看尤物 | 日本一区二区三区精品视频 | 先锋影音男人av资源 | 欧美三根一起进三p | 精品少妇一区二区三区四区五区 | 成人免费视频视频在线观看 免费 | 在线视频激情小说 | 深夜福利视频在线观看 | 亚洲区日韩精品中文字幕 | 一级做a在线观看 | 越南毛茸茸的少妇 | 国产精品影音先锋 | 无码乱肉视频免费大全合集 | 久久精品一区二区三区av | 亚洲天堂国产 | 精品动漫3d一区二区三区免费版 | 人妻少妇精品视频一区二区三区 | 国产成人高潮免费观看精品 | 中文字幕av专区 | 中文在线√天堂 | 国产在线午夜卡精品影院 | 精品一区二区三区免费观看 | 黄色小说在线观看视频 | 亚洲婷婷一区 | 国产天堂av在线 | 中文字幕在线免费观看 | 男女啪啪做爰高潮www成人福利 | 超爱碰在线资源 | sm在线看| 五十路av在线 | 亚洲熟女综合一区二区三区 | 另类 欧美 日韩 国产 在线 | 无码午夜人妻一区二区三区不卡视频 | 午夜激情网址 | 国产精品1000夫妇激情啪 | 色www性张柏芝国产 色xxxxxx | 欧美日韩精品一区 | 久久久久久97免费精品一级小说 | 四虎com| 中文字幕在线不卡一区二区 | 樱花草在线播放免费中文 | 91美女片黄在线观看 | 久久婷婷综合色丁香五月 | 在线观看中文 | 国产人妖av | 日本三级韩国三级三级a级按摩 | www国产亚洲 | 337p粉嫩大胆噜噜噜噜69影视 | 精品无码国产自产拍在线观看蜜 | 国产亚洲精品久久19p | 精品国产一区二区三区无码 | 色av永久无码影院av | av国産精品毛片一区二区三区 | 国产精品成人国产乱 | 91亚洲精品久久久中文字幕 | 日韩乱码人妻无码中文字幕视频 | 一级做a爰片久久毛片 | 色综合久久88色综合天天免费 | 国产最露的三级 | 美女又爽又黄视频毛茸茸 | 国产av一区二区三区天堂综合网 | 免费国产又色又爽又黄的网站 | 中国丰满熟妇xxxx性 | yy111111少妇无码影院 | 欧美成人影院亚洲综合图 | 亚洲最新av在线 | 蜜桃色一区二区三区 | 欧美性生活视频免费看 | 99久久精品免费看国产免费粉嫩 | 一级黄色大片免费 | 黄色一级在线播放 | 天天做天天摸天天爽天天爱 | 日本又色又爽又黄的a片18禁 | 国产精品久久免费 | 男人边吃奶边做好爽免费视频 | 精久国产一区二区三区四区 | 农村女人乱淫免费视频麻豆 | 日日日噜噜噜 | 国产精品国产三级国产aⅴ中文 | 一级做a爱片性色毛片www | 久久久免费在线观看 | 人妻在卧室被老板疯狂进入 | 免费在线观看a级片 | 噜噜噜久久亚洲精品国产品 | 美日韩视频 | 成 人 免费观看网站 | 国产精品亚洲日韩欧美色窝窝色欲 | 国产99在线视频 | 国产在线麻豆精品观看 | 波多野结衣av高清一区二区三区 | 欧美日韩中文字幕 | 日韩中文字幕在线一区二区三区 | 亚洲国产成人久久精品大牛影视 | 国产一区二区三区精品在线 | 国产精品成人免费看片 | 免费黄色在线观看 | 亚洲精品久久中文字幕 | 欧美激情综合五月色丁香小说 | 日韩精品一区二区三区色欲av | 国产精品精品软件 | 8090yy成人免费看片 | 亚洲色欲色欲大片www无码 | 日本少妇xxxx软件 | 最近中文字幕第一页 | 成年人在线观看视频网站 | 日本乱子伦xxxx | 久草福利 | 国产一区视频在线观看免费 | 熟妇人妻激情偷爽文 | 国产精品入口夜色视频大尺度 | 国产精品自在线拍国产手机版 | 爽爽淫人| 国内精品伊人久久久久网站 | 少妇性bbb搡bbb爽爽爽 | 午夜看片在线 | 伊人久久大香线蕉av一区 | 国产人妻精品无码av在线 | 天天弄天天干 | 欧美午夜性春猛交xxxx明星 | 亚洲视频在线观看免费的欧美视频 | 国产91丝袜在线18 | 日韩乱码人妻无码中文字幕 | 日本在线一本 | 亚洲精品视频大全 | 开心五月激情综合婷婷色 | 久久55 | 午夜秋霞网 | 都市激情亚洲综合 | 水蜜桃亚洲一二三四在线 | 欧美乱妇高清无乱码一级特黄 | 秋霞影院一区二区 | 无码中文字幕乱码一区 | 色热热| 免费国产a国产片高清网站 国产婷婷一区二区三区 | 国产一级爽片 | 男女猛烈激情xx00免费视频 | 暖暖视频日本在线观看 | 色噜噜狠狠一区二区三区 | 性一交一乱一伦a片 | 97色偷偷色噜噜狠狠爱网站 | 亚洲咪咪 | 久久精品无码精品免费专区 | 国产一区二区三区精品在线 | 亚州男人的天堂 | 久久久激情 | 国产精品久久欧美久久一区 | 色哟哟国产精品色哟哟 | 国模静欣大尺度激情啪啪 | 曰本无码人妻丰满熟妇啪啪 | 欧美精品videos极品 | 粉嫩小箩莉奶水四溅在线观看 | 亲子乱一区二区三区 | 女同久久另类69精品国产 | 日本三级韩国三级三级a级中文 | 黄色高清无遮挡 | 成人免费视频久久 | 少妇饥渴偷公乱第95 | 国产日韩在线视频 | 国产黄色在线看 | 九九re6热在线视频精品66 | 国产乱码一区二区三区 | 国产麻豆自拍 | 国产在线视频一区二区 | 国产在线观看成人 | www.av色 | 伊人精品在线视频 | 视频在线亚洲 | 成人国产精品色哟哟 | 国产视频你懂得 | 中年熟妇的大黑p | 国产乱妇乱子在线播视频播放网站 | 丁香五精品蜜臀久久久久99网站 | 无码欧美毛片一区二区三 | 欧美大片一区二区 | 亚洲国产午夜精品理论片妓女 | 韩国欧美三级 | 色欧美88888久久久久久影院 | 国产字幕在线观看 | 一本一本久久a久久精品综合麻豆 | 麻豆精品免费 | 国产精品无 | 特级无码毛片免费视频尤物 | 国产一区二区片 | 91av蝌蚪| 亚洲综合网站 | 免费成年人视频在线观看 | 日韩在线视频网站 | 色悠久 | 色噜噜狠狠色综合久 | 97热久久 | 97久久综合区小说区图片区 | 天堂网av中文字幕 | 邻居少妇与水电工啪啪 | 免费在线成人 | 新毛片基地 | 国内精自线一二三四在线看 | 佐佐木明希99精品久久 | 高清国产亚洲精品自在久久 | 国产视频你懂得 | 欧美xxxx免费虐 | 欧美午夜精品一区二区 | 瑟瑟网站在线观看 | x88av在线| 人妻夜夜爽天天爽 | 国产一区二区三区日韩精品 | 涩av | 深夜视频在线观看 | 福利在线看 | 国产精品人妖 | 亚洲网站色 | 欧美一级淫 | 欧美综合自拍亚洲综合图片区 | 国产精品人妻熟女毛片av久 | 免费黄色网址大全 | 亚洲天堂成人在线视频 | 两性午夜刺激性视频 | av青青草原| 久久国产精品成人影院 | 国偷自产一区二区三区蜜臀 | 中文字母av | 亚洲天堂男人 | 久久无码人妻影院 | 开心五月综合亚洲 | 成人乱人伦精品小说 | 五月天一区二区三区 | 91性高潮久久久久久久 | 国产精品视频资源 | 99久久精品费精品国产 | 男女啪啪做爰高潮免费看 | 亚洲视频免费观看 | 成人免费黄 | 伊人网在线 | 狠狠躁三区二区久久天天 | 国产欧美日韩一区二区三区 | 伊人免费 | 欧美三级午夜理伦三级 | 91在线精品李宗瑞 | 天天狠天天操 | 真实乱偷全部视频 | 九月婷婷人人澡人人添人人爽 | 操碰97| 久久精品一区二区三区四区 | 亚洲激情片 | 又长又硬又粗一区二区三区 | 夜夜躁日日躁狠狠久久av | 99国产欧美久久久精品 | 极品美女白嫩呻吟湿淋淋照片 | 色天天综合 | 欧美久草在线 | 国产精品99久久免费观看 | 九色国产精品入口 | 欧美性动态图 | 国产综合色产在线精品 | 99精品亚洲 | 亚洲午夜久久久久 | 日韩欧美一区二区三区在线 | 亚洲性色av | 91精品国自产拍在线观看不卡 | 国产精品人人爽人人做av片 | 99久久婷婷国产综合精品免费 | 国产精品视频免费丝袜 | 国产三级精品片 | 一级一级特黄女人精品毛片 | 亚洲一区精品无码 | 久久国产乱子伦精品 | 各处沟厕大尺度偷拍女厕嘘嘘 | 久久夜色网 | 国产伦理五月av一区二区 | 日本一级淫片色费放 | 在线欧美视频 | 久久三级视频 | 女人被男人躁得好爽免费视频 | 狠狠爱网站| 性工作者十日谈 | 亚洲国产高清在线观看视频 | 亚洲伊人久久大香线蕉综合图片 | 中文字幕日产无码 | 精品久久久久久18免费网站 | 久久午夜神器 | 日韩在线激情视频 | vvvv88亚洲精品欧美精品 | 伊人操| 国产偷亚洲偷欧美偷精品 | 精品一区二区三区无码免费直播 | 亚洲热在线| 天天操天天射天天爽 | 色偷偷av男人的天堂 | 国产一区毛片 | 国产区视频在线观看 | 妲己艳史淫片免费看 | 少妇高潮zzzzzzzyⅹ一 | 91久久久久久久久久久 | av中出| 国产精品女同一区二区软件 | 免费人妻无码不卡中文字幕系 | 农夫成人网 | 成人在线免费视频 | 国产欧美一区二区三区在线 | 国产精品国产三级国产aⅴ原创 | 高清欧美性猛交xxxx黑人猛交 | 久久精品成人欧美大片 | 成人自拍视频网站 | juliaann精品艳妇在线 | 中文,亚洲,欧美 | 色资源在线观看 | 天堂在线免费观看视频 | 日本特黄特黄刺激大片 | 懂色av影视一区二区三区 | 久久午夜精品 | 久久久久99精品久久久久 | 国产精品原创av片国产日韩 | 国内外成人在线视频 | 欧美一级淫片丝袜脚交 | 国色天香社区在线视频 | videosgratis极品另类灌满高清资源 | 成人一级免费视频 | 一区二区在线观看免费 | 精品久久久久久久免费看女人毛片 | 色婷婷综合网 | 精品一区二区三区毛片 | 欧美三级a做爰在线观看 | 国产一区二区三区视频 | 最新版天堂资源中文官网 | 久久久五月天 | 男人搞女人网站 | 亚洲天堂av网站 | 亚洲日本乱码在线观看 | 91精品国产高清一区二区三区蜜臀 | 日本少妇bbb| 免费一级淫片日本高清视频一 | 欧美午夜性春猛交xxxx明星 | 亚洲大逼 | 蜜臀av人妻国产精品建身房 | 欧美巨大双龙性猛交乱大 | 日韩综合av | 久久精品视频在线 | 久久精品一区二区三区四区 | 全黄h全肉1v1各种姿势动漫 | 韩国一区二区av | 国内自拍区 | 国产婷婷色一区二区三区在线 | 国产乱人对白 | 欧美理伦在线观看 | 东北少妇伦xxxxhd | 意大利少妇愉情理伦片 | 欧美午夜刺激影院 | 在线观看黄色av | 99精品一级欧美片免费播放 | 少妇人妻精品一区二区 | 在线观看视频毛片 | 欧美在线色图 | 大sao货你好浪好爽好舒服视频 | 亚洲男女在线观看 | 国产精品视频在线观看免费 | 日韩在线精品 | 红桃色av| 国产女主播视频一区二区 | 各种含道具高h调教1v1男男 | 色香蕉网站| 99在线免费观看 | 日本精品视频一区 | 日本老少交 | 操xxxx| 在线免费看av | 91精品情国产情侣高潮对白文档 | 亚洲人成伊人成综合网小说 | 在线中出 | 91精品国产综合久久精品 | 在线成人小视频 | 中国国语毛片免费观看视频 | 国产精品最新乱视频二区 | 性视频在线| 大咪咪dvd| 欧美成人免费一区二区 | 成人手机看片 | 外国三级毛片 | 黄色三级毛片视频 | 午夜性色福利视频 | 日本啪啪片 | 性一交一乱一区二区洋洋av | 国产精品v亚洲精品v日韩精品 | 日本亲近相奷中文字幕 | 新婚之夜玷污岳丰满少妇在线观看 | 欧美与黑人午夜性猛交久久久 | 337p人体粉嫩胞高清视频 | 精品少妇一区二区三区免费观看 | 天天精品免费视频 | 成人免费网视频 | 蜜桃传媒一区二区亚洲 | 天海翼中文字幕 | www日韩avcom | 欧美色欧美亚洲高清在线视频 | 在线看日韩av | 九一av | 黄色大片91 | 国产丰满美女做爰 | 蜜臀国产在线视频 | 精品一区二区在线视频 | 内射无码专区久久亚洲 | 无码国内精品人妻少妇 | 激情的网站 | 国产福利91精品一区二区三区 | 女人扒开屁股桶爽30分钟 | 日日干综合 | 97精品一区二区视频在线观看 |