東北大學(xué)計(jì)組課設(shè)_第1頁
東北大學(xué)計(jì)組課設(shè)_第2頁
已閱讀5頁,還剩22頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、計(jì)算機(jī)組成原理課程設(shè)計(jì)報(bào)告班級(jí):計(jì)算機(jī)班姓名:學(xué)號(hào):完成時(shí)間:一、課程設(shè)計(jì)目的1在實(shí)驗(yàn)機(jī)上設(shè)計(jì)實(shí)現(xiàn)機(jī)器指令及對應(yīng)的微指令(微程序)并驗(yàn)證,從而進(jìn)一步掌握微程序設(shè)計(jì)控制器的基本方法并了解指令系統(tǒng)與硬件結(jié)構(gòu)的對應(yīng)關(guān)系;2通過控制器的微程序設(shè)計(jì),綜合理解計(jì)算機(jī)組成原理課程的核心知識(shí)并進(jìn)一步建立整機(jī)系統(tǒng)的概念;3培養(yǎng)綜合實(shí)踐及獨(dú)立分析、解決問題的能力。二、課程設(shè)計(jì)的任務(wù)針對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)并編寫對應(yīng)的微程序;之后編寫實(shí)現(xiàn)乘法和除法的程序進(jìn)行設(shè)計(jì)的驗(yàn)證。三、課程設(shè)計(jì)使用

2、的設(shè)備(環(huán)境)1硬件 COP2000實(shí)驗(yàn)儀 PC機(jī)2軟件 COP2000仿真軟件四、課程設(shè)計(jì)的具體內(nèi)容(步驟)1詳細(xì)了解并掌握COP2000模型機(jī)的微程序控制器原理,通過綜合實(shí)驗(yàn)來實(shí)現(xiàn)總體概述C0P2000模型機(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,以及中斷控制電路、跳轉(zhuǎn)控制電路。其中運(yùn)算器和中斷控制電路以及跳轉(zhuǎn)控制電路用

3、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)周期,一個(gè)狀態(tài)周期為一個(gè)時(shí)鐘脈沖每個(gè)狀態(tài)周期產(chǎn)生不同的控制邏輯,實(shí)現(xiàn)模型機(jī)的各種功能。

4、模型機(jī)有24位控制位以控制寄存器的輸入、輸出,選擇運(yùn)算器的運(yùn)算功能,存儲(chǔ)器的讀寫。模型機(jī)的缺省的指令集分幾大類:算術(shù)運(yùn)算指令、邏輯運(yùn)算指令、移位指令、數(shù)據(jù)傳輸指令、跳轉(zhuǎn)指令、中斷返回指令、輸入/輸出指令。模型機(jī)的尋址方式表1模型機(jī)的尋址方式模型機(jī)的尋址方式尋址方式說明指令舉例指令說明累加器尋址操作數(shù)為累加器ACPLA將累加器A的值取反隱含尋址累加器AOUT將累加器A的值輸出到輸出端口寄存器OUT寄存器尋址參與運(yùn)算的數(shù)據(jù)在R0R3的寄存器中ADDA,R0將寄存器R0的值加上累加器A的值,再存入累加器A中寄存器間接尋址參與運(yùn)算的數(shù)據(jù)在存儲(chǔ)器EM中,數(shù)據(jù)的地址在寄存器R0-R3中MOVA,R1將寄存

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

6、制位以控制寄存器的輸入、輸出,選擇運(yùn)算器的運(yùn)算功能,存儲(chǔ)器的讀寫。微程序控制器由微程序給出24位控制信號(hào),而微程序的地址又是由指令碼提供的,也就是說24位控制信號(hào)是由指令碼確定的。該模型機(jī)的微指令的長度為24位,其中微指令中只含有微命令字段,沒有微地址字段。其中微命令字段采用直接按位的表示法,哪位為0,表示選中該微操作,而微程序的地址則由指令碼指定。這24位操作控制信號(hào)的功能如表2所示:(按控制信號(hào)從左到右的順序依次說明)表2微指令控制信號(hào)的功能操作控制信號(hào)控制信號(hào)的說明XRD外部設(shè)備讀信號(hào),當(dāng)給出了外設(shè)的地址后,輸出此信號(hào),從指定外設(shè)讀數(shù)據(jù)。EMWR程序存儲(chǔ)器EM寫信號(hào)。EMRD程序存儲(chǔ)器E

