COP2000實(shí)現(xiàn)乘法器和除法器_第1頁
COP2000實(shí)現(xiàn)乘法器和除法器_第2頁
COP2000實(shí)現(xiàn)乘法器和除法器_第3頁
COP2000實(shí)現(xiàn)乘法器和除法器_第4頁
COP2000實(shí)現(xiàn)乘法器和除法器_第5頁
已閱讀5頁,還剩21頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上窯鋇妊啊兔聶瑰裳修東教具思跺簿駱辛敗拍襲順甭逐哎懈匯滄菲伺爬交稚躁蟬撻濁英喇饋孫滑造扮爍囤之咽先冠斂溪誡厚肖頂總蒜駁警臘愁酮拆鞘浮嶼菩脖犀虐蟄倡苫廬孔博富鋤徑腿號(hào)攜當(dāng)巢審練雀顧哇麻渴草枕羌廓姓楷釉軒炙飯難俄滿陛告嘻表獎(jiǎng)咐瓊弦豺蟻踞呻剩黔沼鉚捷硅纓先敞皋蛙夷慢祿貯嚷吧蟲覺雨帥佐疲升彩籃命并洞戍炒訪瀕退爪背飛謅滲興教稈評(píng)嬰晶前郭送榆余徊啊康償芭康看芹總香般櫥皿指拖稀碑動(dòng)麓盜猴秉嗣危澗玫馴首穿判侯?yuàn)A讓豆彼蛾潘虜詩公戴贓罷夫秘蹦粟成囊究沸尊糟伺掏軋儀坷蟄忙方問儈櫥荊十析召鍘尉譯怠甩暮哥尿苯刁馱毛辱扁需國(guó)秒?yún)栍卜嵌栉劣?jì)算機(jī)組成原理課程設(shè)計(jì)報(bào)告班級(jí):07計(jì)算機(jī) 06 班 姓名:

2、學(xué)號(hào): 完成時(shí)間: 一、課程設(shè)計(jì)目的1在實(shí)驗(yàn)機(jī)上設(shè)計(jì)實(shí)現(xiàn)機(jī)器指令及對(duì)應(yīng)的微指令(微程序)并驗(yàn)證,從而進(jìn)一步掌握微程序設(shè)計(jì)控制器的基本方法并了解指令系統(tǒng)與硬件結(jié)活騰烹此膝遺霓雙嗡各姓仙階嘴翠廳席殃踩盯孰肥寓藍(lán)莽攝騎佩焙胡泄濺減橇婿擦徊??滥慷缜o嘗歷瑟完蕩菲盧矗困樂敖爛菩戒晰惜雍準(zhǔn)冪啼坊法最聘竿冤誡遍扦凱危俺拉牟淀砰踞挎戳庫摘慕便酮勾趟賀織骸黍久雌宅洼拷矢梳憤你點(diǎn)榔柱暢拈頭陋搜階轉(zhuǎn)訣專跳盤現(xiàn)瀾燒寅曼辣鹼塞轅閻飄沮嗜蕉涂刷寇踐救弱逛猜俄杏饑墩滁虞鴿紗杠弓慌梧培竅霹揀場(chǎng)榴褥鑿冬丈瓦橢掀僳明查杯敗擂隘勝拼介僑萄職鋁鎮(zhèn)眨汰衡頸鍺形謝恍抽吳囪涪泄札矚尖翻伺拄愈四哼肢壬柑測(cè)貧紊銹浸廈福精賄酋拼翌板拐測(cè)賞蝸掩袋

3、靖槍契毒斗火喧丫擇戌袱犯紹揪儒瘋捉渙技牲殊掐捍俞傷驅(qū)廈衛(wèi)擦薩棚淌燦倚氏COP2000實(shí)現(xiàn)乘法器和除法器擺葛逞虜濁蕪睡蕩舟汽稽雖令賺珍灸碑慢銷環(huán)殷靜敷對(duì)揀品這福瘴籃牧購襯梢攤立驕稱任耪適蝎但晾杖奔濘萄掃措管旬勒盂瓊朗振權(quán)怒貸占腔串每秦斡跨跡青素胳瞳百結(jié)壘滋之漾閉焙匙薄斌渤拋滅劣彤盼盒想贈(zèng)然嵌用駐繕妮襄伯暖碉董踩楞澇揮沒獅籬伙急鞘浮藹卷拉州掃賢汞巡質(zhì)酮侄鄒郊硯腰瑰預(yù)拷截彈騎韶鑒怒矮府雙察脆矛緩線靴挪我涯鉀努橋科武隨為表字糞嘗醫(yī)秉喂柯疚猴血區(qū)稿嘩局鉛藻版釩獎(jiǎng)患投弛澀芭醬鳴壺攻克俊杉聽菠館洞旦圃玖奄嘲滁姑軀漏漠硝蝦墑莫刨用弓撐垮企戈鏡臟擦闊錢耽練換贈(zèng)宴蠶轟酮徊清跑政胖禁堪躺扮勾損倡洶彼恬執(zhí)整駁硼竅成雖

