1. 程式人生 > >計算機組成原理實驗四

計算機組成原理實驗四

上機實驗04   邏輯運算程式設計實驗

1.瞭解組合語言的邏輯運算指令

2.熟悉組合語言中邏輯運算指令的使用方法

3.掌握利用匯編語言邏輯運算指令實現程式設計的方法。

二、軟硬體環境

1.硬體環境:微機CPU 486以上,500MB以上硬碟,32M以上記憶體;

2.軟體環境:裝有MASM 5.0DEBUGLINKEDIT等應用程式。

三、實驗涉及的主要知識單元

1.邏輯非指令NOT

格式:NOT OPD

操作形式:OPD←。

描述:

指令的功能是把運算元中的每位變反,即:1001。將目的地址中的內容逐位取反後送入目的地址。運算元不能用立即數,指令執行後對標誌位無影響,也可用於求補。

舉例:

MOV AX

1234H ;(AX=1234H

NOT AX       ;(AX=EDCBH

2.邏輯與指令AND

格式:AND  目的運算元,源運算元

操作形式:DOPD ← DOPDSOPD

描述:

1)邏輯與運演算法則為11=110=001=000=0

2)指令的功能是把源運算元中的每位二進位制與目的運算元中的相應二進位制進行邏輯乘運算操作,操作結果存入目的運算元中。

3)受影響的標誌位:CFOF0PFSFZF根據運算定, AF無定義。

4)利用AND指令與01相與可對運算元的某些位進行遮蔽和保留操作。

舉例:

AL中第0位和第7位清零。

MOV AL0FFH                        

          AND AL7EH

3.邏輯或指令OR

格式:OR 目的運算元,源運算元

操作形式:DOPD ← DOPDSOPD

描述:

1)邏輯或運演算法則:11=110=101=100=0

2)指令的功能是把源運算元中的每位二進位制與目的運算元中的相應二進位制進行邏輯加運算操作,操作結果存入目的運算元中。

3)受影響的標誌位:CFOF0PFSFZF根據運算定, AF無定義。

4)利用OR指令與10相或,可對運算元置1操作,和保留原位不變。

舉例:

         AL中第0位和第7位置1

         MOV  AL0   

OR   AL81H

4.邏輯異或指令XOR

格式:XOR目的運算元,源運算元

操作形式:DOPD ← DOPDSOPD

描述:

1)邏輯異或運演算法則:11=010=101=100=0

2)指令的功能是把源運算元中的每位二進位制與目的運算元中的相應二進位制進行邏輯“異或”操作,操作結果存入目的運算元中

3)受影響的標誌位:CFOF0PFSFZF根據運算定, AF無定義。

4)利用該指令與1和0相異或,分別可以運算元對應位變反和保持不變。

5)對運算元自身異或運算可對暫存器和CF、OF置0。

舉例:

1)AL中的07位變反

XOR  AL81H

2)將AX清零

     XOR  AXAX

5.邏輯測試指令TEST

格式:TEST 目的運算元,源運算元

操作形式:DOPDSOPD

描述:

1)該指令與指令AND的區別在於,兩運算元相與後不儲存結果。

2)指令的功能是把源運算元的每位二進位制與目的運算元中的相應二進位制進行邏輯“與”操作,根據所得結果設定有關標誌位,為隨後的條件轉移指令提供條件,由於不儲存差值,所以不會改變指令中的運算元。

3)受影響的標誌位:CFOF0PFSFZF根據運算定, AF無定義。

     舉例:

     1)TEST AX100BB表示二進位制

          JNZ  AA ;如果AX右數第三位為1JNZ將跳轉到AA處。

     2)測試暫存器是否為空

          TEST AXAX

          JZ  AA

          如果AX為零,則ZF標誌為1JZ將跳轉到AA

1、實驗內容

1)用A命令編寫程式片段,實現邏輯非,邏輯與,邏輯或,邏輯異或,邏輯測試運算;(2)得到實際的結果,用T或P命令檢視結果正確性。

3)實驗例子,邏輯非:NOT 14H

               邏輯與:32H  AND  0FH

   邏輯或:32H  OR  0FH

   邏輯異或:32H  XOR  0FH

4)進行邏輯測試運算中,注意狀態和標誌位的變化,並記錄。

2、實驗步驟

1)預習邏輯運算中的基本指令知識,根據實驗內容,整理思路;

2)利用在DEBUG除錯中的A命令輸入對應程式片段;

3)對寫好的程式片段,利用DEBUGTP命令或G命令檢視資料區,核對實驗結果。

1、實驗要求

1)寫出實現每個邏輯運算的例子答案;

2)記錄具體實現邏輯運算例子的實驗步驟;

3)回答思考問題;

4)記錄實驗結果。

2、實驗提示

(1) 進入DEBUG除錯環境,用A命令輸入程式片段如圖3-1所示。


2)圖3-1是實現的是邏輯非的運算驗證。然後,用PT命令檢視暫存器AX內容的

實驗結果分析

;*****************************************************

;寫出下面程式各語句執行後暫存器和狀態字的值

DATA SEGMENT

    STR DB 'HELLO WORLD!',13,10,'$'

DATA ENDS

STACK SEGMENT STACK

   DB 20 DUP(?)

STACK ENDS

CODE SEGMENT

    ASSUME CS:CODE,DS:DATA,SS:STACK

START:

暫存器AX

暫存器BX

暫存器CX

暫存器CX

狀態標誌

     MOV AX,0FF03H

FF03

0000

0000

0000

NV UP EI PL NZ NA PO NC

     MOV BX,0H

FF03

0000

0000

0000

NV UP EI PL NZ NA PO NC

     MOV CX,5H

FF03

0000

0005

0000

NV UP EI PL NZ NA PO NC

     MOV DX,0AH

FF03

0000

0005

000A

NV UP EI PL NZ NA PO NCT

     NOT AX

00FC

0000

0005

000A

NV UP EI PL NZ NA PO NC

     AND AX,0FF0H

00F0

0000

0005

000A

NV UP EI PL NZ NA PE NC

     OR  BX,AX

00F0

00F0

0005

000A

NV UP EI PL NZ NA PE NC

     OR  DX,CX

00F0

00F0

0005

000F

NV UP EI PL NZ NA PE NC

     XOR AX,0033H

00C3

00F0

0005

000F

NV UP EI PL NZ NA PE NC

     XOR AX,AX

0000

00F0

0005

000F

NV UP EI PL ZR NA PE NC

     MOV AX,DATA

141B

00F0

0005

000F

NV UP EI PL ZR NA PE NC

     MOV DS,AX

141B

00F0

0005

000F

NV UP EI PL ZR NA PE NC

LOOP1:     

     SUB AX,1H

141A

00F0

0005

000F

NV UP EI PL NZ NA PO NC

     TEST AX,AX

141A

00F0

0005

000F

NV UP EI PL NZ NA PO NC

     JNZ LOOP1

141A

00F0

0005

000F

NV UP EI PL NZ NA PO NC

     MOV DX,OFFSET STR

0000

00F0

0005

000F

NV UP EI PL ZR NA PE NC

     MOV AH,09

0900

00F0

0005

0000

NV UP EI PL ZR NA PE NC

     INT 21H

0900

00F0

0005

0000

NV UP EI PL ZR NA PE NC

     MOV AH,4CH

4C24

00F0

0005

0000

NV UP EI PL ZR NA PE NC

     INT 21H  

4C24

00F0

0005

0000

NV UP DI ZR NA PE NC

CODE ENDS

     END START