7、M讀信號(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ù)器aPCoEINT中斷返回時(shí)清除中斷響應(yīng)和中斷請求標(biāo)志,便于下次中斷。ELPPC打入允許,與指令寄存器的IR3、IR2位結(jié)合,控制程序跳轉(zhuǎn)。MAREN將數(shù)據(jù)總線DBUS上數(shù)據(jù)打入地址寄存器MARoMAROE將地址寄存器MAR的值送到地址總線ABUS上。OUTEN將數(shù)據(jù)總線DBUS上數(shù)據(jù)送到輸出端口寄存器OUT里。STEN將數(shù)據(jù)總線DBUS上

8、數(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、XI、X0二位組合來譯碼選擇將數(shù)據(jù)送到DBUS上的寄存器。X1X0WEN將數(shù)據(jù)總線DBUS的值打入工作寄存器W中。AEN將數(shù)據(jù)總線DBUS的值打入累加器A中。S2S2、S1、SO三位組合決定ALU做何種運(yùn)算。S1SOCOP2000中有7個(gè)寄存器可以向數(shù)據(jù)總線輸出數(shù)據(jù),但在某一特定時(shí)刻只能有一個(gè)寄存器輸出數(shù)據(jù).由X2,X1,XO決

9、定那一個(gè)寄存器輸出數(shù)據(jù)。X2X1X0輸出寄存器000IN_OE外部輸入門001IA_OE中斷向量010ST_OE堆棧寄存器011PC_OEPC寄存器100D_OE直通門101R_OE右移門110L_OE左移門111沒有輸出C0P2000中的運(yùn)算器由一片EPLD實(shí)現(xiàn).有8種運(yùn)算,通過S2,S1,SO來選擇。運(yùn)算數(shù)據(jù)由寄存器A及寄存器W給出,運(yùn)算結(jié)果輸出到直通門D。S2S1S0功能000A+W加001A-W減010AW或011A&W與100A+W+C帶進(jìn)位加101A-W-C帶進(jìn)位減110AA取反111A輸出A2.計(jì)算機(jī)中實(shí)現(xiàn)乘法和除法的原理(1)無符號(hào)乘法在模型機(jī)上實(shí)現(xiàn)無符號(hào)數(shù)乘法運(yùn)算時(shí),

10、采用“加法移位”的重復(fù)運(yùn)算方法。q硬件原理框圖:被乘數(shù)左移乘數(shù)右移Q算法流程圖:(2)無符號(hào)除法在模型機(jī)上實(shí)現(xiàn)無符號(hào)數(shù)除法運(yùn)算時(shí),采用“加減交替算法”的運(yùn)算方法。(J算法流程圖初始化:被除數(shù),除數(shù),商,計(jì)數(shù)器>做減法Y商上0硬件原理框圖:初始化:除數(shù)左移除數(shù)右移3對應(yīng)于以上算法如何分配使用COP2000實(shí)驗(yàn)儀中的硬件(1)無符號(hào)乘法符號(hào)乘法對應(yīng)于COP2000實(shí)驗(yàn)儀的硬件具體分配使用情況如下表所示:表3無符號(hào)乘法的硬件分配情況硬件名稱實(shí)現(xiàn)算法功能描述寄存器R0計(jì)算時(shí)用來存放部分積和最后的積寄存器R1 初始化時(shí),用來存放被乘數(shù); 在程序執(zhí)行的過程中,用來存放向左移位后的被乘數(shù)。寄存器R2

11、初始化時(shí),用來存放乘數(shù); 在程序執(zhí)行的過程中,用來存放向右移位后的乘數(shù)。累加器A執(zhí)行ADDA,R?(加法)、SHLR?(左移一位)、SHRR?(右移一位)等命令時(shí)所必須使用的寄存器。寄存器W執(zhí)行ADDA,R?(加法)、TESTR?,#H(測試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)的地址,使程

12、序能夠按需要自動(dòng)執(zhí)行。當(dāng)要從EM中讀取數(shù)據(jù)時(shí),由PC提供地址。存儲(chǔ)器EM存儲(chǔ)指令和數(shù)據(jù)。微程序計(jì)數(shù)器gPC向微程序存儲(chǔ)器pM提供相應(yīng)微指令的地址。微程序存儲(chǔ)器pM存儲(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)除法對應(yīng)于COP2000實(shí)驗(yàn)儀的硬件具體分配使用情況如下表所示:表4無符號(hào)除法的硬件分配情況硬件名稱實(shí)現(xiàn)算法功能描述寄存器R0初始化時(shí),用來存放被除數(shù)和計(jì)算后的余數(shù)。寄存器R1 初始化時(shí),用來存放除數(shù); 在程序執(zhí)行的過程中,用來存放向

13、右移位后的除數(shù)。寄存器R2在程序執(zhí)行過程中,用來保存當(dāng)前算得的商。寄存器R3當(dāng)作計(jì)數(shù)器使用,用來控制程序是否結(jié)束(初始值5)。累加器A 計(jì)算時(shí)用來存放中間結(jié)果; 執(zhí)行ADDA,R?(加法)、SUBA,R?(減法)等命令時(shí)所必須使用的寄存器。寄存器W執(zhí)行SUBA,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ù)線接

14、收要跳轉(zhuǎn)的地址,使程序能夠按需要自動(dòng)執(zhí)行。 當(dāng)要從EM中讀取數(shù)據(jù)時(shí),由PC提供地址。存儲(chǔ)器EM存儲(chǔ)指令和數(shù)據(jù)。微程序計(jì)數(shù)器pPC向微程序存儲(chǔ)器pM提供相應(yīng)微指令的地址。微程序存儲(chǔ)器pM存儲(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)(1)新的指令集(乘除法指令集)助記符機(jī)器碼1機(jī)器碼2指令說明FATCHOOOOOOxx00-03實(shí)驗(yàn)機(jī)占用,不可修改。復(fù)位后,所有寄存器清0,首先執(zhí)行FATCH指令取指。A

15、DDR?,A000001xx04-07將累加器A中的數(shù)加入到寄存器R?中,并影響標(biāo)志位。ADDR?,#II000010xx08-0BII將立即數(shù)II加入到寄存器R?中,并影響標(biāo)志位。SUBR?,A000011xxOC-OF從寄存器R?中減去累加器A中的數(shù),并影響標(biāo)志位。SUBR?,#II000100xx10-13II從寄存器R?中減去立即數(shù)II,并影響標(biāo)志位。TESTR?,#II000101xx14-17II寄存器R?“與”立即數(shù)II,只改變標(biāo)志位,并不改變R?中的數(shù)值。PUSHA000110xx18-1B將累加器A中的數(shù)據(jù)壓入堆棧寄存器ST。POPA000111xx1C-1F將堆棧寄存器ST

16、中的數(shù)據(jù)彈出到累加器A中。MOVA,R?001000xx20-23將寄存器R?中的數(shù)放入累加器A中。MOVR?,#II001001xx24-27II將立即數(shù)II存放到寄存器R?中。SHLR?001010xx28-2B寄存器R?中的數(shù)不帶進(jìn)位向左移一位,并不影響標(biāo)志位。SHRR?001011xx2C-2F寄存器R?中的數(shù)不帶進(jìn)位向右移一位,并不影響標(biāo)志位。JCMM001100xx30-33MM若進(jìn)位標(biāo)志位置1,跳轉(zhuǎn)到MM地址。JZMM001101xx34-37MM若零標(biāo)志位置1,跳轉(zhuǎn)到MM地址。JMPMM001110xx38-3B跳轉(zhuǎn)到MM地址。OVER001111xx3C-3F程序結(jié)束。2)新

17、的微指令集(乘除法微指令集)助記符狀態(tài)微地址微程序數(shù)據(jù)輸出數(shù)據(jù)打入地址輸出運(yùn)算器移位控制PCPC_FATCH_T000CBFFFF指令寄存器IRPC輸出A輸出寫入+101FFFFFFA輸出+102FFFFFFA輸出+103FFFFFFA輸出+1ADDR?,AT204FFF7EF寄存器值R?寄存器WA輸出+1T105FFFA98ALU直通寄存器R?標(biāo)志位C,Z加運(yùn)算+1T006CBFFFF指令寄存器IRPC輸出A輸出寫入+107FFFFFFA輸出+1ADDR?,#IIT308FFF7F7寄存器值R?寄存器AA輸出+1T209C7FFEF存貯器值EM寄存器WPC輸出A輸出+1+1T10AFFFA9

18、8ALU直通寄存器R?標(biāo)志位C,Z加運(yùn)算+1T00BCBFFFF指令寄存器IRPC輸出A輸出寫入+1SUBR?,AT30CFFFF8FALU直通寄存器WA輸出+1T20DFFF7F7寄存器值R?寄存器AA輸出+1T10EFFFA99ALU直通寄存器R?標(biāo)志位C,Z減運(yùn)算+1T00FCBFFFF指令寄存器IRPC輸出A輸出寫入+1SUBR?,#IIT310FFF7F7寄存器值R?寄存器AA輸出+1T211C7FFEF存貯器值EM寄存器WPC輸出A輸出+1+1T112FFFA99ALU直通寄存器R?標(biāo)志位C,Z減運(yùn)算+1T013CBFFFF指令寄存器IRPC輸出A輸出寫入+1TESTR?,#IIT

19、314C7FFFF存貯器值EM寄存器WPC輸出A輸出+1+1T215FFF7F7寄存器值R?寄存器AA輸出+1T116FFFE93ALU直通寄存器R?標(biāo)志位C,Z與運(yùn)算+1TO17CBFFFF指令寄存器IRPC輸出A輸出寫入+1PUSHAT118FFEF9FALU直通堆棧寄存器STA輸出+1TO19CBFFFF指令寄存器IRPC輸出A輸出寫入+11AFFFFFFA輸出+1IBFFFFFFA輸出+1POPAT11CFFFF57堆棧寄存器ST寄存器AA輸出+1TOIDCBFFFF指令寄存器IRPC輸出A輸出寫入+1IEFFFFFFA輸出+1IFFFFFFFA輸出+1MOVA,R?T120FFF7F

20、7寄存器值R?寄存器AA輸出+1TO21CBFFFF指令寄存器IRPC輸出A輸出寫入+122FFFFFFA輸出23FFFFFFA輸出MOVR?,#IIT124C7FBFF存貯器值EM寄存器R?PC輸出A輸出+1+1TO25CBFFFF指令寄存器IRPC輸出A輸出寫入+126FFFFFFA輸出+127FFFFFFA輸出+1SHLR?T228FFF7F7寄存器值R?寄存器AA輸出+1T129FFF9DFALU左移寄存器R?A輸出左移+1TO2ACBFFFF指令寄存器IRPC輸出A輸出寫入+12BFFFFFFA輸出+1SHRR?T22CFFF7F7寄存器值R?寄存器AA輸出+1T12DFFF9BFA

21、LU右移寄存器R?A輸出右移+1TO2ECBFFFF指令寄存器IRPC輸出A輸出寫入+12FFFFFFFA輸出+1JCMMT130C6FFFF存貯器值寄存器PCPC輸出A輸出+1寫入EMTO31CBFFFF指令寄存器IRPC輸出A輸出寫入+132FFFFFFA輸出+133FFFFFFA輸出+1JZMMT134C6FFFF存貯器值EM寄存器PCPC輸出A輸出+1寫入TO35CBFFFF指令寄存器IRPC輸出A輸出寫入+136FFFFFFA輸出+137FFFFFFA輸出+1JMPMMT138C6FFFF存貯器值EM寄存器PCPC輸出A輸出+1寫入TO39CBFFFF指令寄存器IRPC輸出A輸出寫入

22、+13AFFFFFFA輸出+13BFFFFFFA輸出+1OVERTO3CCBFFFF指令寄存器IRPC輸出A輸出寫入+13DFFFFFFA輸出+13EFFFFFFA輸出+13FFFFFFFA輸出+15用設(shè)計(jì)完成的新指令集編寫實(shí)現(xiàn)無符號(hào)二進(jìn)制乘法、除法功能的匯編語言程序1)乘法4位乘法的算法流程圖與匯編語言程序清單MOVR0,#00HMOVR1,#09HMOVR2,#06HLOOP:TESTR2,#0FHJZLASTTESTR2,#01HJZNEXTMOVA,R1ADDR0,ANEXT:SHLR1SHRR2JMPLOOPLAST:OVER;初始化部分積;初始化被乘數(shù);初始化乘數(shù);測試乘數(shù)是否為0