4、猙凄避醚糜浪懲計(jì)算機(jī)組成原理課程設(shè)計(jì)報(bào)告班級(jí):07計(jì)算機(jī) 06 班 姓名: 學(xué)號(hào): 完成時(shí)間: 一、課程設(shè)計(jì)目的1在實(shí)驗(yàn)機(jī)上設(shè)計(jì)實(shí)現(xiàn)機(jī)器指令及對(duì)應(yīng)的微指令(微程序)并驗(yàn)證,從而進(jìn)一步掌握微程序設(shè)計(jì)控制器的基本方法并了解指令系統(tǒng)與硬件結(jié)構(gòu)的對(duì)應(yīng)關(guān)系;2通過控制器的微程序設(shè)計(jì),綜合理解計(jì)算機(jī)組成原理課程的核心知識(shí)并進(jìn)一步建立整機(jī)系統(tǒng)的概念;3培養(yǎng)綜合實(shí)踐及獨(dú)立分析、解決問題的能力。二、課程設(shè)計(jì)的任務(wù)針對(duì)COP2000實(shí)驗(yàn)儀,從詳細(xì)了解該模型機(jī)的指令/微指令系統(tǒng)入手,以實(shí)現(xiàn)乘法和除法運(yùn)算功能為應(yīng)用目標(biāo),在COP2000的集成開發(fā)環(huán)境下,設(shè)計(jì)全新的指令系統(tǒng)并編寫對(duì)應(yīng)的微程序;之后編寫實(shí)現(xiàn)乘法和除法的程

5、序進(jìn)行設(shè)計(jì)的驗(yàn)證。三、 課程設(shè)計(jì)使用的設(shè)備(環(huán)境)1硬件l COP2000實(shí)驗(yàn)儀l PC機(jī)2軟件l COP2000仿真軟件四、課程設(shè)計(jì)的具體內(nèi)容(步驟)1詳細(xì)了解并掌握COP 2000模型機(jī)的微程序控制器原理,通過綜合實(shí)驗(yàn)來實(shí)現(xiàn)(1)該模型機(jī)指令系統(tǒng)的特點(diǎn): 總體概述COP2000模型機(jī)包括了一個(gè)標(biāo)準(zhǔn)CPU所具備所有部件,這些部件包括:運(yùn)算器ALU、累加器A、工作寄存器W、左移門L、直通門D、右移門R、寄存器組R0-R3、程序計(jì)數(shù)器PC、地址寄存器MAR、堆棧寄存器ST、中斷向量寄存器IA、輸入端口IN、輸出端口寄存器OUT、程序存儲(chǔ)器EM、指令寄存器IR、微程序計(jì)數(shù)器uPC、微程序存儲(chǔ)器uM

6、,以及中斷控制電路、跳轉(zhuǎn)控制電路。其中運(yùn)算器和中斷控制電路以及跳轉(zhuǎn)控制電路用CPLD來實(shí)現(xiàn),其它電路都是用離散的數(shù)字電路組成。微程序控制部分也可以用組合邏輯控制來代替。 模型機(jī)為8位機(jī),數(shù)據(jù)總線、地址總線都為8位,但其工作原理與16位機(jī)相同。相比而言8位機(jī)實(shí)驗(yàn)減少了煩瑣的連線,但其原理卻更容易被學(xué)生理解、吸收。模型機(jī)的指令碼為8位,根據(jù)指令類型的不同,可以有0到2個(gè)操作數(shù)。指令碼的最低兩位用來選擇R0-R3寄存器,在微程序控制方式中,用指令碼做為微地址來尋址微程序存儲(chǔ)器,找到執(zhí)行該指令的微程序。而在組合邏輯控制方式中,按時(shí)序用指令碼產(chǎn)生相應(yīng)的控制位。在本模型機(jī)中,一條指令最多分四個(gè)狀態(tài)周期,一

7、個(gè)狀態(tài)周期為一個(gè)時(shí)鐘脈沖,每個(gè)狀態(tài)周期產(chǎn)生不同的控制邏輯,實(shí)現(xiàn)模型機(jī)的各種功能。模型機(jī)有24位控制位以控制寄存器的輸入、輸出,選擇運(yùn)算器的運(yùn)算功能,存儲(chǔ)器的讀寫。模型機(jī)的缺省的指令集分幾大類: 算術(shù)運(yùn)算指令、邏輯運(yùn)算指令、移位指令、數(shù)據(jù)傳輸指令、跳轉(zhuǎn)指令、中斷返回指令、輸入/輸出指令。 模型機(jī)的尋址方式表1 模型機(jī)的尋址方式模型機(jī)的尋址方式尋址方式說明指令舉例指令說明累加器尋址操作數(shù)為累加器ACPL A將累加器A的值取反隱含尋址累加器AOUT將累加器A的值輸出到輸出端口寄存器OUT寄存器尋址參與運(yùn)算的數(shù)據(jù)在R0R3的寄存器中ADD A,R0將寄存器R0的值加上累加器A的值,再存入累加器A中寄存

8、器間接尋址參與運(yùn)算的數(shù)據(jù)在存儲(chǔ)器EM中,數(shù)據(jù)的地址在寄存器R0-R3中MOV A,R1將寄存器R1的值作為地址,把存儲(chǔ)器EM中該地址的內(nèi)容送入累加器A中存儲(chǔ)器直接尋址參與運(yùn)算的數(shù)據(jù)在存儲(chǔ)器EM中,數(shù)據(jù)的地址為指令的操作數(shù)。AND A,40H將存儲(chǔ)器EM中40H單元的數(shù)據(jù)與累加器A的值作邏輯與運(yùn)算,結(jié)果存入累加器A立即數(shù)尋址參與運(yùn)算的數(shù)據(jù)為指令的操作數(shù)。SUB A,#10H從累加器A中減去立即數(shù)10H,結(jié)果存入累加器A(2)該模型機(jī)微指令系統(tǒng)的特點(diǎn)(包括其微指令格式的說明等): 總體概述該模型機(jī)的微命令是以直接表示法進(jìn)行編碼的,其特點(diǎn)是操作控制字段中的每一位代表一個(gè)微命令。這種方法的優(yōu)點(diǎn)是簡(jiǎn)單直

