日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > windows >内容正文

windows

计算机系统基础实验01运算器算术运算

發(fā)布時(shí)間:2024/3/26 windows 83 豆豆
生活随笔 收集整理的這篇文章主要介紹了 计算机系统基础实验01运算器算术运算 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

計(jì)算機(jī)系統(tǒng)基礎(chǔ)

運(yùn)算器算術(shù)運(yùn)算
實(shí)驗(yàn)?zāi)康?/h5>

掌握ALU的算術(shù)運(yùn)算原理,熟悉ALU數(shù)據(jù)傳送通路和數(shù)據(jù)傳送方式。

實(shí)驗(yàn)環(huán)境

微機(jī),配置Windows操作系統(tǒng)、LC-3仿真機(jī)軟件。

實(shí)驗(yàn)內(nèi)容

ALU數(shù)據(jù)傳送通路和數(shù)據(jù)傳送方式;ALU的算術(shù)運(yùn)算功能及其運(yùn)算原理。

實(shí)驗(yàn)過(guò)程
一、LC-3中幾個(gè)重要的寄存器

通用寄存器(GPR):R0~R7共8個(gè),每個(gè)均為16bit
IR、PC:IR用來(lái)存放本次執(zhí)行的指令,PC用來(lái)存放下一條指令所在的內(nèi)存地址
條件碼:LC-3中有3個(gè)位寄存器,為N、Z、P,一旦GPR的數(shù)據(jù)發(fā)生變化,條件碼的對(duì)應(yīng)一位就會(huì)發(fā)生變化:寫入正數(shù)時(shí),N置1;寫入0時(shí),Z置1;寫入負(fù)數(shù)時(shí),P置1。可以根據(jù)條件碼的變化來(lái)控制指令執(zhí)行的順序。

二、指令介紹
算術(shù)運(yùn)算操作指令: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ù)位于哪個(gè)位置。

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 R5

bit[11:9]R1為目的寄存器,bit[8:6]R4是源寄存器,通過(guò)bit[5]來(lái)判斷bit[4:0]的含義。
如果bit[5]為0,則bit[2:0]為是另一個(gè)源寄存器;
如果bit[5]為1,則bit[4:0]為指令攜帶的立即操作數(shù),16位擴(kuò)展后與源寄存器相加。
上面的例子就是操作碼為ADD,尋址模式是寄存器模式的指令。該指令的操作是讓計(jì)算機(jī)做二進(jìn)制補(bǔ)碼整數(shù)加法,計(jì)算機(jī)尋找的操作數(shù)的位置是位于通用寄存器中的。

三、具體實(shí)驗(yàn)測(cè)試

通過(guò)前面一些鋪墊,對(duì)算術(shù)運(yùn)算指令A(yù)DD有了一定的了解,接下來(lái)就舉一些例子進(jìn)行測(cè)試并具體分析。
(1) bit[5]來(lái)判斷bit[4:0]

0001 010 001 000011 (x1443) ADD R2 R1 R3 (R2 = R1 + R3) Set value R1=3,R3=2,則R2會(huì)被賦值為 5 bit[5]位是0,則011表示另一個(gè)源寄存器R3,也就是 R1+R3—>R2

測(cè)試截圖
如果bit[5]是1,第二個(gè)源操作數(shù)就被包含在指令當(dāng)中,第二個(gè)源操作數(shù)是在執(zhí)行ADD操作之前,將bit[4:0]位執(zhí)行符號(hào)擴(kuò)展到16位得到的。

0001 010 001 100011 (x1463) ADD R2 R1 3 (R2 = R1 + 3) Set value R1=3,R3=2,則R2會(huì)被賦值為 6

測(cè)試截圖

ADD指令的立即操作數(shù)必須位于指令的bit[4:0]位中,也就說(shuō)不是所有的二進(jìn)制補(bǔ)碼整數(shù)都可以是立即數(shù)。

(2)運(yùn)算

0001 001 010 000011 (1283) ADD R1 R2 R3 (R1 = R2 + R3) 令 R2 = x8000, R3 = x8000 則R1 = 1 0000

測(cè)試截圖如下,我們可以看到R1=0000,而并不是 10000,因?yàn)橹荒鼙A袅怂奈?#xff0c;所以將最高位丟掉了。

0101 001 010 000011 (5283) AND R1 R2 R3 (R1 = R2 & R3) 令 R2 = x8000, R3 = x8000 則 R1 = 8000

測(cè)試截圖如下,我們可以看到R1的確等于8000,即8000&8000的結(jié)果
以上兩個(gè)指令,我再重新賦值給R2,R3
Set value R2 = xFFFF, R3 = x8000
ADD預(yù)測(cè) R1 = 1 7FFF
ADD測(cè)試截圖如下,R1 = x7FFF,運(yùn)算溢出,只能保留四位,則丟了掉了最高位的1

AND測(cè)試截圖如下,R1 = x8000



通過(guò)上面兩組數(shù)據(jù),可以看出ADD數(shù)據(jù)運(yùn)算溢出是只保留4位,其余位都丟掉。

(3)實(shí)現(xiàn)減法 x-y