23、;是0跳轉(zhuǎn),程序結(jié)束;測試乘數(shù)末位時(shí)候?yàn)?;是0跳轉(zhuǎn),不用加被乘數(shù);被乘數(shù)送累加器;被乘數(shù)加到部分積;被乘數(shù)左移一位;乘數(shù)右移一位;跳轉(zhuǎn)到下一次測試;程序結(jié)束乘法的算法流程圖:開始2)除法4位除法的算法流程圖與匯編語言程序清單MOVR0,#31H;初始化被除數(shù)MOVR1,#07H;初始化除數(shù)MOVR2,#00H;初始化商MOVR3,#05H;初始化計(jì)數(shù)器TESTR1,#0FH;測試除數(shù)是否為0JZOVERFLOW;除數(shù)是0,轉(zhuǎn)到溢出處理MOVA,R1;除數(shù)送累加器PUSHA;保存除數(shù)SHLR1;除數(shù)左移四位SHLR1SHLR1SHLR1MOVA,R1;移位后除數(shù)送累加器SUBR0,A;被除數(shù)減

24、去移位后除數(shù)JCZERO;有進(jìn)位跳到ZERO,上0處理JMPOVERFLOW;首次沒借位會(huì)得出5位商,溢出處理ZERO:SHLR2SHRR1SUBR3,#01HJZFINISH;商左移一位;除數(shù)右移一位;計(jì)數(shù)器減1;計(jì)數(shù)器為0,跳轉(zhuǎn)到FINISHMOVA,R1;被除數(shù)減去移位后除數(shù)ADDR0,A;被除數(shù)加上移位后除數(shù)JCONEJMPZERO;有借位跳到ONE,上1處理;沒借位跳到ZERO,上0處理ONE:SHLR2ADDR2,#01HSHRR1SUBR3,#01HJZFINISH;商左移一位;商加1;除數(shù)右移一位;計(jì)數(shù)器減1;計(jì)數(shù)器為0,跳轉(zhuǎn)到FINISHMOVA,R1SUBR0,AJCZER