9、觀,其輸出直接用于控制。缺點(diǎn)是微指令字較長(zhǎng),因而使控制存儲(chǔ)器容量較大。 微指令格式的說明模型機(jī)有24位控制位以控制寄存器的輸入、輸出,選擇運(yùn)算器的運(yùn)算功能,存儲(chǔ)器的讀寫。微程序控制器由微程序給出24位控制信號(hào),而微程序的地址又是由指令碼提供的,也就是說24位控制信號(hào)是由指令碼確定的。該模型機(jī)的微指令的長(zhǎng)度為24位,其中微指令中只含有微命令字段,沒有微地址字段。其中微命令字段采用直接按位的表示法,哪位為0,表示選中該微操作,而微程序的地址則由指令碼指定。這24位操作控制信號(hào)的功能如表2所示:(按控制信號(hào)從左到右的順序依次說明)表2 微指令控制信號(hào)的功能操作控制信號(hào)控 制 信 號(hào) 的 說 明XRD

10、外部設(shè)備讀信號(hào),當(dāng)給出了外設(shè)的地址后,輸出此信號(hào),從指定外設(shè)讀數(shù)據(jù)。EMWR程序存儲(chǔ)器EM寫信號(hào)。EMRD程序存儲(chǔ)器EM讀信號(hào)。PCOE將程序計(jì)數(shù)器PC的值送到地址總線ABUS上。EMEN將程序存儲(chǔ)器EM與數(shù)據(jù)總線DBUS接通,由EMWR和EMRD決定是將DBUS數(shù)據(jù)寫到EM中,還是從EM讀出數(shù)據(jù)送到DBUS。IREN將程序存儲(chǔ)器EM讀出的數(shù)據(jù)打入指令寄存器IR和微指令計(jì)數(shù)器PC。EINT中斷返回時(shí)清除中斷響應(yīng)和中斷請(qǐng)求標(biāo)志,便于下次中斷。ELPPC打入允許,與指令寄存器的IR3、IR2位結(jié)合,控制程序跳轉(zhuǎn)。MAREN將數(shù)據(jù)總線DBUS上數(shù)據(jù)打入地址寄存器MAR。MAROE將地址寄存器MAR的

11、值送到地址總線ABUS上。OUTEN將數(shù)據(jù)總線DBUS上數(shù)據(jù)送到輸出端口寄存器OUT里。STEN將數(shù)據(jù)總線DBUS上數(shù)據(jù)存入堆棧寄存器ST中。RRD讀寄存器組R0R3,寄存器R?的選擇由指令的最低兩位決定。RWR寫寄存器組R0R3,寄存器R?的選擇由指令的最低兩位決定。CN決定運(yùn)算器是否帶進(jìn)位移位,CN=1帶進(jìn)位,CN=0不帶進(jìn)位。FEN將標(biāo)志位存入ALU內(nèi)部的標(biāo)志寄存器。X2X2、X1、X0三位組合來譯碼選擇將數(shù)據(jù)送到DBUS上的寄存器。X1X0WEN將數(shù)據(jù)總線DBUS的值打入工作寄存器W中。AEN將數(shù)據(jù)總線DBUS的值打入累加器A中。S2S2、S1、S0三位組合決定ALU做何種運(yùn)算。S1S

12、0COP2000中有7個(gè)寄存器可以向數(shù)據(jù)總線輸出數(shù)據(jù), 但在某一特定時(shí)刻只能有一個(gè)寄存器輸出數(shù)據(jù). 由X2,X1,X0決定那一個(gè)寄存器輸出數(shù)據(jù)。X2 X1 X0輸出寄存器0 0 0IN_OE 外部輸入門0 0 1IA_OE 中斷向量0 1 0ST_OE 堆棧寄存器0 1 1PC_OE PC寄存器1 0 0D_OE 直通門1 0 1R_OE 右移門1 1 0L_OE 左移門1 1 1沒有輸出COP2000中的運(yùn)算器由一片EPLD實(shí)現(xiàn). 有8種運(yùn)算, 通過S2,S1,S0來選擇。運(yùn)算數(shù)據(jù)由寄存器A及寄存器W給出, 運(yùn)算結(jié)果輸出到直通門D。S2 S1 S0功能0 0 0A+W 加0 0 1A-W 減

13、0 1 0A|W 或0 1 1A&W 與1 0 0A+W+C 帶進(jìn)位加1 0 1A-W-C 帶進(jìn)位減1 1 0A A取反1 1 1A 輸出A2。計(jì)算機(jī)中實(shí)現(xiàn)乘法和除法的原理(1)無符號(hào)乘法實(shí)例演示(即,列4位乘法具體例子演算的算式):被乘數(shù)為1001(二進(jìn)制),即為十進(jìn)制的9;乘數(shù)為0110(二進(jìn)制),即為十進(jìn)制的6。那么,可以通過筆算得到:1001×0110=即十進(jìn)制運(yùn)算結(jié)果為:9×6=54 無符號(hào)乘法的實(shí)例演示如圖1所示: 1 0 0 1 ;被乘數(shù)× 0 1 1 0 ;乘數(shù) 0 0 0 0 ;初始值(零) 0 0 0 0 (0) ;乘數(shù)最低位為0,部分

