計算機組成原理課程設計_第1頁
計算機組成原理課程設計_第2頁
計算機組成原理課程設計_第3頁
計算機組成原理課程設計_第4頁
計算機組成原理課程設計_第5頁
已閱讀5頁,還剩31頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、計算機組成原理課程設計報告班級:09計算機 03 班 姓名: * 學號: * 完成時間: 2012年 1月3日 一、課程設計目的1在實驗機上設計實現(xiàn)機器指令及對應的微指令(微程序)并驗證,從而進一步掌握微程序設計控制器的基本方法并了解指令系統(tǒng)與硬件結構的對應關系;2通過控制器的微程序設計,綜合理解計算機組成原理課程的核心知識并進一步建立整機系統(tǒng)的概念;3培養(yǎng)綜合實踐及獨立分析、解決問題的能力。二、課程設計的任務針對COP2000實驗儀,從詳細了解該模型機的指令/微指令系統(tǒng)入手,以實現(xiàn)乘法和除法運算功能為應用目標,在COP2000的集成開發(fā)環(huán)境下,設計全新的指令系統(tǒng)并編寫對應的微程序;之后編寫實

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

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

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

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

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

7、的 說 明XRD外部設備讀信號,當給出了外設的地址后,輸出此信號,從指定外設讀數(shù)據(jù)。EMWR程序存儲器EM寫信號。EMRD程序存儲器EM讀信號。PCOE將程序計數(shù)器PC的值送到地址總線ABUS上。EMEN將程序存儲器EM與數(shù)據(jù)總線DBUS接通,由EMWR和EMRD決定是將DBUS數(shù)據(jù)寫到EM中,還是從EM讀出數(shù)據(jù)送到DBUS。IREN將程序存儲器EM讀出的數(shù)據(jù)打入指令寄存器IR和微指令計數(shù)器PC。EINT中斷返回時清除中斷響應和中斷請求標志,便于下次中斷。ELPPC打入允許,與指令寄存器的IR3、IR2位結合,控制程序跳轉。MAREN將數(shù)據(jù)總線DBUS上數(shù)據(jù)打入地址寄存器MAR。MAROE將地

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