25、O;移位后除數(shù)送累加器;被除數(shù)減去移位后除數(shù);有借位跳到ZERO,上0處理JMPONE;沒借位跳到ONE,上1處理OVERFLOW:MOVR2,#0FFHJMPJIESHU;溢出,商置為全1;無條件跳轉(zhuǎn)到程序結(jié)束FINISH:TESTR0,#80H;測試余數(shù)是否為負(fù)JZJIESHU;為正不用處理POPA;恢復(fù)除數(shù)ADDR0,A;余數(shù)加上除數(shù)JMPJIESHU;跳轉(zhuǎn)到程序結(jié)束JIESHU:OVERCYCLE:JMPCYCLE除法算法流程圖:開始溢出處理初始化:被除數(shù)R0,除數(shù)R1,商R2,計(jì)數(shù)器R3,除數(shù)左移四位除數(shù)R1為0?N被除數(shù)R0減除數(shù)R1有借位嗎?商R2左移一位,加0除數(shù)R1右移一位,

26、計(jì)數(shù)器R3減1計(jì)數(shù)器R3為0?被除數(shù)R0減除數(shù)R1一有借位嗎?Y商R2左移一位,加1除數(shù)R1右移一位,計(jì)數(shù)器R3減1余數(shù)為負(fù)?恢復(fù)除數(shù)R2,余數(shù)R0加除數(shù)R2結(jié)束計(jì)數(shù)器R3為0?N被除數(shù)R0加除數(shù)R1有進(jìn)位嗎?6上述程序的運(yùn)行情況(跟蹤結(jié)果)(J乘法;程序運(yùn)行F過程匯編指令程序地址機(jī)器碼指令說明微程序PCPC運(yùn)行時(shí)寄存器或存儲(chǔ)器的值FATCH0000實(shí)驗(yàn)機(jī)占用,不可修改。復(fù)位后,所有寄存器清0,首先執(zhí)行_FATCH_指令取指。CBFFFF+1寫入EM:24MOVR0,#00002400將立即數(shù)00H存放到寄存器R0中。C7FBFFCBFFFF+1+1+1寫入EM:24EM:00R0:00MOV

27、Rl,#09022509將立即數(shù)09H存放到寄存器R1中。C7FBFFCBFFFF+1+1+1寫入EM:25EM:09R1:09MOVR2,#06042606將立即數(shù)06H存放到寄存器R2中。C7FBFFCBFFFF+1+1+1寫入EM:26EM:06R2:06TESTR2,#0F06160F寄存器R2與立即數(shù)0FH,只改變標(biāo)志位,并不改變R2中的數(shù)值。C7FFEFFFF7F7FFFE93CBFFFF+1+1+1+1+1寫入EM:16EM:0FW:0FEM:0FA:06EM:0FJZ14083414若零標(biāo)志位置1,跳轉(zhuǎn)到14H地址。C6FFFFCBFFFF寫入+1+1寫入EM:34EM:14T

28、ESTR2,#010A1601寄存器R2與立即數(shù)01H,只改變標(biāo)志位,并不改變R2中的數(shù)值。C7FFEFFFF7F7FFFE93CBFFFF+1+1+1+1+1寫入EM:16EM:01W:01EM:01A:06EM:01JZ100C3410若零標(biāo)志位置1,跳轉(zhuǎn)到14H地址。C6FFFFCBFFFF寫入+1+1寫入EM:34EM:10SHLR11029寄存器R1中的數(shù)不帶進(jìn)位向左移一位,并不影響標(biāo)志位。FFF7F7FFF9DFCBFFFF+1+1+1寫入EM:29EM:29A:09EM:29R1:12SHRR2112E寄存器R2中的數(shù)不帶進(jìn)位向右移一位,并不影響標(biāo)志位。FFF7F7FFF9BFC

29、BFFFF+1+1+1寫入EM:2EEM:2EA:06EM:2ER2:03JMP06123806跳轉(zhuǎn)到06H地址。C6FFFFCBFFFF寫入+1+1寫入EM:38EM:06TESTR2,#0F06160F寄存器R2與立即數(shù)0FH,只改變標(biāo)志位,并不改變R2中的數(shù)值。C7FFEFFFF7F7FFFE93CBFFFF+1+1+1+1+1寫入EM:16EM:0FW:0FEM:0FA:03EM:0FJZ14083414若零標(biāo)志位置1,跳轉(zhuǎn)到14H地址。C6FFFFCBFFFF寫入+1+1寫入EM:34EM:14TESTR2,#010A1601寄存器R2與立即數(shù)01H,只改變標(biāo)志位,并不改變R2中的數(shù)

30、值。C7FFEFFFF7F7FFFE93CBFFFF+1+1+1+1+1寫入EM:16EM:01W:01EM:01A:03EM:01JZ100C3410若零標(biāo)志位置1,跳轉(zhuǎn)到14H地址。C6FFFFCBFFFF寫入+1+1寫入EM:34EM:10MOVA,R10E21將寄存器R1中的數(shù)放入累加器A中。FFF7F7CBFFFF+1+1寫入EM:21EM:21A:12ADDR0,A0F04將累加器A中的數(shù)加入到寄存器R0中,并影響標(biāo)志位。FFF7EFFFFA98CBFFFF+1+1+1寫入EM:04EM:04W:00EM:04R0:12SHLR11029寄存器R1中的數(shù)不帶進(jìn)位向左移一位,并不影響

31、標(biāo)志位。FFF7F7FFF9DFCBFFFF+1+1+1寫入EM:29EM:29A:12EM:29R1:24SHRR2112E寄存器R2中的數(shù)不帶進(jìn)位向右移一位,并不影響標(biāo)志位。FFF7F7FFF9BFCBFFFF+1+1+1寫入EM:2EEM:2EA:03EM:2ER2:01JMP06123806跳轉(zhuǎn)到06H地址。C6FFFFCBFFFF寫入+1+1寫入EM:38EM:06TESTR2,#0F06160F寄存器R2與立即數(shù)0FH,只改變標(biāo)志位,并不改變R2中的數(shù)值。C7FFEFFFF7F7FFFE93CBFFFF+1+1+1+1+1寫入EM:16EM:0FW:0FEM:0FA:01EM:0F

32、JZ14083414若零標(biāo)志位置1,跳轉(zhuǎn)到14H地址。C6FFFFCBFFFF寫入+1+1寫入EM:34EM:14TESTR2,#010A1601寄存器R2與立即數(shù)01H,只改變標(biāo)志位,并不改變R2中的數(shù)值。C7FFEFFFF7F7FFFE93CBFFFF+1+1+1+1+1寫入EM:16EM:01W:01EM:01A:01EM:01JZ100C3410若零標(biāo)志位置1,跳轉(zhuǎn)到14H地址。C6FFFFCBFFFF寫入+1+1寫入EM:34EM:10MOVA,R10E21將寄存器R1中的數(shù)放入累加器A中。FFF7F7CBFFFF+1+1寫入EM:21EM:21A:24ADDR0,AOF04將累加器

33、A中的數(shù)加入到寄存器R0中,并影響標(biāo)志位。FFF7EFFFFA98CBFFFF+1+1+1寫入EM:04EM:04W:12EM:04R0:36SHLR11029寄存器R1中的數(shù)不帶進(jìn)位向左移一位,并不影響標(biāo)志位。FFF7F7FFF9DFCBFFFF+1+1+1寫入EM:29EM:29A:24EM:29R1:48SHRR2112E寄存器R2中的數(shù)不帶進(jìn)位向右移一位,并不影響標(biāo)志位。FFF7F7FFF9BFCBFFFF+1+1+1寫入EM:2EEM:2EA:01EM:2ER2:00JMP06123806跳轉(zhuǎn)到06H地址。C6FFFFCBFFFF寫入+1+1寫入EM:38EM:06TESTR2,#0

34、F06160F寄存器R2與立即數(shù)0FH,只改變標(biāo)志位,并不改變R2中的數(shù)值。C7FFEFFFF7F7FFFE93CBFFFF+1+1+1+1寫入EM:16EM:0FW:0FEM:0FA:01EM:0FJZ14083414若零標(biāo)志位置1,跳轉(zhuǎn)到14H地址。C6FFFFCBFFFF寫入+1+1寫入EM:34EM:14OVER143C程序結(jié)束。CBFFFF+1寫入EM:3C除法程序運(yùn)行過程表8無符號(hào)除法程序的運(yùn)行過程匯編指令程序地址機(jī)器碼指令說明微程序PCPC運(yùn)行時(shí)寄存器或存儲(chǔ)器的值FATCH0000實(shí)驗(yàn)機(jī)占用,不可修改。復(fù)位后,所有寄存器清0,首先執(zhí)行_FATCH_指令取指。CBFFFF+1寫入E

35、M:24MOVR0,#31002431將寄存器R0中的數(shù)放入累加器31H中。C7FBFFCBFFFF+1+1+1寫入EM:24EM:31R0:31MOVR1,#07022507將寄存器R1中的數(shù)放入累加器07H中。C7FBFFCBFFFF+1+1+1寫入EM:25EM:07R1:07MOVR2,#00042600將寄存器R2中的數(shù)放入累加器00H中。C7FBFFCBFFFF+1+1+1寫入EM:26EM:00R2:00MOVR3,#05062705將寄存器R3中的數(shù)放入累加05H中。C7FBFFCBFFFF+1+1+1寫入EM:27EM:05R3:05TESTR1,#0F08150F寄存器R1

36、與立即數(shù)0FH,只改變標(biāo)志位,并不改變R1中的數(shù)值。C7FFEFFFF7F7FFFE93CBFFFF+1+1+1+1+1寫入EM:15EM:0FW:0FEM:0FA:07EM:0FJZOVERFLOW0A3432若零標(biāo)志位置1,跳轉(zhuǎn)到32H地址。C6FFFFCBFFFF寫入+1+1寫入EM:34EM:32MOVA,R10C21將寄存器R1中的數(shù)放入累加器A中。FFF7F7CBFFFF+1+1寫入EM:21R1:07EM:21A:07PUSHA0D18將累加器A中的數(shù)據(jù)壓入堆棧寄存器ST。FFEF9FCBFFFF+1+1寫入EM:18EM:18ST:07SHLR10E29寄存器R1中的數(shù)不帶進(jìn)位

37、向左移一位,并不影響標(biāo)志位。FFF7F7FFF9DFCBFFFF+1+1+1寫入EM:29EM:29EM:29R1:0ESHLR10F29寄存器R1中的數(shù)不帶進(jìn)位向左移一位,并不影響標(biāo)志位。FFF7F7FFF9DFCBFFFF+1+1+1寫入EM:29EM:29A:0EEM:29R1:1CSHLR11029寄存器R1中的數(shù)不帶進(jìn)位向左移一位,并不影響標(biāo)志位。FFF7F7FFF9DFCBFFFF+1+1+1寫入EM:29EM:29A:1CEM:29R1:38SHLR11129寄存器R1中的數(shù)不帶進(jìn)位向左移一位,并不影響標(biāo)志位。FFF7F7FFF9DFCBFFFF+1+1+1寫入EM:29EM:2

38、9A:38EM:29R1:70MOVA,R11221將寄存器R1中的數(shù)放入累FFF7F7EM:21加器A中。CBFFFF+1EM:21A:70SUBR0,A130C從寄存器R0中減去累加器A中的數(shù),并影響標(biāo)志位。FFFF8FFFF7F7FFFA99CBFFFF+1+1+1+1寫入EM:0CEM:0CW:70EM:0CA:31EM:0CR0:C1JCZERO143018若進(jìn)位標(biāo)志位置1,跳轉(zhuǎn)到18H地址。C6FFFFCBFFFF寫入+1+1寫入EM:30EM:18SHLR2182A寄存器R2中的數(shù)不帶進(jìn)位向左移一位,并不影響標(biāo)志位。FFF7F7FFF9DFCBFFFF+1+1+1寫入EM:2AE

39、M:2AA:00EM:2AR2:00SHRR1192D寄存器R1中的數(shù)不帶進(jìn)位向右移一位,并不影響標(biāo)志位。FFF7F7FFF9BFCBFFFF+1+1+1寫入EM:2DEM:2DA:70EM:2DR1:38SUBR3,#011A1301從寄存器R3中減去立即數(shù)01H,并影響標(biāo)志位。FFF7F7C7FFEFFFFA99CBFFFF+1+1+1+1+1寫入EM:13EM:13A:05EM:01W:01EM:01R3:04JZFINISH1C3436若零標(biāo)志位置1,跳轉(zhuǎn)到36H地址。C6FFFFCBFFFF寫入+1+1寫入EM:34EM:36MOVA,R11E21將寄存器R1中的數(shù)放入累加器A中。F

40、FF7F7CBFFFF+1+1寫入EM:21EM:21A:38ADDR0,A1F04將累加器A中的數(shù)加入到寄存器R0中,并影響標(biāo)志位。FFF7EFFFFA98CBFFFF+1+1+1寫入EM:04EM:04W:C1EM:04R0:F9JCONE203024若進(jìn)位標(biāo)志位置1,跳轉(zhuǎn)到24H地址。C6FFFFCBFFFF寫入+1+1寫入EM:30EM:24JMPZERO223818無條件跳轉(zhuǎn)到18H地址C6FFFFCBFFFF寫入+1+1寫入EM:38EM:18SHLR2182A寄存器R2中的數(shù)不帶進(jìn)位向左移一位,并不影響標(biāo)志位。FFF7F7FFF9DFCBFFFF+1+1+1寫入EM:2AEM:2

41、AA:00EM:2AR2:00SHRR1192D寄存器R1中的數(shù)不帶進(jìn)位向右移一位,并不影響標(biāo)志位。FFF7F7FFF9BFCBFFFF+1+1+1寫入EM:2DEM:2DA:38EM:2DR1:1CSUBR3,#011A1301從寄存器R3中減去立即數(shù)01H,并影響標(biāo)志位。FFF7F7C7FFEFFFFA99CBFFFF+1+1+1+1+1寫入EM:13EM:13A:04EM:01W:01EM:01R3:03JZFINISH1C3436若零標(biāo)志位置1,跳轉(zhuǎn)到36H地址。C6FFFFCBFFFF寫入+1+1寫入EM:34EM:36MOVA,R11E21將寄存器R1中的數(shù)放入累加器A中。FFF7

42、F7CBFFFF+1+1寫入EM:21EM:21A:1CADDR2,#01250A01將立即數(shù)01H加入到寄存器FFF7F7+1EM:0AR2中,并影響標(biāo)志位。C7FFEFFFFA98CBFFFF+1+1+1+1寫入EM:0AA:04EM:01W:01EM:01R2:05JC24203024若進(jìn)位標(biāo)志位置1,跳轉(zhuǎn)到18H地址。C6FFFFCBFFFF寫入+1+1寫入EM:30EM:24SHLR2242A寄存器R2中的數(shù)不帶進(jìn)位向左移一位,并不影響標(biāo)志位。FFF7F7FFF9DFCBFFFF+1+1+1寫入EM:2AEM:2AA:01EM:2AR2:00SHRR1192D寄存器R1中的數(shù)不帶進(jìn)位

43、向右移一位,并不影響標(biāo)志位。FFF7F7FFF9BFCBFFFF+1+1+1寫入EM:2DEM:2DA:24EM:2DR1:12ADDR2,#01250A01將立即數(shù)01H加入到寄存器R2中,并影響標(biāo)志位。FFF7F7C7FFEFFFFA98CBFFFF+1+1+1+1+1寫入EM:0AEM:0AA:04EM:01W:01EM:01R2:05SHRR1272D寄存器R1中的數(shù)不帶進(jìn)位向右移一位,并不影響標(biāo)志位。FFF7F7FFF9BFCBFFFF+1+1+1寫入EM:2DEM:2DA:1CEM:2DR1:0ESUBR3,#01281301從寄存器R3中減去立即數(shù)01H,并影響標(biāo)志位。FFF7F

44、7C7FFFFFFFA99CBFFFF+1+1+1+1+1寫入EM:13EM:13A:03EM:01W:01EM:01R3:02JZ362A3436若零標(biāo)志位置1,跳轉(zhuǎn)到36H地址。C6FFFFCBFFFF寫入+1+1寫入EM:34EM:36MOVA,R12C21將寄存器R1中的數(shù)放入累加器A中。FFF7F7CBFFFF+1+1寫入EM:21EM:21A:0ESUBR0,A2D0C從寄存器R0中減去累加器A中的數(shù),并影響標(biāo)志位。FFFF8FFFF7F7FFFA99CBFFFF+1+1+1+1寫入EM:0CEM:0CW:0EEM:0CA:15EM:0CR0:07JC182E3018若進(jìn)位標(biāo)志位置1,跳轉(zhuǎn)到18H地址。C6FFFFCBFFFF寫入+1寫入+1EM:30EM:18JMP24303824跳轉(zhuǎn)到24H地址。C6FFFFCBFFFF寫入+1+1寫入EM:38EM:24SHLR2242A寄存器R2中的數(shù)不帶進(jìn)位向左移一位,并不影響標(biāo)志位。FFF7F7FFF9DFCBFFFF+1+1+

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論