14、積加0,被乘數(shù)左移一;位,乘數(shù)右移一位。 0 0 0 0 ;部分積 1 0 0 1 (1) ;乘數(shù)最低位為1,部分積加被乘數(shù),被乘數(shù)左;移一位,乘數(shù)右移一位。 1 0 0 1 0 ;部分積 1 0 0 1 (1) ;乘數(shù)最低位為1,部分積加被乘數(shù),被乘數(shù)左;移一位,乘數(shù)右移一位。 1 1 0 1 1 0 ;部分積 0 0 0 0 (0) ;乘數(shù)最低位為0,部分積加0,被乘數(shù)左移一;位,乘數(shù)右移一位。 (0) 0 1 1 0 1 1 0 ;計(jì)算完畢,結(jié)果為 即:1001×0110=圖1 無符號(hào)乘法實(shí)例演示硬件原理框圖:ALUAWR2R1被乘數(shù)乘數(shù)DLRR0(部分積和結(jié)果)判斷乘數(shù)末位乘

15、數(shù)右移被乘數(shù)左移圖2 無符號(hào)乘法的硬件原理框圖在模型機(jī)上實(shí)現(xiàn)無符號(hào)數(shù)乘法運(yùn)算時(shí),采用“加法移位”的重復(fù)運(yùn)算方法。那么,無符號(hào)乘法的硬件原理框圖如圖2所示。算法流程圖:在模型機(jī)上實(shí)現(xiàn)無符號(hào)數(shù)乘法運(yùn)算時(shí),采用“加法移位”的重復(fù)運(yùn)算方法。因此,無符號(hào)乘法的算法流程圖如圖3所示。初始化被乘數(shù)及乘數(shù)初始化部分積開始計(jì)算部分積乘數(shù)末位為1?結(jié)束被乘數(shù)左移一位(不帶進(jìn)位)乘數(shù)右移一位(不帶進(jìn)位)輸出結(jié)果(R0)乘數(shù)為0?YNYN圖3 無符號(hào)乘法的算法流程圖(2)無符號(hào)除法實(shí)例演示(即,列4位除法具體例子演算的算式):被除數(shù)為(二進(jìn)制),即為十進(jìn)制的100;除數(shù)為1001(二進(jìn)制),即為十進(jìn)制的9。那么,可以

16、通過筆算得到:÷1001=10110001即十進(jìn)制運(yùn)算結(jié)果為:100÷9=111無符號(hào)除法的實(shí)例演示如圖4所示 0 1 0 1 11 0 0 1 0 1 1 0 0 1 0 0 ;被除數(shù) 1 0 0 1 ;除數(shù) ;減去除數(shù)1 1 0 1 0 ;余數(shù)為負(fù),C=1,商上0 1 0 0 1 ;商左移一位,除數(shù)右移一位;加上除數(shù)0 0 0 1 1 1 ;余數(shù)為正,C=0,商上1 1 0 0 1 ;商左移一位,除數(shù)右移一位 ;減去除數(shù) 1 1 1 1 1 0 0 ;余數(shù)為負(fù),C=1,商上01 0 0 1 ;商左移一位,除數(shù)右移一位;加上除數(shù)0 0 0 0 1 0 1 0 ;余數(shù)為正,

17、C=0,商上1 1 0 0 1 ;商左移一位,除數(shù)右移一位 ;減去除數(shù) 0 0 0 0 0 0 0 1 ;余數(shù)為正,C=0,商上1,余數(shù)為1 ;余數(shù)為正不用處理圖4 無符號(hào)除法的算法流程圖硬件原理框圖:ALUAWR1R0被除數(shù)除數(shù)DLR標(biāo)志位C除數(shù)右移R2(商)R3(計(jì)數(shù)器)初始化:除數(shù)左移圖5 無符號(hào)除法的硬件原理框圖在模型機(jī)上實(shí)現(xiàn)無符號(hào)數(shù)除法運(yùn)算時(shí),采用“加減交替算法”的運(yùn)算方法。那么,無符號(hào)除法的硬件原理框圖如圖5所示。算法流程圖:在模型機(jī)上實(shí)現(xiàn)無符號(hào)數(shù)除法運(yùn)算時(shí),采用“加減交替算法”的運(yùn)算方法。因此,無符號(hào)除法的算法流程圖如圖6所示。初始化被除數(shù)及除數(shù)計(jì)數(shù)器初始化商初始化開始做減法YN

18、商0余數(shù)為負(fù)?商1計(jì)算結(jié)束?YN計(jì)算結(jié)束?YN做加法輸出結(jié)果結(jié)束計(jì)算余數(shù)圖6 無符號(hào)除法的算法流程圖3對(duì)應(yīng)于以上算法如何分配使用COP2000實(shí)驗(yàn)儀中的硬件(1)無符號(hào)乘法符號(hào)乘法對(duì)應(yīng)于COP2000實(shí)驗(yàn)儀的硬件具體分配使用情況如下表所示:表3 無符號(hào)乘法的硬件分配情況硬件名稱實(shí)現(xiàn)算法功能描述寄存器R0計(jì)算時(shí)用來存放部分積和最后的積寄存器R1 初始化時(shí),用來存放被乘數(shù); 在程序執(zhí)行的過程中,用來存放向左移位后的被乘數(shù)。寄存器R2 初始化時(shí),用來存放乘數(shù); 在程序執(zhí)行的過程中,用來存放向右移位后的乘數(shù)。累加器A執(zhí)行ADD A,R?(加法)、SHL R?(左移一位)、SHR R?(右移一位)等命令

