




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、計算機組成原理課程設(shè)計報告班級: 班 姓名: 學(xué)號: 完成時間: 2016.1.9 一、課程設(shè)計目的1在實驗機上設(shè)計實現(xiàn)機器指令及對應(yīng)的微指令(微程序)并驗證,從而進一步掌握微程序設(shè)計控制器的基本方法并了解指令系統(tǒng)與硬件結(jié)構(gòu)的對應(yīng)關(guān)系;2通過控制器的微程序設(shè)計,綜合理解計算機組成原理課程的核心知識并進一步建立整機系統(tǒng)的概念;3培養(yǎng)綜合實踐及獨立分析、解決問題的能力。二、課程設(shè)計的任務(wù)針對COP2000實驗儀,從詳細了解該模型機的指令/微指令系統(tǒng)入手,以實現(xiàn)乘法和除法運算功能為應(yīng)用目標(biāo),在COP2000的集成開發(fā)環(huán)境下,設(shè)計全新的指令系統(tǒng)并編寫對應(yīng)的微程序;之后編寫實現(xiàn)乘法和除法的程序進行設(shè)計的
2、驗證。三、 課程設(shè)計使用的設(shè)備(環(huán)境)1硬件l COP2000實驗儀l PC機2軟件l COP2000仿真軟件四、課程設(shè)計的具體內(nèi)容(步驟)1詳細了解并掌握COP 2000模型機的微程序控制器原理,通過綜合實驗來實現(xiàn)該模型機指令系統(tǒng)的特點: 總體概述COP2000模型機包括了一個標(biāo)準CPU所具備所有部件,這些部件包括:運算器ALU、累加器A、工作寄存器W、左移門L、直通門D、右移門R、寄存器組R0-R3、程序計數(shù)器PC、地址寄存器MAR、堆棧寄存器ST、中斷向量寄存器IA、輸入端口IN、輸出端口寄存器OUT、程序存儲器EM、指令寄存器IR、微程序計數(shù)器uPC、微程序存儲器uM,以及中斷控制電路
3、、跳轉(zhuǎn)控制電路。其中運算器和中斷控制電路以及跳轉(zhuǎn)控制電路用CPLD來實現(xiàn),其它電路都是用離散的數(shù)字電路組成。微程序控制部分也可以用組合邏輯控制來代替。 模型機為8位機,數(shù)據(jù)總線、地址總線都為8位,但其工作原理與16位機相同。相比而言8位機實驗減少了煩瑣的連線,但其原理卻更容易被學(xué)生理解、吸收。模型機的指令碼為8位,根據(jù)指令類型的不同,可以有0到2個操作數(shù)。指令碼的最低兩位用來選擇R0-R3寄存器,在微程序控制方式中,用指令碼做為微地址來尋址微程序存儲器,找到執(zhí)行該指令的微程序。而在組合邏輯控制方式中,按時序用指令碼產(chǎn)生相應(yīng)的控制位。在本模型機中,一條指令最多分四個狀態(tài)周期,一個狀態(tài)周期為一個時
4、鐘脈沖,每個狀態(tài)周期產(chǎn)生不同的控制邏輯,實現(xiàn)模型機的各種功能。模型機有24位控制位以控制寄存器的輸入、輸出,選擇運算器的運算功能,存儲器的讀寫。模型機的缺省的指令集分幾大類: 算術(shù)運算指令、邏輯運算指令、移位指令、數(shù)據(jù)傳輸指令、跳轉(zhuǎn)指令、中斷返回指令、輸入/輸出指令。 模型機的尋址方式表1 模型機的尋址方式模型機的尋址方式尋址方式說明指令舉例指令說明累加器尋址操作數(shù)為累加器ACPL A將累加器A的值取反隱含尋址累加器AOUT將累加器A的值輸出到輸出端口寄存器OUT寄存器尋址參與運算的數(shù)據(jù)在R0R3的寄存器中ADD A,R0將寄存器R0的值加上累加器A的值,再存入累加器A中寄存器間接尋址參與運算
5、的數(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該模型機微指令系統(tǒng)的特點(包括其微指令格式的說明等):該模型機的微命令是以直接表示法進行編碼的,其特點是操作控制字段中的每一位代表一個微命令。這種方法的優(yōu)點是簡單直觀,其輸出直接用于控制。缺點是微指
6、令字較長,因而使控制存儲器容量較大。 微指令格式的說明模型機有24位控制位以控制寄存器的輸入、輸出,選擇運算器的運算功能,存儲器的讀寫。微程序控制器由微程序給出24位控制信號,而微程序的地址又是由指令碼提供的,也就是說24位控制信號是由指令碼確定的。該模型機的微指令的長度為24位,其中微指令中只含有微命令字段,沒有微地址字段。其中微命令字段采用直接按位的表示法,哪位為0,表示選中該微操作,而微程序的地址則由指令碼指定。這24位操作控制信號的功能如表2所示:(按控制信號從左到右的順序依次說明)表2 微指令控制信號的功能操作控制信號控 制 信 號 的 說 明XRD外部設(shè)備讀信號,當(dāng)給出了外設(shè)的地址
7、后,輸出此信號,從指定外設(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中斷返回時清除中斷響應(yīng)和中斷請求標(biāo)志,便于下次中斷。ELPPC打入允許,與指令寄存器的IR3、IR2位結(jié)合,控制程序跳轉(zhuǎn)。MAREN將數(shù)據(jù)總線DBUS上數(shù)據(jù)打入地址寄存器MAR。MAROE將地址寄存器MAR的值送到地址總線ABUS上。OUTE
8、N將數(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將標(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做何種運算。S1S0COP2000中有7個寄存器可以
9、向數(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給出, 運算結(jié)果輸出到直通門D。S2 S1 S0功能0 0 0A+W 加0 0 1A-W 減0 1 0A|W 或0 1 1A&
10、amp;W 與1 0 0A+W+C 帶進位加1 0 1A-W-C 帶進位減1 1 0A A取反1 1 1A 輸出A2. 計算機中實現(xiàn)乘法和除法的原理(1)無符號乘法算法流程圖:開 始輸入被乘數(shù)、乘數(shù),初始化過程積N乘數(shù)為0?N輸出結(jié)果OUT乘數(shù)最后一位為1?N結(jié)束Y計算過程積被乘數(shù)左移一位乘數(shù)右移一位硬件原理框圖:判斷乘數(shù)是否為零判斷乘數(shù)最后一位是否為1RDL被乘數(shù)R0R1中間積 ALU乘數(shù)中間積R2AR3W乘數(shù)右移被乘數(shù)左移(2)無符號除法算法流程圖:開始輸入被除數(shù),除數(shù)初始化商為0,過程除數(shù)先初始化等于除數(shù)除數(shù)為0?YN過程除數(shù)左移一位N過程除數(shù)的最高位為1?Y過程除數(shù)小于除數(shù)?Y輸出商O
11、UT;輸出余數(shù)OUT;N余數(shù)大于等于過程除數(shù)?Y結(jié)束Y過程除數(shù)右移一位;商左移一位被除數(shù)減去過程除數(shù)得到新的被除數(shù)過程除數(shù)右移一位;商左移一位并且加1硬件原理框圖:左移、右移過程除數(shù)R0RDL被除數(shù)R1中間積 ALU商R2存除數(shù)AR3WR1-R0R2+13對應(yīng)于以上算法如何分配使用COP2000實驗儀中的硬件(初步分配,設(shè)計完成后再將準確的使用情況填寫在此處)(1) 無符號乘法的硬件分配情況硬件名稱實現(xiàn)算法功能描述寄存器R0計算時用來存放過程積和結(jié)果積寄存器R1 初始化時,用來存放被乘數(shù); 在程序執(zhí)行的過程中,用來存放向左移位后的被乘數(shù)。寄存器R2 初始化時,用來存放乘數(shù); 在程序執(zhí)行的過程中
12、,用來存放向右移位后的乘數(shù)。累加器A執(zhí)行ADD A,R?(加法)、SHL R?(左移一位)、SHR R?(右移一位)等命令時所必須使用的寄存器。寄存器W執(zhí)行ADD A,R?(加法)、CHECK R?,#II(檢測乘數(shù)最后一位是否為1)等雙操作數(shù)命令時所必須使用的寄存器。左移門L用來實現(xiàn)相應(yīng)數(shù)據(jù)左移一位的運算,并能夠控制該運算后的結(jié)果是否輸出到數(shù)據(jù)總線。直通門D用來控制ALU的執(zhí)行結(jié)果是否輸出到數(shù)據(jù)總線。右移門R用來實現(xiàn)相應(yīng)數(shù)據(jù)右移一位的運算,并能夠控制該運算后的結(jié)果是否輸出到數(shù)據(jù)總線。程序計數(shù)器PC 控制程序按順序正常執(zhí)行; 當(dāng)執(zhí)行轉(zhuǎn)移指令時,從數(shù)據(jù)線接收要跳轉(zhuǎn)的地址,使程序能夠按需要自動執(zhí)行
13、。 當(dāng)要從EM中讀取數(shù)據(jù)時,由PC提供地址。存儲器EM存儲指令和數(shù)據(jù)。微程序計數(shù)器PC向微程序存儲器M提供相應(yīng)微指令的地址。微程序存儲器M存儲相應(yīng)指令的微指令。輸出寄存器OUT將運算結(jié)果(R0)輸出到輸出寄存器OUT。堆棧ST當(dāng)存儲于累加器A的值將要受到破壞時,將其數(shù)據(jù)保存在堆棧ST中,使程序能夠正常地執(zhí)行。(2)無符號除法 無符號除法對應(yīng)于COP2000實驗儀的硬件具體分配使用情況如下表所示:表4 無符號除法的硬件分配情況硬件名稱實現(xiàn)算法功能描述寄存器R0初始化時,用來存放除數(shù)在程序執(zhí)行過程中,用來存放向右移位后的過程除數(shù)寄存器R1初始化時,用來存放被除數(shù);寄存器R2在程序執(zhí)行過程中,用來保
14、存當(dāng)前算得的商。寄存器R3初始化時,用來保存除數(shù),運算過程中其值也不改變。累加器A 計算時用來存放中間結(jié)果; 執(zhí)行CMP R?,A(比較) SUB A,R?(減法)等命令時所必須使用的寄存器。寄存器W執(zhí)行SUB A,R?(減法)等雙操作數(shù)命令時所必須使用的寄存器。左移門L用來實現(xiàn)相應(yīng)數(shù)據(jù)左移一位的運算,并能夠控制該運算后的結(jié)果是否輸出到數(shù)據(jù)總線。直通門D用來控制ALU的執(zhí)行結(jié)果是否輸出到數(shù)據(jù)總線。右移門R用來實現(xiàn)相應(yīng)數(shù)據(jù)右移一位的運算,并能夠控制該運算后的結(jié)果是否輸出到數(shù)據(jù)總線。程序計數(shù)器PC 控制程序按順序正常執(zhí)行; 當(dāng)執(zhí)行轉(zhuǎn)移指令時,從數(shù)據(jù)線接收要跳轉(zhuǎn)的地址,使程序能夠按需要自動執(zhí)行。 當(dāng)
15、要從EM中讀取數(shù)據(jù)時,由PC提供地址。存儲器EM存儲指令和數(shù)據(jù)。微程序計數(shù)器PC向微程序存儲器M提供相應(yīng)微指令的地址。微程序存儲器M存儲相應(yīng)指令的微指令。輸出寄存器OUT將運算結(jié)果輸出到輸出寄存器OUT(R2:商,R1:余數(shù))。堆棧ST當(dāng)存儲于累加器A的值將要受到破壞時,將其數(shù)據(jù)保存在堆棧ST中,使程序能夠正常地執(zhí)行。4在COP2000集成開發(fā)環(huán)境下設(shè)計全新的指令/微指令系統(tǒng)設(shè)計結(jié)果如表所示(可按需要增刪表項)(1) 新的指令集(如果針對乘除法設(shè)計了兩個不同指令集要分別列表)助記符機器碼1機器碼2指令說明_FATCH_000000XX 00-03 實驗機占用,不可修改。復(fù)位后,所有寄存器清0,
16、首先執(zhí)行 _FATCH_ 指令取指M0V R?,#II000001XX 04-07II將立即數(shù)II送到寄存器R?中MOV A,R?000010XX 08-0B將寄存器R?的值送到累加器A中ADD R?,A000011XX 0C-0F將寄存器R?的值加入累加器A中ADD R?,#II000100XX 10-13II將立即數(shù)II加入寄存器R?中SUB R?,A000101XX 14-17從累加器A中減去寄存器R?的值CHECK R?,#II000110XX 18-1BIIJMP MM000111XX 1C-1FMMZF=1,跳轉(zhuǎn)JC MM001000XX 20-23MMCF=1,跳轉(zhuǎn)JZ MM00
17、1001XX 24-27MM無條件跳轉(zhuǎn)未使用001010XX 28-2BSHL R?001011XX 2C-2F左移SHR R?001100XX 30-33右移CMP R?,A001101XX 34-37比較OUT R?001110XX 38-3B輸出(2) 新的微指令集助記符狀態(tài)微地址微程序數(shù)據(jù)輸出數(shù)據(jù)打入地址輸出運算器移位控制mPCPC_FATCH_T000CBFFFF浮空指令寄存器IRPC輸出A輸出寫入+101FFFFFF浮空浮空A輸出+102FFFFFF浮空浮空A輸出+103FFFFFF浮空浮空A輸出+1MOV R?,#IIT104C7FBFF存儲器值EM寄存器R?PC輸出A輸出+1T
18、005CBFFFF浮空指令寄存器IRPC輸出A輸出寫入+106FFFFFF浮空浮空A輸出+107FFFFFF浮空浮空A輸出+1MOV A,R?T108FFF7F7寄存器值R?寄存器W浮空A輸出+1T009CBFFFF浮空指令寄存器IRPC輸出A輸出+10AFFFFFF浮空浮空A輸出+10BFFFFFF浮空浮空A輸出+1ADD R?,AT20CFFF7EF寄存器R?寄存器W浮空A輸出+1T10DFFFA98ALU直通寄存器R?標(biāo)志位C,Z浮空加運算+1T00ECBFFFF浮空指令寄存器IRPC輸出A輸出寫入+10FFFFFFF浮空浮空A輸出+1ADD R?,#IIT310FFF7F7寄存器值R?
19、寄存器A浮空A輸出+1T211C7FFEF存儲器值EM寄存器WPC輸出A輸出寫入+1T112FFFA98ALU直通寄存器R?標(biāo)志位C,Z浮空加運算+1T013CBFFFF浮空指令寄存器IRPC輸出A輸出寫入+1SUB R?,AT314FFFF8FALU直通寄存器W浮空A輸出+1T215FFF7F7寄存器R?寄存器A浮空A輸出+1T116FFFA99ALU直通寄存器R?標(biāo)志位C,Z浮空減運算+1T017CBFFFF浮空指令寄存器IRPC輸出A輸出寫入+1CHECK R?,#IIT318C7FFEF存儲器值EM寄存器WPC輸出A輸出+1+1T219FFF7F7寄存器值R?寄存器A浮空A輸出+1T1
20、1AFFFE93ALU直通寄存器A標(biāo)志位C,Z浮空與運算+1T01BCBFFFF浮空指令寄存器IRPC輸出A輸出寫入+1JMP MMT11CC6FFFF存儲器EM寄存器PCPC輸出A輸出+1寫入T01DCBFFFF浮空指令寄存器IRPC輸出A輸出寫入+11EFFFFFF浮空浮空A輸出+11FFFFFFF浮空浮空A輸出+1JC MMT120C6FFFF存儲器值EM寄存器PCPC輸出A輸出+1寫入T021CBFFFF浮空指令寄存器IRPC輸出A輸出寫入+122FFFFFF浮空浮空A輸出+123FFFFFF浮空浮空A輸出+1JZ MMT124C6FFFF存儲器值EM寄存器PCPC輸出A輸出+1寫入T
21、025CBFFFF浮空指令寄存器IRPC輸出A輸出寫入+1未使用26FFFFFF浮空浮空A輸出+107FFFFFF浮空浮空A輸出+128FFFFFF浮空浮空A輸出+129FFFFFF浮空浮空A輸出+12AFFFFFF浮空浮空A輸出+12BFFFFFF浮空浮空A輸出+1SHL R?T22CFFF7F7寄存器值R?寄存器A浮空A輸出+1T12DFFF9DFALU左移寄存器R?浮空A輸出左移+1T02ECBFFFF浮空指令寄存器IRPC輸出A輸出寫入+12FFFFFFF浮空浮空A輸出+1SHR R?T230FFF7F7寄存器值R?寄存器A浮空A輸出+1T131FFF9BFALU右移寄存器R?浮空A輸
22、出右移+1T032CBFFFF浮空指令寄存器IRPC輸出A輸出寫入+1CMP R?,AT334FFFF8FALU直通寄存器W浮空A輸出+1T235FFF7F7寄存器值R?寄存器A浮空A輸出+1T136FFFE99ALU直通標(biāo)志位C,Z浮空減運算+1T037CBFFFF浮空指令寄存器IRPC輸出A輸出寫入+1OUT R?T238FFD7FF寄存器值R?用戶OUT浮空A輸出+1T139FFD7F7寄存器值R?寄存器A 用戶OUT浮空A輸出+1T03ACBFFFF浮空指令寄存器IRPC輸出A輸出寫入+13BFFFFFF浮空浮空A輸出+15設(shè)計完成的新指令集編寫實現(xiàn)無符號二進制乘法、除法功能的匯編語言
23、程序(1)乘法4位乘法的算法流程圖與匯編語言程序清單:乘法算法流程圖開 始輸入被乘數(shù)、乘數(shù),初始化過程積N乘數(shù)為0?N輸出結(jié)果OUTN乘數(shù)最后一位為1?結(jié)束Y計算過程積被乘數(shù)左移一位乘數(shù)右移一位匯編語言程序MOV R0,#00H ;中間積MOV R1,#9 ;被乘數(shù)MOV R2,#6 ;乘數(shù)LAB : CHECK R2,#0FH JZ LAST CHECK R2,#01H JZ NEXT MOV A,R1 ADD R0,ANEXT : SHL R1 SHR R2 JMP LABLAST : OUT R0LAST1:JMP LAST1(2)除法 4位除法的算法流程圖與匯編語言程序清單:除法算法流
24、程圖:開始輸入被除數(shù),除數(shù)初始化商為0,過程除數(shù)先初始化等于除數(shù)除數(shù)為0?YN過程除數(shù)左移一位N過程除數(shù)的最高位為1?Y過程除數(shù)小于除數(shù)?Y輸出商OUT;輸出余數(shù)OUT;N余數(shù)大于等于過程除數(shù)?Y結(jié)束Y過程除數(shù)右移一位;商左移一位被除數(shù)減去過程除數(shù)得到新的被除數(shù)過程除數(shù)右移一位;商左移一位并且加1匯編語言程序MOV R0,#8 ;過程除數(shù) MOV R1,#33 ;初始化被除數(shù) MOV R2,#0 ;初始化商 MOV R3,#8 ;R3用于保存除數(shù),值不改變 CHECK R0,#0FH JZ LAST LOOP:CHECK R0,#80H JZ LOOP1 JMP BEGIN LOOP1:SHL
25、 R0 JMP LOOP BEGIN: MOV A,R3 CMP R0,A JC LAST MOV A,R0 CMP R1,A JC ONE MOV A,R0 SUB R1,A SHL R2 ADD R2,#1 SHR R0 JMP BEGINONE: SHL R2 SHR R0 JMP BEGINLAST:OUT R2LAST1:JMP LAST16上述程序的運行情況(跟蹤結(jié)果)按下表填寫描述以上各程序運行情況的內(nèi)容。按每個程序一張表進行。程序運行的過程無符號乘法匯 編 指 令程序地址機器碼指令說明微程序PC mPC運行時寄存器或存儲器的值MOV R0,#000010400初始化過程積C7F
26、BFFCBFFFF01020405R0=00HMOV R1,#902030509初始化被乘數(shù)C7FBFFCBFFFF03040405R1=09HMOV R2,#604050606初始化乘數(shù)C7FBFFCBFFFF05060405R2=06HLAB:CHECK R2,#0FH06071A0F檢測乘數(shù)是否為0(將0FH送至寄存器W,將R2送至寄存器A中,進行與運算,結(jié)果由D送至A中。)C7FFEFFFF7F7FFFE93CBFFFF0708080818191A1BW=0FHA=06HJZ LAST08092414乘數(shù)為0(ZF=1),則跳轉(zhuǎn)到LASTC6FFFFCBFFFF090A2425CHEC
27、K R2,#01H0A0B1A01檢測乘數(shù)最后一位是否為1(將01H送至寄存器W,將R2送至寄存器A中,進行與運算,結(jié)果由D送至A中。)C7FFEFFFF7F7FFFE93CBFFFF0B0C0C0C18191A1BW=01HA=06HJZ NEXT0C0D2410乘數(shù)最后一位為0(ZF=1),則跳轉(zhuǎn)到NEXTC6FFFFCBFFFF0D102425NEXT:SHL R1102D被乘數(shù)左移一位(將R1值送至寄存器A中,左移將L中的值送回R1)FFF7F7FFF9DFCBFFFF1111112C2D2ER1=12HSHR R21132乘數(shù)右移一位(將R2值送至寄存器A中,右移將R中的值送回R2)
28、FFF7F7FFF9BFCBFFFF121212303132R2=03HJMP LAB12131C06無條件跳轉(zhuǎn)至LABC6FFFFCBFFFF13061C1DLAB:CHECK R2,#0FH06071A0F檢測乘數(shù)是否為0(將0FH送至寄存器W,將R2送至寄存器A中,進行與運算,結(jié)果由D送至A中。)C7FFEFFFF7F7FFFE93CBFFFF0708080818191A1BW=0FHA=03HJZ LAST08092414乘數(shù)為0(ZF=1),則跳轉(zhuǎn)到LASTC6FFFFCBFFFF090A2425CHECK R2,#01H0A0B1A01檢測乘數(shù)最后一位是否為1(將01H送至寄存器W
29、,將R2送至寄存器A中,進行與運算,結(jié)果由D送至A中。)C7FFEFFFF7F7FFFE93CBFFFF0B0C0C0C18191A1BW=01HA=03HJZ NEXT0C0D2410乘數(shù)最后一位為0(ZF=1),則跳轉(zhuǎn)到NEXTC6FFFFCBFFFF0D0E2425MOV A,R10E09將被乘數(shù)R1送至寄存器A中FFF7F7CBFFFF0F0F0809A=12HADD R0,A0F0C過程積加上被乘數(shù)(將R0上送至W中,A與W做加法運算)FFF7EFFFFA98CBFFFF1010101C1D1ER0=12HNEXT:SHL R1102D被乘數(shù)R1左移一位(將R1值送至寄存器A中,左移
30、將L中的值送回R1)FFF7F7FFF9DFCBFFFF1111112C2D2ER1=24HSHR R21132乘數(shù)右移一位(將R2值送至寄存器A中,右移將R中的值送回R2)FFF7F7FFF9BFCBFFFF121212303132R2=01HJMP LAB12131C06無條件跳轉(zhuǎn)至LABC6FFFFCBFFFF13061C1DLAB:CHECK R2,#0FH06071A0F檢測乘數(shù)是否為0(將0FH送至寄存器W,將R2送至寄存器A中,進行與運算,結(jié)果由D送至A中。)C7FFEFFFF7F7FFFE93CBFFFF0708080818191A1BW=0FHA=01HJZ LAST0809
31、2414乘數(shù)為0(ZF=1),則跳轉(zhuǎn)到LASTC6FFFFCBFFFF090A2425CHECK R2,#01H0A0B1A01檢測乘數(shù)最后一位是否為1(將01H送至寄存器W,將R2送至寄存器A中,進行與運算,結(jié)果由D送至A中。)C7FFEFFFF7F7FFFE93CBFFFF0B0C0C0C18191A1BW=01HA=01HJZ NEXT0C0D2410乘數(shù)最后一位為0(ZF=1),則跳轉(zhuǎn)到NEXTC6FFFFCBFFFF0D0E2425MOV A,R10E09將被乘數(shù)R1送至寄存器A中FFF7F7CBFFFF0F0F0809A=24HADD R0,A0F0C過程積加上被乘數(shù)(將R0上送至
32、W中,A與W做加法運算)FFF7EFFFFA981010100C0D0EW=12HR0=36HNEXT:SHL R1102D被乘數(shù)左移一位(將R1值送至寄存器A中,左移將L中的值送回R1)FFF7F7FFF9DFCBFFFF1111112C2D2ER1=48HSHR R21132乘數(shù)右移一位(將R2值送至寄存器A中,右移將R中的值送回R2)FFF7F7FFF9BFCBFFFF121212303132R2=00HJMP LAB12131C06無條件跳轉(zhuǎn)至LABC6FFFFCBFFFF13061C1DLAB:CHECK R2,#0FH06071A0F檢測乘數(shù)是否為0(將0FH送至寄存器W,將R2送
33、至寄存器A中,進行與運算,結(jié)果由D送至A中。)C7FFEFFFF7F7FFFE93CBFFFF0708080818191A1BW=OFHA=00HJZ LAST08092414乘數(shù)為0(ZF=1),則跳轉(zhuǎn)到LASTC6FFFFCBFFFF09142425LAST:OUT R01438將結(jié)果積R0輸出到OUT寄存器FFD7FFCBFFFF151538390UT=R0=36H無符號除法(商可以是8位的通用除法)匯 編 指 令程序地址機器碼指令說明微程序PC mPC運行時寄存器或存儲器的值MOV R0,#800010408初始化過程除數(shù)C7FBFFCBFFFF01020405R0=08HMOV R1
34、,#3302030521初始化被除數(shù)C7FBFFCBFFFF03040405R3=33HMOV R2,#004050600初始化商C7FBFFCBFFFF05060405R1=08HMOV R3,#806070708保持除數(shù)C7FBFFCBFFFF07080405R2=00HCHECK R0,#0FH0809180F檢測除數(shù)是否為0(將0FH送至W中,除數(shù)R0送至A中,進行與運算,結(jié)果保存在A中)C7FFEFFFF7F7FFFE93CBFFF090A0A0A18191A1BW=0FHA=08HJZ LAST0A0B2429除數(shù)若為0(ZF=1),跳轉(zhuǎn)到LASTC6FFFFCBFFFF0B0C2
35、425LOOP:CHECK R0,#80H0C0D1880檢測除數(shù)最高位是否為1(將80H送至W中,過程除數(shù)R0送至A中,進行與運算,結(jié)果保存在A中)C7FFEFFFF7F7FFFE93CBFFFOD0E0E0E18191A1BW=80HA=08HJZ LOOP10E0F2412過程除數(shù)的最高位為0(ZF=1),跳轉(zhuǎn)到LOOP1C6FFFFCBFFFF0F122425LOOP1:SHL R0122C過程除數(shù)左移一位(過程除數(shù)R0送至A中,左移一位,結(jié)果L再送回R0)FFF7F7FFF9DFCBFFFF1313132C2D2ER0=10HJMP LOOP13141C0C無條件跳轉(zhuǎn)到LOOPC6F
36、FFFCBFFFF140C1C1DLOOP:CHECK R0,#80H0C0D1880檢測除數(shù)最高位是否為1(將80H送至W中,過程除數(shù)R0送至A中,進行與運算,結(jié)果保存在A中)C7FFEFFFF7F7FFFE93CBFFF0D0E0E0E18191A1BW=80HA=10HJZ LOOP10E0F2412過程除數(shù)的最高位為0(ZF=1),跳轉(zhuǎn)到LOOP1C6FFFFCBFFFFOF122425LOOP1:SHL R0122C過程除數(shù)左移一位(過程除數(shù)R0送至A中,左移一位,結(jié)果L再送回R0)FFF7F7FFF9DFCBFFFF1313132C2D2ER0=20HJMP LOOP13141C0
37、C無條件跳轉(zhuǎn)到LOOPC6FFFFCBFFFF140C1C1DLOOP:CHECK R0,#80H0C0D1880檢測除數(shù)最高位是否為1(將80H送至W中,過程除數(shù)R0送至A中,進行與運算,結(jié)果保存在A中)C7FFEFFFF7F7FFFE93CBFFF0D0E0E0E18191A1BW=80HA=20HJZ LOOP10E0F2412過程除數(shù)的最高位為0(ZF=1),跳轉(zhuǎn)到LOOP1C6FFFFCBFFFF0F122425LOOP1:SHL R0122C過程除數(shù)左移一位(過程除數(shù)R0送至A中,左移一位,結(jié)果L再送回R0)FFF7F7FFF9DFCBFFFF1313132C2D2ER0=40HJ
38、MP LOOP13141C0C無條件跳轉(zhuǎn)到LOOPC6FFFFCBFFFF140C1C1DLOOP:CHECK R0,#80H0C0D1880檢測除數(shù)最高位是否為1(將80H送至W中,過程除數(shù)R0送至A中,進行與運算,結(jié)果保存在A中)C7FFEFFFF7F7FFFE93CBFFF0D0E0E0E18191A1BW=80HA=40HJZ LOOP10E0F2412過程除數(shù)的最高位為0(ZF=1),跳轉(zhuǎn)到LOOP1C6FFFFCBFFFF0F122425LOOP1:SHL R0122C過程除數(shù)左移一位(過程除數(shù)R0送至A中,左移一位,結(jié)果L再送回R0)FFF7F7FFF9DFCBFFFF13131
39、3242D2ER0=80HJMP LOOP13141C0C無條件跳轉(zhuǎn)到LOOPC6FFFFCBFFFF140C1C1DLOOP:CHECK R0,#80H0C0D1880檢測除數(shù)最高位是否為1(將80H送至W中,過程除數(shù)R0送至A中,進行與運算,結(jié)果保存在A中)C7FFEFFFF7F7FFFE93CBFFF0D0E0E0E18191A1BW=80HA=80HJZ LOOP10E0F2412過程除數(shù)的最高位為0(ZF=1),跳轉(zhuǎn)到LOOP1C6FFFFCBFFFF0F102425JMP BEGIN10111C15無條件跳轉(zhuǎn)到BEGINC6FFFFCBFFFF11151C1DBEGIN:MOV A
40、,R3150B將除數(shù)送至寄存器A中FFF7F7CBFFFF16160809A=08HCMP R0,A1634比較過程除數(shù)與除數(shù)的大小(先將A中的除數(shù)通過D轉(zhuǎn)移至W中,再將過程除數(shù)送至A中,進行減運算,修改標(biāo)志位C,Z)FFFF8FFFF7F7FFFE99CBFFFF1717171734353637W=08HA=80HJC LAST17182024若過程除數(shù)R0小于除數(shù)R3,則跳轉(zhuǎn)到LASTC6FFFFCBFFFF18192021MOV A,R01908將過程除數(shù)送至寄存器A中FFF7F7CBFFFF1A1A0809A=80HCMP R1,A1A35比較被除數(shù)與過程除數(shù)的大?。ㄏ葘中的除數(shù)通過
41、D轉(zhuǎn)移至W中,再將被除數(shù)送至A中,進行減運算,修改標(biāo)志位C,Z)FFFF8FFFF7F7FFFE99CBFFFF1B1B1B1B34353637W=80HA=21HJC ONE1B1C2020若被除數(shù)R1小于過程除數(shù)R0,則跳轉(zhuǎn)到ONEC6FFFFCBFFFF1C252021ONE:SHL R2252E商左移一位(商R2送至A中,左移一位,結(jié)果L再送回R2)FFF7F7FFF9DFCBFFFF2626262C2D2ER2=00HSHR R02630過程除數(shù)右移一位(過程除數(shù)R0送至A中,右移一位,結(jié)果R再送回R0)FFF7F7FFF9BFCBFFFF272727303132R0=40HJMP
42、BEGIN27281C10無條件跳轉(zhuǎn)到BEGINC6FFFFCBFFFF28151C1DBEGIN:MOV A,R3150B將除數(shù)送至寄存器A中FFF7F7CBFFFF16160809A=08HCMP R0,A1634比較過程除數(shù)與除數(shù)的大?。ㄏ葘中的除數(shù)通過D轉(zhuǎn)移至W中,再將過程除數(shù)送至A中,進行減運算,修改標(biāo)志位C,Z)FFFF8FFFF7F7FFFE99CBFFFF1717171734353637W=08HA=40HJC LAST172024若過程除數(shù)R0小于除數(shù)R3,則跳轉(zhuǎn)到LASTC6FFFFCBFFFF18192021MOV A,R01908將過程除數(shù)送至寄存器A中FFF7F7CBFFFF1A1A0809A=40HCMP R1,A1A35比較被除數(shù)與過程除數(shù)的大?。ㄏ葘中的除數(shù)通過D轉(zhuǎn)移至W中,再將被除數(shù)送至A中,進行減運算,修改標(biāo)志位
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 分紅股合作合同范本
- 公司建材購銷合同范本
- 車輛運輸肉類合同范本
- 供貨合同范本范文
- 養(yǎng)殖股東協(xié)議合同范本
- 華為購車合同范本
- 區(qū)代理商合同范本
- 儲料倉合同范本
- 制作標(biāo)識標(biāo)牌合同范本
- 合理借款合同范例
- 服務(wù)響應(yīng)時間和服務(wù)保障方案
- 蟾蜍毒抗病毒作用機制
- 光伏發(fā)電監(jiān)理合同協(xié)議
- 新能源汽車概論課件 3.1認知純電動汽車
- 【數(shù)學(xué)】小學(xué)四年級口算題大全(10000道)
- 中國腦出血診治指南
- 信息安全意識培訓(xùn)課件
- 《食品標(biāo)準與法規(guī)》知識考試題庫300題(含答案)
- 社團活動情況登記表
- 人教版(2024)七年級上冊英語各單元短文填空練習(xí)題匯編(含答案解析)
- 山東省濰坊市2023-2024學(xué)年高二下學(xué)期期末測試+英語試卷
評論
0/150
提交評論