將y取反加1,得到其補(bǔ)碼,再與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)得補(bǔ)碼 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個(gè)數(shù)的和
假設(shè)知道x3100到x3109這10個(gè)地址中儲(chǔ)存的是整數(shù),然后計(jì)算這10個(gè)整數(shù)的和。
第一步,我們先將10個(gè)數(shù)值存儲(chǔ)到x3100到x3109這10個(gè)地址當(dāng)中;
第二步,初始化變量,有三個(gè)變量:當(dāng)前的和(R1初始化為0),沒(méi)有被做加法的整數(shù)的個(gè)數(shù)(R4初始化為10),以及下一個(gè)被加整數(shù)的地址(R2初始化為第一個(gè)整數(shù)的地址,即x3100)。
然后加法開始執(zhí)行。
這個(gè)程序重復(fù)一下過(guò)程:加載10個(gè)數(shù)中的一個(gè)到R3,加到R1中。每執(zhí)行一次加法,就遞增R2, R2指向下一個(gè)要被加的數(shù)據(jù)的地址,并且遞減R4, 就知道還有多少數(shù)據(jù)等待被加。當(dāng)R4等于0時(shí),條件碼Z被置為1,停止循環(huán),即可得到計(jì)算結(jié)果R1。
流程圖如下

指令分析如下 Set value x3100~x3109 x3000 0101 001 001 100000 (5260)AND R1 R1 0 (R1&0 R1清零,存儲(chǔ)和) 程序開始于PC=x3000的位置,第一條指令是清空R1,R1是保存累加的結(jié)果; x3001 0101 100 100 100000 (5920)AND R4 R4 0 (R4&0 R4清零, R4作為計(jì)數(shù)器) x3002 0001 100 100 101010 (192A)ADD R4 R4 10 (R4 = R4+10 賦值數(shù)的個(gè)數(shù)為10) 第二、三條指令是將R4清零,并將10賦值給R4,R4記錄的是有多少數(shù)據(jù)要被加,這個(gè)數(shù)字將會(huì)在做完每一步加法后被減1(由x3007實(shí)現(xiàn)); x3003 1110 010 011111100 (E4FC)LEA R2 x0FC (R2-->PC+x0FC x3100) 第四條指令,將R2加載為地址x3100(被增加了1的PC是x3004, 符號(hào)擴(kuò)展的PC偏移量是x00FC); x3004 0110 011 010 000000 (6680)LDR R3 R2 0 (R2+0-->R3 ) loop 第五條指令,將R2中加載的x3100的內(nèi)容賦值給R3; x3005 0001 010 010 100001 (14A1)ADD R2 R2 1 (R2 = R2+1 指向下一位數(shù)據(jù)) 第六條指令,將R2加1,R2指向了下一個(gè)被加數(shù)的地址; x3006 0001 001 001 000011 (1243)ADD R1 R1 R3 (R1 = R1+ R3) 第七條指令,將取到的數(shù)據(jù)R3賦值累加到R1中; x3007 0001 100 100 111111 (193F)ADD R4 R4 -1 (R4 = R4 - 1,計(jì)數(shù)器減一) x3008 0000 001 111111011 (03FB)BR P (BRP loop x3004) x3009 1111 000000100101 (F025)TRAP HALT (TRAP halt)
小結(jié)

ALU
算術(shù)邏輯單元 (arithmetic and logic unit)
組成:
1)內(nèi)部組成: 加法器AU、邏輯運(yùn)算器、移位器、求補(bǔ)器
2)外部組成: 兩個(gè)輸入緩沖器A和B、輸出緩沖器SUM、進(jìn)位標(biāo)志CF、溢出標(biāo)志OF、符號(hào)標(biāo)志SF、零標(biāo)志ZF

串行加法器:
我們手算加法的時(shí)候,總是先個(gè)位相加,選出結(jié)果和進(jìn)位,再十位相加并加上進(jìn)位,再算出結(jié)果和進(jìn)位… 這就是一個(gè)鏈?zhǔn)降倪^(guò)程,每一位(除第一位外)其結(jié)果的得出都依賴于前一位的進(jìn)位,并且該位運(yùn)算完的進(jìn)位需要提供給下一位才能得出下一位結(jié)果和進(jìn)位,下一位的進(jìn)位再…

基本邏輯單元:全加器FA


兩個(gè)本位加數(shù) Ai和Bi;
低位進(jìn)位Ci-1;
本位和Si
向高位的進(jìn)位 Ci
Si = Ai XOR Bi XOR Ci-1
Ci = Ai·Bi + (Ai+Bi)·Ci-1(邏輯加OR 與 邏輯乘AND)
記Gi=Ai·Bi稱為本位進(jìn)位
記Pi=Ai+Bi稱為傳遞條件,Pi·Ci-1稱為傳遞進(jìn)位
可見:Ci = Gi + Pi·Ci-1
多個(gè)FA串接起來(lái),就組成了串行加法器。
當(dāng)然除了這些還有并行加法器等。

總結(jié)

以上是生活随笔為你收集整理的计算机系统基础实验01运算器算术运算的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。