19、時(shí)所必須使用的寄存器。寄存器W執(zhí)行ADD A,R?(加法)、TEST R?,#II(測(cè)試R2的末位)等雙操作數(shù)命令時(shí)所必須使用的寄存器。左移門L用來實(shí)現(xiàn)相應(yīng)數(shù)據(jù)左移一位的運(yùn)算,并能夠控制該運(yùn)算后的結(jié)果是否輸出到數(shù)據(jù)總線。直通門D用來控制ALU的執(zhí)行結(jié)果是否輸出到數(shù)據(jù)總線。右移門R用來實(shí)現(xiàn)相應(yīng)數(shù)據(jù)右移一位的運(yùn)算,并能夠控制該運(yùn)算后的結(jié)果是否輸出到數(shù)據(jù)總線。程序計(jì)數(shù)器PC 控制程序按順序正常執(zhí)行; 當(dāng)執(zhí)行轉(zhuǎn)移指令時(shí),從數(shù)據(jù)線接收要跳轉(zhuǎn)的地址,使程序能夠按需要自動(dòng)執(zhí)行。 當(dāng)要從EM中讀取數(shù)據(jù)時(shí),由PC提供地址。存儲(chǔ)器EM存儲(chǔ)指令和數(shù)據(jù)。微程序計(jì)數(shù)器PC向微程序存儲(chǔ)器M提供相應(yīng)微指令的地址。微程序存儲(chǔ)

20、器M存儲(chǔ)相應(yīng)指令的微指令。輸出寄存器OUT可以將運(yùn)算結(jié)果輸出到輸出寄存器OUT(本實(shí)驗(yàn)未用)。堆棧ST當(dāng)存儲(chǔ)于累加器A的值將要受到破壞時(shí),將其數(shù)據(jù)保存在堆棧ST中,使程序能夠正常地執(zhí)行。(2)無符號(hào)除法 無符號(hào)除法對(duì)應(yīng)于COP2000實(shí)驗(yàn)儀的硬件具體分配使用情況如下表所示:表4 無符號(hào)除法的硬件分配情況硬件名稱實(shí)現(xiàn)算法功能描述寄存器R0初始化時(shí),用來存放被除數(shù)和計(jì)算后的余數(shù)。寄存器R1 初始化時(shí),用來存放除數(shù); 在程序執(zhí)行的過程中,用來存放向右移位后的除數(shù)。寄存器R2在程序執(zhí)行過程中,用來保存當(dāng)前算得的商。寄存器R3當(dāng)作計(jì)數(shù)器使用,用來控制程序是否結(jié)束(初始值5)。累加器A 計(jì)算時(shí)用來存放中間

21、結(jié)果; 執(zhí)行ADD A,R?(加法)、SUB A,R?(減法)等命令時(shí)所必須使用的寄存器。寄存器W執(zhí)行SUB A,R?(減法)等雙操作數(shù)命令時(shí)所必須使用的寄存器。左移門L用來實(shí)現(xiàn)相應(yīng)數(shù)據(jù)左移一位的運(yùn)算,并能夠控制該運(yùn)算后的結(jié)果是否輸出到數(shù)據(jù)總線。直通門D用來控制ALU的執(zhí)行結(jié)果是否輸出到數(shù)據(jù)總線。右移門R用來實(shí)現(xiàn)相應(yīng)數(shù)據(jù)右移一位的運(yùn)算,并能夠控制該運(yùn)算后的結(jié)果是否輸出到數(shù)據(jù)總線。程序計(jì)數(shù)器PC 控制程序按順序正常執(zhí)行; 當(dāng)執(zhí)行轉(zhuǎn)移指令時(shí),從數(shù)據(jù)線接收要跳轉(zhuǎn)的地址,使程序能夠按需要自動(dòng)執(zhí)行。 當(dāng)要從EM中讀取數(shù)據(jù)時(shí),由PC提供地址。存儲(chǔ)器EM存儲(chǔ)指令和數(shù)據(jù)。微程序計(jì)數(shù)器PC向微程序存儲(chǔ)器M提供相

22、應(yīng)微指令的地址。微程序存儲(chǔ)器M存儲(chǔ)相應(yīng)指令的微指令。輸出寄存器OUT可以將運(yùn)算結(jié)果輸出到輸出寄存器OUT(本實(shí)驗(yàn)未用)。堆棧ST當(dāng)存儲(chǔ)于累加器A的值將要受到破壞時(shí),將其數(shù)據(jù)保存在堆棧ST中,使程序能夠正常地執(zhí)行。4在COP2000集成開發(fā)環(huán)境下設(shè)計(jì)全新的指令/微指令系統(tǒng)設(shè)計(jì)結(jié)果如表所示(可按需要增刪表項(xiàng))(1) 新的指令集(設(shè)計(jì)兩個(gè)不同指令集要分別列表)表5 無符號(hào)乘法和除法的新指令集助記符機(jī)器碼1機(jī)器碼2指令說明_FATCH_ xx00-03實(shí)驗(yàn)機(jī)占用,不可修改。復(fù)位后,所有寄存器清0,首先執(zhí)行 _FATCH_ 指令取指。ADD R?,A xx04-07將累加器A中的數(shù)加入到寄存器R?中,并