9、何種運算。S1S0COP2000中有7個寄存器可以向數(shù)據(jù)總線輸出數(shù)據(jù), 但在某一特定時刻只能有一個寄存器輸出數(shù)據(jù). 由X2,X1,X0決定那一個寄存器輸出數(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中的運算器由一片EPLD實現(xiàn). 有8種運算, 通過S2,S1,S0來選擇。運算數(shù)據(jù)由寄存器A及寄存器W給出, 運算結果輸出到直通門D。S2 S1 S0功能0 0 0A+W 加0

10、0 1A-W 減0 1 0A|W 或0 1 1A&W 與1 0 0A+W+C 帶進位加1 0 1A-W-C 帶進位減1 1 0A A取反1 1 1A 輸出A 2。計算機中實現(xiàn)乘法和除法的原理(1)無符號乘法實例演示(即,列4位乘法具體例子演算的算式):以0011×0100為例0 0 1 1 被乘數(shù) 0 1 0 0 乘數(shù)_ 0 0 0 0 部分積為0 0 0 0 0 (0) 乘數(shù)最低位為0,部分積加0,被乘數(shù)左移_ 一位,乘數(shù)右移一位。 0 0 0 0 部分積 0 0 0 0 (0) 乘數(shù)最低位為0,部分積加0,被乘數(shù)左移_ 一位,乘數(shù)右移一位。 0 0 0 0 部分積 1 1

11、 0 0 (1) 乘數(shù)最低位為1,部分積累加被乘數(shù),被乘_ 數(shù)左移一位,乘數(shù)右移一位。 1 1 0 0 部分積 0 0 0 0 (0) 乘數(shù)最低位為0,部分積加0,被乘數(shù)左移_ 一位,乘數(shù)右移一位。 (0) 1 1 0 0 計算完畢,結果為00001100 即:0011×0100=00001100硬件原理框圖:R0,被乘數(shù),左移中間結果送A被乘數(shù)送WR3,部分積,最終積R1,乘 數(shù),右移 乘法指令硬件原理框圖開始始初始化 被乘數(shù),乘數(shù),積算法流程圖: 初始化 NNYY乘數(shù)末位為1?計算部分積 被乘數(shù)左移一位,乘數(shù)右移一位乘數(shù)為0?結束(2)無符號除法實例演示(即,列4位除法具體例子演

12、算的算式):以01001010÷1000為例被除數(shù):01001010除數(shù):1000 00001001 00001000 00000001 00000010 一位 00001000 00000101 00000101 00001000 00001010 00001000 _ 00000010 硬件原理框圖:中間結果送A,作為被減數(shù)被除數(shù)/中間結果與除數(shù)做差大于0,結果即為余數(shù)被除數(shù),余數(shù)減法有進位相應位置為0,否則為1除數(shù)送W,作為減數(shù)被除數(shù)右移,下一位落下算法流程圖:開始被除數(shù),除數(shù),商,余數(shù)初始化被除數(shù)右移四位得中間結果中間結果=中間結果-除數(shù)>0?YN商的第五位為0;商的第

13、五位為1;被除數(shù)第四位=0?YNs中間結果左移1位加1中間結果左移1位中間結果=中間結果-除數(shù)>0?NY 商的第四位為0;商的第四位為1;YN被除數(shù)第三位=0?中間結果左移1位加1中間結果左移1位中間結果=中間結果-除數(shù)>0? 求得商,余數(shù) 除法指令算法路程圖3對應于以上算法如何分配使用COP2000實驗儀中的硬件(1)無符號乘法表3 無符號乘法的硬件分配情況硬件名稱實現(xiàn)算法功能描述寄存器R0 初始化時,用來存放被乘數(shù); 在程序執(zhí)行的過程中,用來存放左移后的被乘數(shù)。寄存器R1 始化時,用來 存放乘數(shù); 在程序執(zhí)行的過程中,用來存放右移后的乘數(shù)。寄存器R2用來存放部分積和最終結果累加

14、器A執(zhí)行ADD A,R?(加法)、SUB A,#II (減法),SAL A(左移一位)、SHR A(右移一位)等命令時所必須使用的寄存器。寄存器W執(zhí)行ADD A,R?(加法)、SUB R?,#II(減法)等雙操作數(shù)命令時所必須使用的寄存器。左移門L用來實現(xiàn)相應數(shù)據(jù)左移一位的運算,并能夠控制該運算后的結果是否輸出到數(shù)據(jù)總線。直通門D用來控制ALU的執(zhí)行結果是否輸出到數(shù)據(jù)總線。右移門R用來實現(xiàn)相應數(shù)據(jù)右移一位的運算,并能夠控制該運算后的結果是否輸出到數(shù)據(jù)總線。程序計數(shù)器PC 控制程序按順序正常執(zhí)行; 當執(zhí)行轉移指令時,從數(shù)據(jù)線接收要跳轉的地址,使程序能夠按需要自動執(zhí)行。 當要從EM中讀取數(shù)據(jù)時,由

15、PC提供地址。存儲器EM存儲指令和數(shù)據(jù)。微程序計數(shù)器PC向微程序存儲器M提供相應微指令的地址。微程序存儲器M存儲相應指令的微指令。(2)無符號除法表4 無符號除法的硬件分配情況硬件名稱實現(xiàn)算法功能描述寄存器R0初始化時,用來存放被除數(shù)。寄存器R1初始化時,用來存放除數(shù);寄存器R2在程序執(zhí)行過程中,用來保存當前算得的商。寄存器R3程序運行過程中用來存放對被除數(shù)操作后的結果,最后用于保存余數(shù)。累加器A 計算時用來存放中間結果; 執(zhí)行ADD A,R?(加法)、SUB A,R?(減法)等命令時所必須使用的寄存器。寄存器W執(zhí)行SUB A,R?(減法)等雙操作數(shù)命令時所必須使用的寄存器。左移門L用來實現(xiàn)相

16、應數(shù)據(jù)左移一位的運算,并能夠控制該運算后的結果是否輸出到數(shù)據(jù)總線。直通門D用來控制ALU的執(zhí)行結果是否輸出到數(shù)據(jù)總線。右移門R用來實現(xiàn)相應數(shù)據(jù)右移一位的運算,并能夠控制該運算后的結果是否輸出到數(shù)據(jù)總線。程序計數(shù)器PC 控制程序按順序正常執(zhí)行; 當執(zhí)行轉移指令時,從數(shù)據(jù)線接收要跳轉的地址,使程序能夠按需要自動執(zhí)行。 當要從EM中讀取數(shù)據(jù)時,由PC提供地址。存儲器EM存儲指令和數(shù)據(jù)。微程序計數(shù)器PC向微程序存儲器M提供相應微指令的地址。微程序存儲器M存儲相應指令的微指令。輸出寄存器OUT可以將運算結果輸出到輸出寄存器OUT(本實驗未用)。堆棧ST當存儲于累加器R0的值將要受到破壞時,將其數(shù)據(jù)保存在

17、堆棧ST中,使程序能夠正常地執(zhí)行。4在COP2000集成開發(fā)環(huán)境下設計全新的指令/微指令系統(tǒng)設計結果如表所示(可按需要增刪表項)(1) 新的指令集(設計兩個不同指令集要分別列表)助記符機器碼1機器碼2指令說明PUSH A000001xx 04-07將寄存器A中的數(shù)存到堆棧寄存器ST。POP A000010xx08-0B將堆棧寄存器ST中的數(shù)存到A。ADD A,#II000011xx0C-0F II將寄存器A中的數(shù)與立即數(shù)II相加送A 并影響標志位ADD A,R?000100xx10-13將寄存器R?中的數(shù)與寄存器A中的數(shù)相加送R?,并影響標志位LD R?,#II000101xx14-17II將

18、立即數(shù)II中的數(shù)送寄存器R?LD R?,A000110xx18-1B將寄存器A中的數(shù)送至寄存器R?中LD A,R?000111xx1C-1F將寄存器R中的數(shù)送至寄存器A中HR A001010xx 28-2B寄存器A中的數(shù)不帶進位右移一位,并影響標志位SAL A001011xx2C-2F寄存器A中的數(shù)不帶進位左移一位,并影響標志位SHR A001100xx30-33寄存器A中的數(shù)帶進位向右移一位,并影響標志位SUB A,#II001101xx34-37II將寄存器A中的數(shù)與立即數(shù)II相減送至寄存器A并影響標志位ADD R?,#II001110xx38-3BII將寄存器R?中的數(shù)與立即數(shù)相加送至R

19、?并影響標志位ADD R?,A001111xx3C-3F將寄存器A中的數(shù)與R?中的數(shù)相加送至R?,并影響標志位SUB R?,#II010000x40-43II將寄存器R?中的數(shù)與立即數(shù)II相減送至R?并影響標志位SUB A,R?010001xx44-47將寄存器A中的數(shù)與寄存器R?中的數(shù)相減送至A中,并影響標志位AND R?,#II010010xx48-4BII將寄存器R?中的數(shù)與立即數(shù)II相與送至R?中GOTO MM010011xx4C-4FMM無條件跳轉至MMGC MM010100xx50-53MM如果零標志位為1 ,跳轉至MMGZ MM010101xx54-57MM如果進位標志位為1 ,

20、跳轉至MM下圖為實驗過程中指令系統(tǒng)的截圖(2) 新的微指令集助記符狀態(tài)微地址微程序數(shù)據(jù)輸出數(shù)據(jù)打入地址輸出運算器移位控制mPCPC_FATCH_T0->00CBFFFF浮空指令寄存器IRPC輸出A輸出寫入+101FFFFFF浮空浮空A輸出+102FFFFFF浮空浮空A輸出+103FFFFFF浮空浮空A輸出+1PUSH AT104FFFF9FALU直通堆棧寄存器ST浮空A輸出+1T005CBFFFF浮空指令寄存器IRPC輸出A輸出寫入+106FFFFFF浮空浮空A輸出+107FFFFFF浮空浮空A輸出+1POP AT108FFFF57堆棧寄存器ST寄存器A浮空A輸出+1T009CBFFFF

21、浮空指令寄存器IRPC輸出A輸出寫入+10AFFFFFF浮空浮空A輸出+10BFFFFFF浮空浮空A輸出+1ADD A,#IIT20CC7FFFF存貯器值EM寄存器W 標志位C,ZPC輸出A輸出+1+1T10DFFFF90ALU直通寄存器A浮空加運算+1T00ECBFFFF浮空指令寄存器IRPC輸出A輸出寫入+10FFFFFFF浮空浮空A輸出+1T210FFF7EF寄存器值R?寄存器W浮空A輸出+1T111FFFF90ALU直通寄存器A 標志位C,Z浮空加運算+1T012CBFFFF浮空指令寄存器IRPC輸出A輸出寫入+113FFFFFF浮空浮空A輸出+1ADD A,R?T114C7FBFF存

22、貯器值EM寄存器R?PC輸出A輸出+1+1T015CBFFFF浮空指令寄存器IRPC輸出A輸出寫入+116FFFFFF浮空浮空A輸出+117FFFFFF浮空浮空A輸出+118FFFFFF浮空浮空A輸出19FFFFFF浮空浮空A輸出1AFFFFFF浮空浮空A輸出1BFFFFFF浮空浮空A輸出LD A,R?T11CFFF7F0寄存器值R?寄存器A浮空加運算T01DCBFFFF浮空指令寄存器IRPC輸出A輸出寫入+11EFFFFFF浮空浮空A輸出+11FFFFFFF浮空浮空A輸出+1UNDEF20FFFFFF浮空浮空A輸出+121FFFFFF浮空浮空A輸出+122FFFFFF浮空浮空A輸出+123F

23、FFFFF浮空浮空A輸出+1UNDEF24FFFFFF浮空浮空A輸出+125FFFFFF浮空浮空A輸出+126FFFFFF浮空浮空A輸出+127FFFFFF浮空浮空A輸出+1HR AT128FFFFB7ALU右移寄存器A浮空A輸出帶進位右移+1T029CBFFFF浮空指令寄存器IRPC輸出A輸出寫入+12AFFFFFF浮空浮空A輸出+12BFFFFFF浮空浮空A輸出+1SAL AT12CFFFCD7ALU左移寄存器A,標志位C,Z浮空A輸出左移+1T02DCBFFFF浮空指令寄存器IRPC輸出A輸出寫入+12EFFFFFF浮空浮空A輸出+12FFFFFFF浮空浮空A輸出+1SHR AT130F

24、FFFB7ALU右移寄存器A 標志位C,Z浮空A輸出帶進位右移+1T031CBFFFF浮空指令寄存器IRPC輸出A輸出寫入+132FFFFFF浮空浮空A輸出+133FFFFFF浮空浮空A輸出+1SUB A,#IIT234C7FEE9存貯器值EM寄存器W 標志位C,ZPC輸出減運算+1+1T135FFFF97ALU直通寄存器A浮空A輸出+1T036CBFFFF浮空指令寄存器IRPC輸出A輸出寫入+137FFFFFF浮空浮空A輸出+1ADD R?,#IIT338C7FFE8存貯器值EM寄存器WPC輸出加運算+1+1T239FFF7F7寄存器值R?寄存器A浮空A輸出+1T13AFFFB90ALU直通

25、寄存器R?寄存器A浮空加運算+1T03BCBFFFF浮空指令寄存器IRPC輸出A輸出寫入+1ADD R?,#IIT23CFFF7EF寄存器值R?寄存器W浮空A輸出+1T13DFFFA98ALU直通寄存器R?標志位C,Z浮空加運算+1T03ECBFFFF浮空指令寄存器IRPC輸出A輸出寫入+13FFFFFFF浮空浮空A輸出+1SUB A,#IIT240C7FFFF存貯器值EM寄存器A寄存器WPC輸出減運算+1+1T141FFF7F7寄存器值R?寄存器A浮空A輸出+1T042CBFFFF浮空指令寄存器IRPC輸出A輸出寫入+143FFFFFF浮空浮空A輸出+1SUB A,R?T244FFF7EF寄

26、存器值R?寄存器W浮空A輸出+1T145FFFE91ALU直通寄存器A標志位C,Z浮空減運算+1T046CBFFFF浮空指令寄存器IRPC輸出A輸出寫入+147FFFFFF浮空浮空A輸出+1AND R?,#IIT348C7FFEF存貯器值EM寄存器WPC輸出A輸出+1+1T249FFF7F7寄存器值R?寄存器A浮空A輸出+1T14AFFFA93ALU直通寄存器R?寄存器A標志位C,Z浮空與運算+1T04BCBFFFF浮空指令寄存器IRPC輸出A輸出寫入+1GOTO MMT14CC6FFFF存貯器值EM寄存器PCPC輸出A輸出+1寫入T04DCBFFFF浮空指令寄存器IRPC輸出A輸出寫入+14

27、EFFFFFF浮空浮空A輸出+14FFFFFFF浮空浮空A輸出+1GC MMT150C6FFFF存貯器值EM寄存器PCPC輸出A輸出+1寫入T051CBFFFF浮空指令寄存器IRPC輸出A輸出寫入+152FFFFFF浮空浮空A輸出+153FFFFFF浮空浮空A輸出+1GZ MMT154C6FFFF存貯器值EM寄存器PCPC輸出A輸出+1寫入T055CBFFFF浮空指令寄存器IRPC輸出A輸出寫入+1如下為實驗過程中新建微指令的截圖5用設計完成的新指令集編寫實現(xiàn)無符號二進制乘法、除法功能的匯編語言程序(1)乘法4位乘法的算法流程圖與匯編語言程序清單:LD R0,#03HLD R1,#04HLD

28、R2,#00HLOOP1:LD A,R1SHR ALD R1,AGC LOOP2LD A,R0SAL ALD R0,AGOTO LOOP1LOOP2:LD A,R0ADD R2,ALD A,R1SUB A,#00HGZ FINALGOTO LOOP1FINAL:END(3) 除法(選作)4位除法的算法流程圖與匯編語言程序清單:LDR0,#4AH;被除數(shù)LDR1,#08H;除數(shù)LDR2,#00H;商LDR3,#4AH;余數(shù);R3暫時存放中間結果;切記不能用兩個存儲器操作數(shù)LD A,R0HRAHRAHRA ;第一次-不帶進位右移三位SUB A,R1 PUSH A ;中間商 ,暫存第一次差GCLS0

29、;減不開轉LS0,減得開繼續(xù)ADDR2,#08H;商的第四位為1,帶寄存器的加減法都會使A中值改變 POP ALOOP0:PUSH A ANDR0,#04H;得被除數(shù)第三位SUBR0,#00H;判斷被除數(shù)第三位是否為0POP A ;中間結果GZNEXT0;若為0,跳轉至NEXT0;若非0,繼續(xù) SALAADDA,#01H ;非0即1 ,還原為1GOTOTAG0NEXT0: SALA;直接左移,原 被乘數(shù)的第三位(中間結果的最后一位)為0TAG0:SUBA,R1 ;繼續(xù)做差 ,需要帶進位GCLS1;減不開轉LS1 PUSH A;減得開,繼續(xù) ADDR2,#04H;商的第三位為1 POP ALOO

30、P1:PUSH ALD A,R3 LD R0,APOP APUSH AANDR0,#02HSUBR0,#00H POP AGZNEXT1;被除數(shù)的第二位為0 SALAADDA,#01HGOTOTAG1NEXT1:SALATAG1:SUBA,R1GCLS2;減不開轉2 PUSH A ADDR2,#02H;商的第二位為1 POP ALOOP2:PUSH ALD A,R3 LD R0,APOP APUSH AANDR0,#01HSUBR0,#00H POP AGZNEXT2;被除數(shù)的第一位為0SALAADDA,#01HGOTOTAG2NEXT2:SALATAG2:PUSH A LD A,R3 LD

31、R0,A POP APUSHASUBA,R1GCNEXT3 PUSH AADDR2,#01H;商的第一位為1 POP A GOTOTAG3NEXT3: ADDR2,#00H;商的第一位為0 POPATAG3:LDR3,AGOTO FINALLS0:ADDA,R1GOTOLOOP0LS1:ADDA,R1GOTOLOOP1LS2:ADDA,R1GOTOLOOP2FINAL:END6上述程序的運行情況(跟蹤結果)無符號乘法程序的運行過程匯 編 指 令程序地址機器碼指令說明微程序PC mPC運行時寄存器或存儲器的值_FATCH_000000實驗機占用,不可修改。復位后,所有寄存器清0,首先執(zhí)行 _FA

32、TCH_ 指令取指。CBFFFF+1寫入EM:14LD R0,#03001403將立即數(shù)03H送至寄存器R0C7FBFFCBFFFF+1+1+1寫入EM:14R0:00R1:00R2:00A:00LD R1,#04H021504將立即數(shù)04H送至寄存器R1C7FBFFCBFFFF+1+1+1寫入EM:15R0:03R2:00R1:00A:00LD R2,#00H041600將立即數(shù) 00H送至寄存器R2C7FBFFCBFFFF+1+1+1寫入EM:16R0:03R1:04R2:00A:00LD A,R1061D將寄存器R1中的數(shù)送至A寄存器FFF7F0CBFFFF+1+1寫入EM:1DR0:0

33、3R1:04R2:00SHR A0730將寄存器A中的數(shù)據(jù)帶進位右移一位,帶標志位FFFEB7CBFFFF+1+1寫入A:04R0:03R1:04R2:00EM:30LD R1,A0819將寄存器A中的數(shù)據(jù)送至R1FFFB9FCBFFFF+1+1寫入A:02EM:19R0:03R1:04R2:00GC 10095010如果進位標志位1 則跳轉至10C6FFFFCBFFFF寫入+1+1寫入EM:50R0:03R1:02R2:00A:02LD A,R00B1C將寄存器R0中的數(shù)據(jù)送至寄存器AFFF7F0CBFFFF+1寫入+1EM:1CA:02R0:03R1:02R2:00SAL A0C2C寄存器

34、A中的數(shù)據(jù)不帶進位左移一位FFFCD7CBFFFF+1寫入+1EM:2CA:03R0:03R1:02R2:00LD R0,A0D18將寄存器A中的數(shù)據(jù)送至寄存器R0FFFB9FCBFFFF+1+1寫入EM:18R1:02A:06R0:03R2:00GOTO 060E4C06無條件跳轉至06C6FFFFCBFFFF寫入+1+1寫入EM:4CR0:06R1:02A:06R2:00LD A,R0101C將寄存器R0中的數(shù)據(jù)送至寄存器AFFF7F0CBFFFF+1+1寫入EM:1CA:00R0:0CR1:02R2:00ADD R2,A113E將寄存器R2中的數(shù)據(jù)域寄存器A中的數(shù)據(jù)相加送至A,影響標志位

35、FFF7EFCBFFFF+1+1EM:3EA:0CR0:0CR1:02R2:00LD A,R1121D將寄存器R1中的數(shù)據(jù)送至A+1+1寫入EM:1DA:0CR0:0CR1:02R2:00SUB A,#00H133400將寄存器A中的數(shù)據(jù)與立即數(shù)A相減送至A,影響標志位+1+1寫入EM:34R2:0CA:0CR0:0CR1:02GZ 19155419無條件跳轉至19+1寫入寫入+1EM:54R2:0CA:0CR0:0CR1:02實驗過程中的 截圖如下:無符號除法程序的運行過程匯 編 指 令程序地址機器碼指令說明微程序PC mPC運行時寄存器或存儲器的值LDR0,#4AH00144A將立即數(shù)4A

36、H送至R0寄存器C7FBFFCBFFFF+1+1寫入+1EM:14A:00R0:4AR1:00R2:00R3:00W:00LDR1,#08H021508將立即數(shù)08H送至R1寄存器C7FBFFCBFFFF+1+1寫入+1EM:08A:00R0:4AR1:08R2:00R3:00W:00LDR2,#00H041600將立即數(shù)00H送至R2寄存器C7FBFFCBFFFF+1+1寫入+1EM:00A:00R0:4AR1:00R2:00R3:00W:00LDR3,#4AH06174A將立即數(shù)4AH送至R3寄存器C7FBFFCBFFFF+1+1寫入+1EM:4AA:00R0:4AR1:08R2:00R3

37、:4AW:00LD A,R0 081C 將寄存器R0中的數(shù)送至A寄存器FFF7F0CBFFFF+1+1寫入EM:14A:4AR0:4AR1:08R2:00R3:4AW:00HRA0928將寄存器A中的數(shù)不帶進位右移一位FFFFB7CBFFFF+1+1寫入EM:28A:25R0:4AR1:08R2:00R3:4AW:00HRA0A28將寄存器A中的數(shù)不帶進位右移一位FFFFB7CBFFFF+1+1寫入EM:28A:12R0:4AR1:08R2:00R3:4AW:00HRA0B28將寄存器A中的數(shù)不帶進位右移一位FFFFB7CBFFFF+1+1寫入EM:28A:09R0:4AR1:08R2:00R

38、3:4AW:00SUBA,R10C45將寄存器A中的數(shù)與R1中的數(shù)帶相減送至A,影響標志位FFF7EFFFFE91CBFFFF+1+1+1寫入EM:45A:09R0:4AR1:08R2:00R3:4AW:00PUSH A0D04將寄存器A中的數(shù)壓棧FFFE9FCBFFFF+1寫入+1EM:04A:01R0:4AR1:08R2:00R3:4AW:08GC670E5067若進位標志位1,跳轉至67C6FFFFCBFFFF寫入+1+1寫入EM:67A:01R0:4AR1:08R2:00R3:4AW:08ADDR2,#08H103A08將寄存器R2中的數(shù)與立即數(shù)08H相加,送至R2,影響標志位C7FF

39、E8FFF7F7FFFF57+1寫入+1EM:08A:08R0:4AR1:08R2:08R3:4AW:08POP A1208將堆棧寄存器中的數(shù)送至AFFFF57CBFFFF+1寫入+1EM:08A:01R0:4AR1:08R2:08R3:4AW:08PUSH A1304將寄存器A中的數(shù)壓棧至堆棧寄存器FFEF9FCBFFFF+1+1寫入+1EM:04A:01R0:4AR1:08R2:08R3:4AW:08ANDR0,#04H144804將立即數(shù)04H與R0中的數(shù)想與送至R0C7FFEFFFF7F7FFFA93CBFFFF+1+1+1+1寫入+1EM:04A:00R0:00R1:08R2:08R3:4AW:04SUBR0,#00H164000將R0中的數(shù)與立即數(shù)00H想減送至R0,影響標志位C7FFE1FFF7F7CBFFFF+1+1+1寫入+1+1寫入EM:00A:00R0:-R1:08R2:08R3:4AW:00POP A1808將堆棧寄存器中的數(shù)送至AFFFF57CBFFFF+1+1寫入EM:00A:00R0:00R1:08R2:08R3:4AW:00GZ20195420如果零標志位為0 ,跳轉至20C6FFFFCBFFFF寫入+1+1寫入EM:00A:00R0:00R1:

溫馨提示

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

評論

0/150

提交評論