版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、計算機組成原理課程設(shè)計報告班級:物聯(lián)網(wǎng) 1301 班 姓名: 石杰元 學號: 20133717 完成時間: 2016/1/10 一、課程設(shè)計目的1在實驗機上設(shè)計實現(xiàn)機器指令及對應的微指令(微程序)并驗證,從而進一步掌握微程序設(shè)計控制器的基本方法并了解指令系統(tǒng)與硬件結(jié)構(gòu)的對應關(guān)系;2通過控制器的微程序設(shè)計,綜合理解計算機組成原理課程的核心知識并進一步建立整機系統(tǒng)的概念;3培養(yǎng)綜合實踐及獨立分析、解決問題的能力。二、課程設(shè)計的任務(wù)針對COP2000實驗儀,從詳細了解該模型機的指令/微指令系統(tǒng)入手,以實現(xiàn)乘法和除法運算功能為應用目標,在COP2000的集成開發(fā)環(huán)境下,設(shè)計全新的指令系統(tǒng)并編寫對應的微
2、程序;之后編寫實現(xiàn)乘法和除法的程序進行設(shè)計的驗證。三、 課程設(shè)計使用的設(shè)備(環(huán)境)1硬件l COP2000實驗儀l PC機2軟件l COP2000仿真軟件四、課程設(shè)計的具體內(nèi)容(步驟)1詳細了解并掌握COP 2000模型機的微程序控制器原理,通過綜合實驗來實現(xiàn)該模型機指令系統(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,以及中斷控制電路、跳轉(zhuǎn)控制電路。其中運算器和中斷控制電路以及跳轉(zhuǎn)控制電路用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ù)運算指令、邏輯運算指令、移位指令、數(shù)據(jù)傳輸指令、跳轉(zhuǎn)指令、中斷返回指令、輸入/輸出指令。用戶可以通過COP2000計算機組成原理實驗軟件或組成原理實驗儀來設(shè)計自己的指令集。模型機的尋址方式分五種:累加器尋址: 操作數(shù)為累加器A,例如“CPL A”是將累加器A值取反,還有些指令是隱含尋址累加器A,例如“OUT”是將累加器A的值輸出到輸出端口寄存器OUT。寄存器尋址: 參與運算的數(shù)據(jù)在R
5、0-R3的寄存器中,例如 “ADD A,R0”指令是將寄存器R0的值加上累加器A的值,再存入累加器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的值做邏輯與運算,結(jié)果存入累加器A。立即數(shù)尋址: 參與運算的數(shù)據(jù)為指令的操作數(shù)。例如 “SUB A,#10H”是從累加器A中減去立即數(shù)10H,結(jié)果存入累加器A。該模型機微指
6、令系統(tǒng)的特點(包括其微指令格式的說明等): 總體概述該模型機的微命令是以直接表示法進行編碼的,其特點是操作控制字段中的每一位代表一個微命令。這種方法的優(yōu)點是簡單直觀,其輸出直接用于控制。缺點是微指令字較長,因而使控制存儲器容量較大。 微指令格式的說明模型機有24位控制位以控制寄存器的輸入、輸出,選擇運算器的運算功能,存儲器的讀寫。微程序控制器由微程序給出24位控制信號,而微程序的地址又是由指令碼提供的,也就是說24位控制信號是由指令碼確定的。該模型機的微指令的長度為24位,其中微指令中只含有微命令字段,沒有微地址字段。其中微命令字段采用直接按位的表示法,哪位為0,表示選中該微操作,而微程序的地
7、址則由指令碼指定。這24位操作控制信號的功能如表2所示:(按控制信號從左到右的順序依次說明)表2 微指令控制信號的功能操作控制信號控 制 信 號 的 說 明XRD外部設(shè)備讀信號,當給出了外設(shè)的地址后,輸出此信號,從指定外設(shè)讀數(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中斷返回時清除中斷響應和中斷請求標志,便于下次
8、中斷。ELPPC打入允許,與指令寄存器的IR3、IR2位結(jié)合,控制程序跳轉(zhuǎn)。MAREN將數(shù)據(jù)總線DBUS上數(shù)據(jù)打入地址寄存器MAR。MAROE將地址寄存器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上的寄
9、存器。X1X0WEN將數(shù)據(jù)總線DBUS的值打入工作寄存器W中。AEN將數(shù)據(jù)總線DBUS的值打入累加器A中。S2S2、S1、S0三位組合決定ALU做何種運算。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中的ALU由一片CPLD實現(xiàn).
10、有8種運算, 通過S2,S1,S0來選擇。運算數(shù)據(jù)由寄存器A及寄存器W給出, 運算結(jié)果輸出到直通門D。S2 S1 S0功能0 0 0A+W 加0 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 輸出A2. 計算機中實現(xiàn)乘法和除法的原理(1)無符號乘法實例演示(4位乘法具體例子演算的算式):乘數(shù)與被乘數(shù)假設(shè)為1100(12)與1000(8),結(jié)果應該為96(十進制)。 運算圖示為: 1 1 0 0 被乘數(shù) × 1 0 0 0 乘數(shù) 0 0 0 0 初始部分積 0 0 0 0 乘
11、數(shù)最低位為0,部分積加0,被乘 數(shù)左移一位,乘數(shù)右移一位。 0 0 0 0 0 0 0 0 情況同上 0 0 0 0 0 0 0 0 0 情況同上 0 0 0 0 0 0 1 1 0 0 乘數(shù)最低位為1,部分積加被乘數(shù),被乘數(shù)左移一位,乘數(shù)右移一位 (0) 1 1 0 0 0 0 0 計算完畢,運算結(jié)果為01100000(96)算法流程圖:開始 初始化乘數(shù),被乘數(shù),部分積(0)被乘數(shù)是否為0?乘數(shù)是否為0?YYNYN 乘數(shù)最低位是否為1?部分積加上被乘數(shù),被乘數(shù)左移1位,乘數(shù)右移1位結(jié)果(部分積)輸出結(jié)束 硬件原理框圖:寄存器R0(存放部分積)DRL寄存器R1(存放被乘數(shù))ALU寄存器R2(存
12、放乘數(shù))WA相關(guān)說明: 將R1打入A中,R0存放的為部分積,部分積初值為0,若乘數(shù)最低位為1,之后被乘數(shù)與部分積通過ALU加和,結(jié)果存于R0中。 由于上一步,R1(即被乘數(shù))已在A中,所以直接通過對X2X1X0的控制可實現(xiàn)A的邏輯左移1位。 之后將R2(乘數(shù))打入A中,通過對X2X1X0的控制可實現(xiàn)A的邏輯右移1位 。 期間有判斷乘數(shù)、被乘數(shù)是否為0的操作。(2)無符號除法實例演示(8位被除數(shù),4位除數(shù),具體例子演算的算式):(86除以10):商 0 初始商1 0 1 0 0 1 0 1 0 1 1 0 除數(shù)與被除數(shù) 1 0 1 0 0 0 0 0 由除數(shù)初始化假除數(shù),此處將除數(shù)左移4 位即可
13、,其他情況需要另外考慮移位數(shù) 0 1 0 1 0 1 1 0 判斷被除數(shù)與假除數(shù)的關(guān)系,小于假除數(shù)(0) 0 1 0 1 0 0 0 0 假除數(shù)右移一位,商左移一位 0 0 0 0 0 1 1 0 被除數(shù)大于假除數(shù),相減產(chǎn)生新的被除數(shù)(01) 0 0 1 0 1 0 0 0 假除數(shù)右移一位,商左移一位并加一 0 0 0 0 0 1 1 0 被除數(shù)小于假除數(shù)(010) 0 0 0 1 0 1 0 0 假除數(shù)右移一位,商左移一位 0 0 0 0 0 1 1 0 被除數(shù)小于假除數(shù)(0100) 0 0 0 0 1 0 1 0 假除數(shù)右移一位,商左移一位 0 0 0 0 0 1 1 0 被除數(shù)小于假除數(shù)
14、(01000) 0 0 0 0 0 1 0 1 假除數(shù)右移一位,商左移一位 此時假除數(shù)小于除數(shù),算法結(jié)束此時商為01000余數(shù)為00000110。算法流程圖:開始NN初始化被除數(shù)(R0),除數(shù)(R1),假除數(shù)(R2),商(R3)除數(shù)是否為0?被除數(shù)是否大于假除數(shù)?假除數(shù)是否小于除數(shù)?商設(shè)為FFH,余數(shù)設(shè)為FFH(出錯)NYY被除數(shù)是否為0?商為0,余數(shù)為0YN求取假除數(shù)結(jié)束 (此時被除數(shù)即為余數(shù)) Y商左移1位之后加1,被除數(shù)減去假除數(shù)得到新的被除數(shù),假除數(shù)右移一位商左移1位,假除數(shù)右移一位硬件原理框圖:比較大小,得出商寄存器R0(存放被除數(shù))DRL比較大小,假除數(shù)小時退出右移寄存器R1(存放
15、除數(shù))ALU寄存器R3(存放商)寄存器R2(存放假除數(shù))WA左移 退出時,余數(shù)存于R0中,商存于R3中3對應于以上算法如何分配使用COP2000實驗儀中的硬件(初步分配,設(shè)計完成后再將準確的使用情況填寫在此處)符號乘法對應于COP2000實驗儀的硬件具體分配使用情況如下表所示:表 無符號乘法的硬件分配情況硬件名稱實現(xiàn)算法功能描述寄存器R0計算時用來存放部分積和最后的積寄存器R1 初始化時,用來存放被乘數(shù); 在程序執(zhí)行的過程中,用來存放向左移位后的被乘數(shù)。寄存器R2 初始化時,用來存放乘數(shù); 在程序執(zhí)行的過程中,用來存放向右移位后的乘數(shù)。累加器A執(zhí)行ADD R?,A(加法)、SHL R?(左移一
16、位)、SHR R?(右移一位)等命令時所必須使用的寄存器。寄存器W執(zhí)行ADD R?,A(加法)、TEST R?,#II(測試與)等雙操作數(shù)命令時所必須使用的寄存器。左移門L用來實現(xiàn)相應數(shù)據(jù)左移一位的運算,并能夠控制該運算后的結(jié)果是否輸出到數(shù)據(jù)總線。直通門D用來控制ALU的執(zhí)行結(jié)果(未經(jīng)移位)是否輸出到數(shù)據(jù)總線。右移門R用來實現(xiàn)相應數(shù)據(jù)右移一位的運算,并能夠控制該運算后的結(jié)果是否輸出到數(shù)據(jù)總線。程序計數(shù)器PC 控制程序按順序正常執(zhí)行; 當執(zhí)行轉(zhuǎn)移指令時,從數(shù)據(jù)線接收要跳轉(zhuǎn)的地址,使程序能夠按需要自動執(zhí)行。 當要從EM中讀取數(shù)據(jù)時,由PC提供地址。存儲器EM存儲指令和數(shù)據(jù)。微程序計數(shù)器PC向微程序
17、存儲器M提供相應微指令的地址。微程序存儲器M存儲相應指令的微指令,微程序。輸出寄存器OUT可以將運算結(jié)果輸出到輸出寄存器OUT(本實驗未用)。堆棧ST可以用來暫存操作數(shù)或者對寄存器值進行保護(本實驗未用)表 無符號除法的硬件分配情況硬件名稱實現(xiàn)算法功能描述寄存器R0存放被除數(shù),最后余數(shù)所在地寄存器R1初始化時,用來存放除數(shù);寄存器R2 初始化時,用來存放除數(shù); 存放移位后的假除數(shù); 在程序執(zhí)行的過程中,用來存放向右移位后的假除數(shù)。寄存器R3用來存放商;累加器A執(zhí)行SUB R?,A(減法)、SHL R?(左移一位)、SHR R?(右移一位)等命令時所必須使用的寄存器。寄存器W執(zhí)行SUB R?,A
18、(加法)、TEST R?,#II(測試與)等雙操作數(shù)命令時所必須使用的寄存器。左移門L用來實現(xiàn)相應數(shù)據(jù)左移一位的運算,并能夠控制該運算后的結(jié)果是否輸出到數(shù)據(jù)總線。直通門D用來控制ALU的執(zhí)行結(jié)果(未經(jīng)移位)是否輸出到數(shù)據(jù)總線。右移門R用來實現(xiàn)相應數(shù)據(jù)右移一位的運算,并能夠控制該運算后的結(jié)果是否輸出到數(shù)據(jù)總線。程序計數(shù)器PC 控制程序按順序正常執(zhí)行; 當執(zhí)行轉(zhuǎn)移指令時,從數(shù)據(jù)線接收要跳轉(zhuǎn)的地址,使程序能夠按需要自動執(zhí)行。 當要從EM中讀取數(shù)據(jù)時,由PC提供地址。存儲器EM存儲指令和數(shù)據(jù)。微程序計數(shù)器PC向微程序存儲器M提供相應微指令的地址。微程序存儲器M存儲相應指令的微指令,微程序。輸出寄存器O
19、UT可以將運算結(jié)果輸出到輸出寄存器OUT(本實驗未用)。堆棧ST用來暫存操作數(shù)或者對寄存器值進行保護(本實驗未用)4在COP2000集成開發(fā)環(huán)境下設(shè)計全新的指令/微指令系統(tǒng)設(shè)計結(jié)果如表所示(可按需要增刪表項)(1) 新的指令集(如果針對乘除法設(shè)計了兩個不同指令集要分別列表)乘、除法共用一個指令集:助記符機器碼1機器碼2指令說明_FATCH_000000xx 00-03實驗機占用,不可修改MOV R?,#II000001xx 04-07IIMOV A,R?000010xx 08-0BTEST R?,#II 000011xx 0C-0FIIADD R?,A000100xx 10-13ADD R?,
20、#II000101xx 14-17IIJMP MM000110xx 18-1BMMOK000111xx 1C-1FJC MM001000xx 20-23MMSHL R?001001xx 24-27SHR R?001010xx 28-2B001011xx 2C-2F未使用001100xx 30-33未使用JZ MM001101xx 34-37MMSUB R?,A001110xx 38-3BCMP R?,A001111xx 3C-3F未使用(2) 新的微指令集助記符狀態(tài)微地址微程序數(shù)據(jù)輸出數(shù)據(jù)打入地址輸出運算器移位控制mPCPC_FATCH_T000CBFFFF浮空指令寄存器IRPC輸出A輸出寫入
21、+1MOV R?,#IIT104C7FBFF存儲器值EM寄存器R?PC輸出A輸出+1+1T005CBFFFF浮空指令寄存器IRPC輸出A輸出寫入+1MOV A,R?T008CBF7F7R?寄存器A, 指令寄存器IRPC輸出A輸出寫入+1TEST R?,#IIT20CC7FFEF存儲器值EM寄存器WPC輸出A輸出+1+1T10DFFF7F7R?寄存器A浮空A輸出+1T00ECBFE9BALU直通指令寄存器IR,標志位C,ZPC輸出與運算寫入+1ADD R?,AT210FFF7EFR?寄存器W浮空A輸出+1T111FFFA98ALU直通寄存器R?標志位C,Z浮空加運算+1T012CBFFFF浮空I
22、RPC輸出A輸出寫入+1ADD R?,#IIT314C7FFEF存儲器值EM寄存器WPC輸出A輸出+1+1T215FFF7F7R?寄存器A浮空A輸出+1T116FFFA98ALU直通寄存器R?標志位C,Z浮空加運算+1T017CBFFFF浮空IRPC輸出A輸出寫入+1JMP MMT118C6FFFF存儲器值EM寄存器PCPC輸出A輸出+1寫入T019CBFFFF浮空IRPC輸出A輸出寫入+1OKT01CCBFFFF浮空IRPC輸出A輸出寫入+1JC MMT120C6FFFF存儲器值EM寄存器PCPC輸出A輸出+1寫入T021CBFFFF浮空IRPC輸出A輸出寫入+1SHL R?T224FFF7
23、F7R?寄存器A浮空A輸出+1T125FFF8DFALU左移寄存器R?標志位C,Z浮空A輸出左移+1T026CBFFFF浮空IRPC輸出A輸出寫入+1SHR R?T228FFF7F7R?寄存器A浮空A輸出+1T129FFF8BFALU右移寄存器R?標志位C,Z浮空A輸出右移+1T02ACBFFFF浮空IRPC輸出A輸出寫入+1JZ MMT134C6FFFFEM寄存器PCPC輸出A輸出+1寫入T035CBFFFF浮空指令寄存器IRPC輸出A輸出寫入+1SUB R?,AT338FFFF8FALU直通寄存器W浮空A輸出+1T239FFF7F7R?寄存器A浮空A輸出+1T13AFFFA99ALU直通寄
24、存器R?標志位C,Z浮空減運算+1T03BCBFFFF浮空指令寄存器IRPC輸出A輸出寫入+1CMP R?,AT23CFFFF8FALU直通寄存器W浮空A輸出+1T13DFFF7F7R?寄存器A浮空A輸出+1T03ECBFE99ALU直通指令寄存器IR標志位C,ZPC輸出減運算寫入+15用設(shè)計完成的新指令集編寫實現(xiàn)無符號二進制乘法、除法功能的匯編語言程序(1)乘法4位乘法的算法流程圖與匯編語言程序清單:算法流程圖:開始 初始化乘數(shù),被乘數(shù),部分積(0)被乘數(shù)是否為0?乘數(shù)是否為0?YYNYN 乘數(shù)最低位是否為1?部分積加上被乘數(shù),被乘數(shù)左移1位,乘數(shù)右移1位結(jié)果(部分積)輸出結(jié)束匯編語言程序清
25、單:MOVR0,#00H ;部分積初始化為0MOVR1,#0CH ;被乘數(shù)12(10)MOVR2,#08H ;乘數(shù)8TESTR1,#0FH ;被乘數(shù)是否為0 JZOVERLOOP: TESTR2,#0FH ;乘數(shù)是否為0 JZ OVER TESTR2,#01H ;乘數(shù)最低位是否為0 JZNEXT MOVA,R1 ;不為0時,部分積加上被乘數(shù) ADDR0,A NEXT: SHL R1 ;被乘數(shù)左移1位 SHR R2 ;乘數(shù)右移1位 JMP LOOPOVER: JMP OVER(2)除法 4位除法的算法流程圖與匯編語言程序清單:算法流程圖:開始 NN初始化被除數(shù)(R0),除數(shù)(R1),假除數(shù)(R2
26、),商(R3)除數(shù)是否為0?被除數(shù)是否大于假除數(shù)?假除數(shù)是否小于除數(shù)?商設(shè)為FFH,余數(shù)設(shè)為FFH(出錯)NYY被除數(shù)是否為0?商為0,余數(shù)為0YN求取假除數(shù)結(jié)束 (此時被除數(shù)即為余數(shù)) Y商左移1位之后加1,被除數(shù)減去假除數(shù)得到新的被除數(shù),假除數(shù)右移一位商左移1位,假除數(shù)右移一位匯編語言程序清單:MOV R0,#56H ;被除數(shù)MOVR1,#0AH;除數(shù)MOVR2,#0A0H;假除數(shù)MOVR3,#00H;商TESTR1,#0FHJZERROR;除數(shù)為0,出錯TESTR0,#0FFHJZOVER;被除數(shù)為0;以下為得到假除數(shù)的過程TEST R2,#08H;判斷除數(shù)第3位是否為1 JZ C2;第
27、3位為0,轉(zhuǎn)去判斷第2位 JMP L4;第3位為1,假除數(shù)應該由除數(shù)左移4位得到C2: TEST R2,#04H;判斷除數(shù)第2位是否為1 JZ C1; 第2位為0,轉(zhuǎn)去判斷第1位 JMP L5;在第3位為0的前提下,第二位為1,左移5位C1: TEST R2,#02H; 判斷除數(shù)第1位是否為1 JZ L7;若為0,此時只有第0位為1,則應該左移7位 JMP L6;若第1位為1,則應該左移6位L7: SHL R2L6: SHL R2L5: SHL R2L4: SHL R2 SHL R2 SHL R2 SHL R2 ;以下為計算過程CHU: MOVA , R1CMPR2, AJCOVER;假除數(shù)小
28、于除數(shù)MOVA,R2CMPR0,AJCNEXT;被除數(shù)小于假除數(shù)SHLR3ADDR3,#01H;商1MOVA,R2SUBR0,A;更新被除數(shù)SHRR2JMPCHUNEXT: SHLR3SHRR2JMPCHUERROR:MOVR3,#0FFHMOVR0,#0FFHOVER:JMP OVER6上述程序的運行情況(跟蹤結(jié)果)按下表填寫描述以上各程序運行情況的內(nèi)容。按每個程序一張表進行。乘法程序運行的過程匯 編 指 令程序地址機器碼指令說明微程序PC mPC運行時寄存器或存儲器的值MOV RO,#0000010400把立即數(shù)00送入R0(即初始化部分積)C7FBFFCBFFFF01020405R0=0
29、0HMOV R1,#0CH0203050C把立即數(shù)0CH送入R1(即初始化被乘數(shù))C7FBFFCBFFFF03040405R1=0CHMOV R2,#08H04050608把立即數(shù)08H送入R2(即初始化乘數(shù))C7FBFFCBFFFF05060405R2=08HTEST R1,#0FH06070D0F將R1與立即數(shù)OFH相與,測試被乘數(shù)是否為0C7FFEFFFF7F7CBFE9B07080C0D0EW=0FHA=0CHJZ OVER08093418若被乘數(shù)為0,直接結(jié)束,輸出結(jié)果C6FFFFCBFFFF090A3435LOOP:TEST R2,#0FH0A0B0E0F將R2與立即數(shù)OFH相與,
30、測試乘數(shù)是否為0C7FFEFFFF7F7CBFE9B0B0C0C0D0EW=0FHA=08HJZ OVER0C0D3418若乘數(shù)為0,結(jié)束,輸出結(jié)果C6FFFFCBFFFF0D0E3435TEST R2,#01H0E0F0E01將R2與立即數(shù)O1H相與,測試乘數(shù)最低位是否為1C7FFEFFFF7F7CBFE9B0F100C0D0EW=01HA=08HJZ NEXT10113414若乘數(shù)最低位為0,跳轉(zhuǎn)至NEXT標號處C6FFFFCBFFFF11143435NEXT: SHL R11425將R1里面的值邏輯左移1位FFF7F7FFF8DFCBFFFF15242526A=0CHR1=18HSHR
31、R2152A將R2里面的值邏輯右移1位FFF7F7FFF8BFCBFFFF1628292AA=08HR2=04HJMP LOOP1617180A無條件跳轉(zhuǎn)到LOOP標號語句處C6FFFFCBFFFF170A1819LOOP: TEST R2,#0FH循環(huán)開始處此處不再重復填寫循環(huán),直接到跳出循環(huán)語句直到R2里面的值為0LOOP:TEST R2,#0FH0A0B0E0F測試與,測試R2,即乘數(shù)是否為0C7FFEFFFF7F7CBFE9B0B0C0C0D0EW=0FHA=00HJZ OVER0C0D3418為0時,跳轉(zhuǎn)至OVER語句處C6FFFFCBFFFF0D183435OVER:JMP OVE
32、R18191818此處為了保證在實驗箱上運行時,PC不動,所以特意設(shè)置了這個一個死循環(huán),此時結(jié)果已經(jīng)輸出C6FFFFCBFFFF19181819OVER:JMP OVER18191818無限循環(huán).程序結(jié)束除法程序運行的過程匯 編 指 令程序地址機器碼指令說明微程序PC mPC運行時寄存器或存儲器的值MOV R0,#056H00010456把立即數(shù)56H送入R0(即初始化被除數(shù))C7FBFFCBFFFF01020405R0=56HMOV R1,#0AH0203050A把立即數(shù)0AH送入R1(即初始化除數(shù))C7FBFFCBFFFF03040405R1=0AHMOV R2,#0AH0405060A把
33、立即數(shù)0AH送入R2(即初始化除數(shù))C7FBFFCBFFFF05060405R2=0AHMOV R3,#00H06070700把立即數(shù)00H送入R3(即初始化商)C7FBFFCBFFFF07080405R3=00HTEST R1,#0FH08090D0F測試與,測試除數(shù)是否為0C7FFEFFFF7F7CBFE9B090A0C0D0EW=0FHA=0AHJZ ERROR0A0B343D若除數(shù)為0,跳轉(zhuǎn)至ERRORC6FFFFCBFFFF0B0C3435TEST R0,#0FFH0C0D0CFF將被除數(shù)R0與0FFH測試與C7FFEFFFF7F7CBFE9B0D0E0C0D0EW=0FFHA=56
34、HJZ OVER0E0F3441若被除數(shù)為0,結(jié)束C6FFFFCBFFFF0F103435TEST R2,#08H10110E08將假除數(shù)與08H測試與,測試第3位是否為0C7FFEFFFF7F7CBFE9B11120C0D0EW=08HA=0AHJZ C212133416若假除數(shù)第3位為0,轉(zhuǎn)去判斷第2位是否為0C6FFFFCBFFFF13143435JMP L414151825無條件跳轉(zhuǎn)到L4標號語句C6FFFFCBFFFF15251819L4:SHL R22526將假除數(shù)左移1位FFF7F7FFF8DFCBFFFF26242526A=0AHR2=14HSHL R22626將假除數(shù)左移1位
35、FFF7F7FFF8DFCBFFFF27242526A=14HR2=28HSHL R22726將假除數(shù)左移1位FFF7F7FFF8DFCBFFFF28242526A=28HR2=50HSHL R22826將假除數(shù)左移1位FFF7F7FFF8DFCBFFFF29242526A=50HR2=0A0HCHU:MOV A,R12909將R1里的值移入A寄存器中CBF7F72A08CMP R2,A2A3E將R2與A寄存器的值測試減FFFF8FFFF7F7CBFE992B3C3D3EA=0AHW=0AHA=0A0HJC OVER2B2C2041假如溢出,則跳轉(zhuǎn)至OVER語句C6FFFFCBFFFF2C2D
36、2021MOV A,R22D0A將R2里的值移入A寄存器中CBF7F72E08CMP R0,A2E3C將R0與A寄存器的值測試減FFFF8FFFF7F7CBFE992F3C3D3EA=0A0HW=0A0HA=56HJC NEXT2F302039假如溢出,則跳轉(zhuǎn)至NEXT語句(商0的情況)C6FFFFCBFFFF30392021NEXT:SHL R33927將R3里面的值(商)邏輯左移1位FFF7F7FFF8DFCBFFFF3A242526A=00HR3=00HSHR R23A2A將R2里面的值(假除數(shù))邏輯右移1位FFF7F7FFF8BFCBFFFF3B28292AA=0A0HR2=50HJM
37、P CHU3B3C1829無條件跳轉(zhuǎn)至CHU標號語句C6FFFFCBFFFF3C291819CHU:MOV A,R12909將R1的值送入A寄存器中CBF7F72A08CMP R2,A2A3E將R2與A寄存器的值測試減FFFF8FFFF7F7CBFE992B3C3D3EA=0AHW=0AHA=50HJC OVER2B2C2041(若假除數(shù)小于除數(shù))若溢出,則跳轉(zhuǎn)至OVER語句C6FFFFCBFFFF2C2D2021MOV A,R22D0A將R2的值送入A寄存器中CBF7F72E08CMP R0,A2E3C將R0與A寄存器的值測試減(即將被除數(shù)與假除數(shù)比較大小)FFFF8FFFF7F7CBFE992F3C3D3EA=50HW=50HA=56HJC NEXT2F302039若溢出,跳轉(zhuǎn)至NEXT語句C6FFFFCBFFFF30312021SHL R33127將R3(商)邏輯左移1位FFF7F7FFF8DFCBFFFF32242526A=00HR3=00HADD R3,#01H32331701將R3里面的值加1(此時商1)C7FFEFFFF7F7FFFA98CBFFFF3334141516
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度哺乳期離婚雙方子女保險權(quán)益轉(zhuǎn)移協(xié)議2篇
- 2024證券公司與其合作方之間國際證券交易合同
- 二零二五版領(lǐng)養(yǎng)未成年人監(jiān)護責任協(xié)議參考4篇
- 二零二五版園林景觀木工施工合作協(xié)議4篇
- 二零二五版合伙房產(chǎn)買賣合同及配套裝修設(shè)計服務(wù)6篇
- 2025年度特種運輸服務(wù)買賣合同安全與時效承諾
- 2025版彩禮退還與婚姻解除條件及財產(chǎn)分割協(xié)議書范本3篇
- 基于2025年度規(guī)劃的文化園區(qū)停車場建設(shè)與運營合同3篇
- 二零二五年豪華別墅買賣合同與預售協(xié)議3篇
- 二零二五年度影視角色選拔拍攝合同
- 職業(yè)衛(wèi)生培訓課件
- 柴油墊資合同模板
- 湖北省五市州2023-2024學年高一下學期期末聯(lián)考數(shù)學試題
- 城市作戰(zhàn)案例研究報告
- 【正版授權(quán)】 ISO 12803:1997 EN Representative sampling of plutonium nitrate solutions for determination of plutonium concentration
- 道德經(jīng)全文及注釋
- 2024中考考前地理沖刺卷及答案(含答題卡)
- 多子女贍養(yǎng)老人協(xié)議書范文
- 彩票市場銷售計劃書
- 骨科抗菌藥物應用分析報告
- 支付行業(yè)反洗錢與反恐怖融資
評論
0/150
提交評論