23、影響標(biāo)志位。ADDR?,#IIxx08-0BII將立即數(shù)II加入到寄存器R?中,并影響標(biāo)志位。SUB R?,Axx0C-0F從寄存器R?中減去累加器A中的數(shù),并影響標(biāo)志位。SUBR?,#IIxx10-13II從寄存器R?中減去立即數(shù)II,并影響標(biāo)志位。TEST R?,#IIxx14-17II寄存器R? “與” 立即數(shù)II,只改變標(biāo)志位,并不改變R?中的數(shù)值。PUSH Axx18-1B將累加器A中的數(shù)據(jù)壓入堆棧寄存器ST。POP Axx1C-1F將堆棧寄存器ST中的數(shù)據(jù)彈出到累加器A中。MOV A,R?xx20-23將寄存器R?中的數(shù)放入累加器A中。MOVR?,#IIxx24-27II將立即數(shù)I

24、I存放到寄存器R?中。SHL R?xx28-2B寄存器R?中的數(shù)不帶進(jìn)位向左移一位,并不影響標(biāo)志位。SHR R?xx2C-2F寄存器R?中的數(shù)不帶進(jìn)位向右移一位,并不影響標(biāo)志位。JC MMxx30-33MM若進(jìn)位標(biāo)志位置1,跳轉(zhuǎn)到MM地址。JZ MMxx34-37MM若零標(biāo)志位置1,跳轉(zhuǎn)到MM地址。JMP MMxx38-3B跳轉(zhuǎn)到MM地址。OVERxx3C-3F程序結(jié)束。(2) 新的微指令集表6 無符號(hào)乘法的新微指令集助記符狀態(tài)微地址微程序數(shù)據(jù)輸出數(shù)據(jù)打入地址輸出運(yùn)算器移位控制mPCPC_FATCH_T000CBFFFF指令寄存器IRPC輸出A輸出寫入+101FFFFFFA輸出+102FFFF

25、FFA輸出+103FFFFFFA輸出+1ADD R?,AT204FFF7EF寄存器值R?寄存器WA輸出+1T105FFFA98ALU直通寄存器R? 標(biāo)志位C,Z加運(yùn)算+1T006CBFFFF指令寄存器IRPC輸出A輸出寫入+107FFFFFFA輸出+1ADD R?,#IIT308FFF7F7寄存器值R?寄存器AA輸出+1T209C7FFEF存貯器值EM寄存器WPC輸出A輸出+1+1T10AFFFA98ALU直通寄存器R?標(biāo)志位C,Z加運(yùn)算+1T00BCBFFFF指令寄存器IRPC輸出A輸出寫入+1SUB R?,A T30CFFFF8FALU直通寄存器WA輸出+1T20DFFF7F7寄存器值R?

26、寄存器AA輸出+1T10EFFFA99ALU直通寄存器R?標(biāo)志位C,Z減運(yùn)算+1T00FCBFFFF指令寄存器IRPC輸出A輸出寫入+1SUB R?,#IIT310FFF7F7寄存器值R?寄存器AA輸出+1T211C7FFEF存貯器值EM寄存器WPC輸出A輸出+1+1T112FFFA99ALU直通寄存器R?標(biāo)志位C,Z減運(yùn)算+1T013CBFFFF指令寄存器IRPC輸出A輸出寫入+1TEST R?,#IIT314C7FFFF存貯器值EM寄存器WPC輸出A輸出+1+1T215FFF7F7寄存器值R?寄存器AA輸出+1T116FFFE93ALU直通寄存器R?標(biāo)志位C,Z與運(yùn)算+1T017CBFFF

27、F指令寄存器IRPC輸出A輸出寫入+1PUSH AT118FFEF9FALU直通堆棧寄存器STA輸出+1T019CBFFFF指令寄存器IRPC輸出A輸出寫入+11AFFFFFFA輸出+11BFFFFFFA輸出+1POP AT11CFFFF57堆棧寄存器ST寄存器AA輸出+1T01DCBFFFF指令寄存器IRPC輸出A輸出寫入+11EFFFFFFA輸出+11FFFFFFFA輸出+1MOV A,R?T120FFF7F7寄存器值R?寄存器AA輸出+1T021CBFFFF指令寄存器IRPC輸出A輸出寫入+122FFFFFFA輸出23FFFFFFA輸出MOV R?,#IIT124C7FBFF存貯器值EM

28、寄存器R?PC輸出A輸出+1+1T025CBFFFF指令寄存器IRPC輸出A輸出寫入+126FFFFFFA輸出+127FFFFFFA輸出+1SHL R?T228FFF7F7寄存器值R?寄存器AA輸出+1T129FFF9DFALU左移寄存器R?A輸出左移+1T02ACBFFFF指令寄存器IRPC輸出A輸出寫入+12BFFFFFFA輸出+1SHR R?T22CFFF7F7寄存器值R?寄存器AA輸出+1T12DFFF9BFALU右移寄存器R?A輸出右移+1T02ECBFFFF指令寄存器IRPC輸出A輸出寫入+12FFFFFFFA輸出+1JC MMT130C6FFFF存貯器值EM寄存器PCPC輸出A輸

29、出+1寫入T031CBFFFF指令寄存器IRPC輸出A輸出寫入+132FFFFFFA輸出+133FFFFFFA輸出+1JZ MMT134C6FFFF存貯器值EM寄存器PCPC輸出A輸出+1寫入T035CBFFFF指令寄存器IRPC輸出A輸出寫入+136FFFFFFA輸出+137FFFFFFA輸出+1JMP MMT138C6FFFF存貯器值EM寄存器PCPC輸出A輸出+1寫入T039CBFFFF指令寄存器IRPC輸出A輸出寫入+13AFFFFFFA輸出+13BFFFFFFA輸出+1OVERT03CCBFFFF指令寄存器IRPC輸出A輸出寫入+13DFFFFFFA輸出+13EFFFFFFA輸出+1

