计算机系统基础实验01运算器算术运算
計算機系統(tǒng)基礎
運算器算術運算
實驗目的
掌握ALU的算術運算原理,熟悉ALU數(shù)據(jù)傳送通路和數(shù)據(jù)傳送方式。
實驗環(huán)境
微機,配置Windows操作系統(tǒng)、LC-3仿真機軟件。
實驗內容
ALU數(shù)據(jù)傳送通路和數(shù)據(jù)傳送方式;ALU的算術運算功能及其運算原理。
實驗過程
一、LC-3中幾個重要的寄存器
通用寄存器(GPR):R0~R7共8個,每個均為16bit
IR、PC:IR用來存放本次執(zhí)行的指令,PC用來存放下一條指令所在的內存地址
條件碼:LC-3中有3個位寄存器,為N、Z、P,一旦GPR的數(shù)據(jù)發(fā)生變化,條件碼的對應一位就會發(fā)生變化:寫入正數(shù)時,N置1;寫入0時,Z置1;寫入負數(shù)時,P置1。可以根據(jù)條件碼的變化來控制指令執(zhí)行的順序。
二、指令介紹
算術運算操作指令:ADD 0001 001 100 000101 (1305) ADD R1 R4 R5 (R4+R5 -->R1) 0001 001 100 100101 (1325) ADD R1 R4 5 (R4+5 -->R1)指令 ADD R1,R4,#5 執(zhí)行的數(shù)據(jù)通路 如下圖
一條指令是由操作碼和操作數(shù)組成的。ISA指令集是由一組操作碼、數(shù)據(jù)類型、和尋址模式定義的。尋址模式?jīng)Q定了操作數(shù)位于哪個位置。
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 0 0 0 1 0 0 1 0 1 0 0 0 0 1 0 1ADD R1 R4 R5bit[11:9]R1為目的寄存器,bit[8:6]R4是源寄存器,通過bit[5]來判斷bit[4:0]的含義。
如果bit[5]為0,則bit[2:0]為是另一個源寄存器;
如果bit[5]為1,則bit[4:0]為指令攜帶的立即操作數(shù),16位擴展后與源寄存器相加。
上面的例子就是操作碼為ADD,尋址模式是寄存器模式的指令。該指令的操作是讓計算機做二進制補碼整數(shù)加法,計算機尋找的操作數(shù)的位置是位于通用寄存器中的。
三、具體實驗測試
通過前面一些鋪墊,對算術運算指令ADD有了一定的了解,接下來就舉一些例子進行測試并具體分析。
(1) bit[5]來判斷bit[4:0]
測試截圖
如果bit[5]是1,第二個源操作數(shù)就被包含在指令當中,第二個源操作數(shù)是在執(zhí)行ADD操作之前,將bit[4:0]位執(zhí)行符號擴展到16位得到的。
測試截圖
ADD指令的立即操作數(shù)必須位于指令的bit[4:0]位中,也就說不是所有的二進制補碼整數(shù)都可以是立即數(shù)。
(2)運算
0001 001 010 000011 (1283) ADD R1 R2 R3 (R1 = R2 + R3) 令 R2 = x8000, R3 = x8000 則R1 = 1 0000測試截圖如下,我們可以看到R1=0000,而并不是 10000,因為只能保留了四位,所以將最高位丟掉了。
測試截圖如下,我們可以看到R1的確等于8000,即8000&8000的結果
以上兩個指令,我再重新賦值給R2,R3
Set value R2 = xFFFF, R3 = x8000
ADD預測 R1 = 1 7FFF
ADD測試截圖如下,R1 = x7FFF,運算溢出,只能保留四位,則丟了掉了最高位的1
AND測試截圖如下,R1 = x8000
通過上面兩組數(shù)據(jù),可以看出ADD數(shù)據(jù)運算溢出是只保留4位,其余位都丟掉。
(3)實現(xiàn)減法 x-y
將y取反加1,得到其補碼,再與x相加即為x+(-y) x is in R0, y is in R1Set value R0 = 4 = x,R1 = 1 = y 1)求反碼 1001 001 001 111111 (927F) NOT R1 R1 ( NOT(y)-->R1 ) 2)得補碼 0001 010 001 100001 (1461) ADD R2 R1 1 ( (-y)-->R2 ) 3)做減法 0001 010 000 000010 (1402) ADD R2 R0 R2 ( x+(-y)-->R2 )(4)求10個數(shù)的和
假設知道x3100到x3109這10個地址中儲存的是整數(shù),然后計算這10個整數(shù)的和。
第一步,我們先將10個數(shù)值存儲到x3100到x3109這10個地址當中;
第二步,初始化變量,有三個變量:當前的和(R1初始化為0),沒有被做加法的整數(shù)的個數(shù)(R4初始化為10),以及下一個被加整數(shù)的地址(R2初始化為第一個整數(shù)的地址,即x3100)。
然后加法開始執(zhí)行。
這個程序重復一下過程:加載10個數(shù)中的一個到R3,加到R1中。每執(zhí)行一次加法,就遞增R2, R2指向下一個要被加的數(shù)據(jù)的地址,并且遞減R4, 就知道還有多少數(shù)據(jù)等待被加。當R4等于0時,條件碼Z被置為1,停止循環(huán),即可得到計算結果R1。
流程圖如下
…
小結
ALU
算術邏輯單元 (arithmetic and logic unit)
組成:
1)內部組成: 加法器AU、邏輯運算器、移位器、求補器
2)外部組成: 兩個輸入緩沖器A和B、輸出緩沖器SUM、進位標志CF、溢出標志OF、符號標志SF、零標志ZF
串行加法器:
我們手算加法的時候,總是先個位相加,選出結果和進位,再十位相加并加上進位,再算出結果和進位… 這就是一個鏈式的過程,每一位(除第一位外)其結果的得出都依賴于前一位的進位,并且該位運算完的進位需要提供給下一位才能得出下一位結果和進位,下一位的進位再…
基本邏輯單元:全加器FA
兩個本位加數(shù) Ai和Bi;
低位進位Ci-1;
本位和Si
向高位的進位 Ci
Si = Ai XOR Bi XOR Ci-1
Ci = Ai·Bi + (Ai+Bi)·Ci-1(邏輯加OR 與 邏輯乘AND)
記Gi=Ai·Bi稱為本位進位
記Pi=Ai+Bi稱為傳遞條件,Pi·Ci-1稱為傳遞進位
可見:Ci = Gi + Pi·Ci-1
多個FA串接起來,就組成了串行加法器。
當然除了這些還有并行加法器等。
總結
以上是生活随笔為你收集整理的计算机系统基础实验01运算器算术运算的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Google Glass 2.0
- 下一篇: win7 锁定计算机 失效,win7系统