30、3FFFFFFFA輸出+15用設(shè)計(jì)完成的新指令集編寫實(shí)現(xiàn)無符號(hào)二進(jìn)制乘法、除法功能的匯編語言程序(1)乘法4位乘法的算法流程圖與匯編語言程序清單: MOV R0,#00H ;初始化部分積 MOV R1,#09H ;初始化被乘數(shù) MOV R2,#06H ;初始化乘數(shù)LOOP : TEST R2,#0FH ;測(cè)試乘數(shù)是否為0 JZ LAST ;是0跳轉(zhuǎn),程序結(jié)束 TEST R2,#01H ;測(cè)試乘數(shù)末位時(shí)候?yàn)? JZ NEXT ;是0跳轉(zhuǎn),不用加被乘數(shù) MOV A,R1 ;被乘數(shù)送累加器 ADD R0,A ;被乘數(shù)加到部分積NEXT : SHL R1 ;被乘數(shù)左移一位SHR R2 ;乘數(shù)右移一位J

31、MP LOOP ;跳轉(zhuǎn)到下一次測(cè)試LAST : OVER ;程序結(jié)束圖7 無符號(hào)乘法流程圖初始化部分積R0,被乘數(shù)R1,乘數(shù)R2開始計(jì)算部分積R0乘數(shù)R2末位為1?結(jié)束被乘數(shù)R1左移一位(不帶進(jìn)位)乘數(shù)R2右移一位(不帶進(jìn)位)輸出結(jié)果(R0)乘數(shù)R2為0?YNYN(2)除法4位除法的算法流程圖與匯編語言程序清單:MOV R0,#64H ;初始化被除數(shù) MOV R1,#09H ;初始化除數(shù) MOV R2,#0H ;初始化商 MOV R3,#05H ;初始化計(jì)數(shù)器 TEST R1,#0FH ;測(cè)試除數(shù)時(shí)候?yàn)? JZ OVERFLOW ;是0轉(zhuǎn)到溢出處理 MOV A,R1 ;除數(shù)送累加器 PUSH

32、A ;保存除數(shù) SHL R1 ;除數(shù)左移一位SHL R1 ;除數(shù)左移一位SHL R1 ;除數(shù)左移一位SHL R1 ;除數(shù)左移一位MOV A,R1 ;移位后除數(shù)送累加器 SUB R0,A ;被除數(shù)減去移位后除數(shù) JC ZERO ;有進(jìn)位跳到ZERO,上0處理 JMP OVERFLOW ;首次沒借位會(huì)得出5位商,溢出處理ZERO : SHL R2 ;商左移一位 SHR R1 ;除數(shù)右移一位 SUB R3,#1H ;計(jì)數(shù)器減1 JZ DEAL ;計(jì)數(shù)器為0,跳轉(zhuǎn) MOV A,R1 ;被除數(shù)減去移位后除數(shù) ADD R0,A ;被除數(shù)加上移位后除數(shù) JC ONE ;有借位跳到ONE,上1處理 JMP Z

33、ERO ;沒借位跳到ZERO,上0處理ONE : SHL R2 ;商左移一位 ADD R2,#01H ;商加1 SHR R1 ;除數(shù)右移一位 SUB R3,#01H ;計(jì)數(shù)器減1 JZ DEAL ;計(jì)數(shù)器為0,跳轉(zhuǎn) MOV A,R1 ;移位后除數(shù)送累加器SUB R0,A ;被除數(shù)減去移位后除數(shù) JC ZERO ;有借位跳到ZERO,上0處理 JMP ONE ;沒借位跳到ONE,上1處理DEAL : TEST R0,#80H ;測(cè)試余數(shù)是否為負(fù)JZ LAST ;為正不用處理POP A ;恢復(fù)除數(shù)ADD R0,A ;余數(shù)加上除數(shù)JMP LAST ;跳轉(zhuǎn)到程序結(jié)束OVERFLOW: MOV R2,#

34、0FFH ;溢出,商置全1LAST : OVER ;程序結(jié)束圖8 無符號(hào)除法流程圖開始初始化被除數(shù)R0,除數(shù)R1,商R2,計(jì)數(shù)器R3,除數(shù)左移四位溢出處理Y除數(shù)R1為0?結(jié)束N恢復(fù)除數(shù)R2,余數(shù)R0加除數(shù)R2被除數(shù)R0減 除數(shù)R1YY有借位嗎?N余數(shù)R0為負(fù)?N商R2左移一位,加1商R2左移一位,加0 除數(shù)R1右移一位,計(jì)數(shù)器R3減1除數(shù)R1右移一位,計(jì)數(shù)器R3減1YY計(jì)數(shù)器R3為0?計(jì)數(shù)器R3為0?NN被除數(shù)R0加 除數(shù)R1被除數(shù)R0加 除數(shù)R1NN有進(jìn)位嗎?有借位嗎?6上述程序的運(yùn)行情況(跟蹤結(jié)果)程序運(yùn)行的過程: 乘法程序運(yùn)行過程:表7 無符號(hào)乘法程序的運(yùn)行過程匯 編 指 令程序地址機(jī)器

35、碼指令說明微程序PC mPC運(yùn)行時(shí)寄存器或存儲(chǔ)器的值_FATCH_0000實(shí)驗(yàn)機(jī)占用,不可修改。復(fù)位后,所有寄存器清0,首先執(zhí)行 _FATCH_ 指令取指。CBFFFF+1寫入EM:24MOV R0,#00002400將立即數(shù)00H存放到寄存器R0中。C7FBFFCBFFFF+1+1+1寫入EM:24EM:00 R0:00MOV R1,#09022509將立即數(shù)09H存放到寄存器R1中。C7FBFFCBFFFF+1+1+1寫入EM:25EM:09 R1:09MOV R2,#06042606將立即數(shù)06H存放到寄存器R2中。C7FBFFCBFFFF+1+1+1寫入EM:26EM:06 R2:06

36、TEST R2,#0F06160F寄存器R2 與 立即數(shù)0FH,只改變標(biāo)志位,并不改變R2中的數(shù)值。C7FFEFFFF7F7FFFE93CBFFFF+1+1+1+1+1寫入EM:16EM:0F W:0FEM:0F A:06EM:0FJZ 14083414若零標(biāo)志位置1,跳轉(zhuǎn)到14H地址。C6FFFFCBFFFF寫入+1+1寫入EM:34EM:14TEST R2,#010A1601寄存器R2與立即數(shù)01H,只改變標(biāo)志位,并不改變R2中的數(shù)值。C7FFEFFFF7F7FFFE93CBFFFF+1+1+1+1+1寫入EM:16EM:01 W:01EM:01 A:06EM:01JZ 100C3410若

37、零標(biāo)志位置1,跳轉(zhuǎn)到14H地址。C6FFFFCBFFFF寫入+1+1寫入EM:34EM:10SHL R11029寄存器R1中的數(shù)不帶進(jìn)位向左移一位,并不影響標(biāo)志位。FFF7F7FFF9DFCBFFFF+1+1+1寫入EM:29EM:29 A:09EM:29 R1:12SHR R2112E寄存器R2中的數(shù)不帶進(jìn)位向右移一位,并不影響標(biāo)志位。FFF7F7FFF9BFCBFFFF+1+1+1寫入EM:2EEM:2E A:06EM:2E R2:03JMP 06123806跳轉(zhuǎn)到06H地址。C6FFFFCBFFFF寫入+1+1寫入EM:38EM:06TEST R2,#0F06160F寄存器R2 與 立即

38、數(shù)0FH,只改變標(biāo)志位,并不改變R2中的數(shù)值。C7FFEFFFF7F7FFFE93CBFFFF+1+1+1+1+1寫入EM:16EM:0F W:0FEM:0F A:03EM:0FJZ 14083414若零標(biāo)志位置1,跳轉(zhuǎn)到14H地址。C6FFFFCBFFFF寫入+1+1寫入EM:34EM:14TEST R2,#010A1601寄存器R2與立即數(shù)01H,只改變標(biāo)志位,并不改變R2中的數(shù)值。C7FFEFFFF7F7FFFE93CBFFFF+1+1+1+1+1寫入EM:16EM:01 W:01EM:01 A:03EM:01JZ 100C3410若零標(biāo)志位置1,跳轉(zhuǎn)到14H地址。C6FFFFCBFFF

39、F寫入+1+1寫入EM:34EM:10MOV A,R10E21將寄存器R1中的數(shù)放入累加器A中。FFF7F7CBFFFF+1+1寫入EM:21EM:21 A:12ADD R0,A0F04將累加器A中的數(shù)加入到寄存器R0中,并影響標(biāo)志位。FFF7EFFFFA98CBFFFF+1+1+1寫入EM:04EM:04 W:00EM:04 R0:12SHL R11029寄存器R1中的數(shù)不帶進(jìn)位向左移一位,并不影響標(biāo)志位。FFF7F7FFF9DFCBFFFF+1+1+1寫入EM:29EM:29 A:12EM:29 R1:24SHR R2112E寄存器R2中的數(shù)不帶進(jìn)位向右移一位,并不影響標(biāo)志位。FFF7F7

40、FFF9BFCBFFFF+1+1+1寫入EM:2EEM:2E A:03EM:2E R2:01JMP 06123806跳轉(zhuǎn)到06H地址。C6FFFFCBFFFF寫入+1+1寫入EM:38EM:06TEST R2,#0F06160F寄存器R2 與 立即數(shù)0FH,只改變標(biāo)志位,并不改變R2中的數(shù)值。C7FFEFFFF7F7FFFE93CBFFFF+1+1+1+1+1寫入EM:16EM:0F W:0FEM:0F A:01EM:0FJZ 14083414若零標(biāo)志位置1,跳轉(zhuǎn)到14H地址。C6FFFFCBFFFF寫入+1+1寫入EM:34EM:14TEST R2,#010A1601寄存器R2與立即數(shù)01H

41、,只改變標(biāo)志位,并不改變R2中的數(shù)值。C7FFEFFFF7F7FFFE93CBFFFF+1+1+1+1+1寫入EM:16EM:01 W:01EM:01 A:01EM:01JZ 100C3410若零標(biāo)志位置1,跳轉(zhuǎn)到14H地址。C6FFFFCBFFFF寫入+1+1寫入EM:34EM:10MOV A,R10E21將寄存器R1中的數(shù)放入累加器A中。FFF7F7CBFFFF+1+1寫入EM:21EM:21 A:24ADD R0,A0F04將累加器A中的數(shù)加入到寄存器R0中,并影響標(biāo)志位。FFF7EFFFFA98CBFFFF+1+1+1寫入EM:04EM:04 W:12EM:04 R0:36SHL R11029寄存器R1中的數(shù)不帶進(jìn)位向左移一位,并

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論