東北大學計組課設_第1頁
東北大學計組課設_第2頁
東北大學計組課設_第3頁
東北大學計組課設_第4頁
東北大學計組課設_第5頁
已閱讀5頁,還剩19頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

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

2、課程設計使用的設備(環境)1硬件l COP2000實驗儀l PC機2軟件l COP2000仿真軟件四、課程設計的具體內容(步驟)1詳細了解并掌握COP 2000模型機的微程序控制器原理,通過綜合實驗來實現 總體概述COP2000模型機包括了一個標準CPU所具備所有部件,這些部件包括:運算器ALU、累加器A、工作寄存器W、左移門L、直通門D、右移門R、寄存器組R0-R3、程序計數器PC、地址寄存器MAR、堆棧寄存器ST、中斷向量寄存器IA、輸入端口IN、輸出端口寄存器OUT、程序存儲器EM、指令寄存器IR、微程序計數器uPC、微程序存儲器uM,以及中斷控制電路、跳轉控制電路。其中運算器和中斷控制

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

4、輯,實現模型機的各種功能。模型機有24位控制位以控制寄存器的輸入、輸出,選擇運算器的運算功能,存儲器的讀寫。模型機的缺省的指令集分幾大類: 算術運算指令、邏輯運算指令、移位指令、數據傳輸指令、跳轉指令、中斷返回指令、輸入/輸出指令。 模型機的尋址方式表1 模型機的尋址方式模型機的尋址方式尋址方式說明指令舉例指令說明累加器尋址操作數為累加器ACPL A將累加器A的值取反隱含尋址累加器AOUT將累加器A的值輸出到輸出端口寄存器OUT寄存器尋址參與運算的數據在R0R3的寄存器中ADD A,R0將寄存器R0的值加上累加器A的值,再存入累加器A中寄存器間接尋址參與運算的數據在存儲器EM中,數據的地址在寄

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

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

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

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

9、 但在某一特定時刻只能有一個寄存器輸出數據. 由X2,X1,X0決定那一個寄存器輸出數據。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實現. 有8種運算, 通過S2,S1,S0來選擇。運算數據由寄存器A及寄存器W給出, 運算結果輸出到直通門D。S2 S1 S0功能0 0 0A+W 加0 0 1A-W 減0 1 0A|W 或0 1 1A&W 與1 0

10、 0A+W+C 帶進位加1 0 1A-W-C 帶進位減1 1 0A A取反1 1 1A 輸出A2. 計算機中實現乘法和除法的原理(1)無符號乘法在模型機上實現無符號數乘法運算時,采用“加法移位”的重復運算方法。ALUAWR2R1被乘數乘數DLRR0(部分積和結果)判斷乘數末位乘數右移被乘數左移硬件原理框圖:算法流程圖:初始化被乘數及乘數初始化部分積開始計算部分積乘數末位為1?結束被乘數左移一位(不帶進位)乘數右移一位(不帶進位)輸出結果(R0)乘數為0?YNYN(2)無符號除法在模型機上實現無符號數除法運算時,采用“加減交替算法”的運算方法。算法流程圖 硬件原理框圖:ALUAWR1R0被除數除

11、數DLR標志位C除數右移R2(商)R3(計數器)初始化:除數左移3對應于以上算法如何分配使用COP2000實驗儀中的硬件(1)無符號乘法符號乘法對應于COP2000實驗儀的硬件具體分配使用情況如下表所示:表3 無符號乘法的硬件分配情況硬件名稱實現算法功能描述寄存器R0計算時用來存放部分積和最后的積寄存器R1 初始化時,用來存放被乘數; 在程序執行的過程中,用來存放向左移位后的被乘數。寄存器R2 初始化時,用來存放乘數; 在程序執行的過程中,用來存放向右移位后的乘數。累加器A執行ADD A,R?(加法)、SHL R?(左移一位)、SHR R?(右移一位)等命令時所必須使用的寄存器。寄存器W執行A

12、DD A,R?(加法)、TEST R?,#II(測試R2的末位)等雙操作數命令時所必須使用的寄存器。左移門L用來實現相應數據左移一位的運算,并能夠控制該運算后的結果是否輸出到數據總線。直通門D用來控制ALU的執行結果是否輸出到數據總線。右移門R用來實現相應數據右移一位的運算,并能夠控制該運算后的結果是否輸出到數據總線。程序計數器PC 控制程序按順序正常執行; 當執行轉移指令時,從數據線接收要跳轉的地址,使程序能夠按需要自動執行。 當要從EM中讀取數據時,由PC提供地址。存儲器EM存儲指令和數據。微程序計數器PC向微程序存儲器M提供相應微指令的地址。微程序存儲器M存儲相應指令的微指令。輸出寄存器

13、OUT可以將運算結果輸出到輸出寄存器OUT(本實驗未用)。堆棧ST當存儲于累加器A的值將要受到破壞時,將其數據保存在堆棧ST中,使程序能夠正常地執行。(2)無符號除法 無符號除法對應于COP2000實驗儀的硬件具體分配使用情況如下表所示:表4 無符號除法的硬件分配情況硬件名稱實現算法功能描述寄存器R0初始化時,用來存放被除數和計算后的余數。寄存器R1 初始化時,用來存放除數; 在程序執行的過程中,用來存放向右移位后的除數。寄存器R2在程序執行過程中,用來保存當前算得的商。寄存器R3當作計數器使用,用來控制程序是否結束(初始值5)。累加器A 計算時用來存放中間結果; 執行ADD A,R?(加法)

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

15、應指令的微指令。輸出寄存器OUT可以將運算結果輸出到輸出寄存器OUT(本實驗未用)。堆棧ST當存儲于累加器A的值將要受到破壞時,將其數據保存在堆棧ST中,使程序能夠正常地執行。4在COP2000集成開發環境下設計全新的指令/微指令系統(1) 新的指令集(乘除法指令集)助記符機器碼1機器碼2指令說明_FATCH_ 000000xx00-03實驗機占用,不可修改。復位后,所有寄存器清0,首先執行 _FATCH_ 指令取指。ADD R?,A 000001xx04-07將累加器A中的數加入到寄存器R?中,并影響標志位。ADDR?,#II000010xx08-0BII將立即數II加入到寄存器R?中,并影

16、響標志位。SUB R?,A000011xx0C-0F從寄存器R?中減去累加器A中的數,并影響標志位。SUBR?,#II000100xx10-13II從寄存器R?中減去立即數II,并影響標志位。TEST R?,#II000101xx14-17II寄存器R? “與” 立即數II,只改變標志位,并不改變R?中的數值。PUSH A000110xx18-1B將累加器A中的數據壓入堆棧寄存器ST。POP A000111xx1C-1F將堆棧寄存器ST中的數據彈出到累加器A中。MOV A,R?001000xx20-23將寄存器R?中的數放入累加器A中。MOVR?,#II001001xx24-27II將立即數I

17、I存放到寄存器R?中。SHL R?001010xx28-2B寄存器R?中的數不帶進位向左移一位,并不影響標志位。SHR R?001011xx2C-2F寄存器R?中的數不帶進位向右移一位,并不影響標志位。JC MM001100xx30-33MM若進位標志位置1,跳轉到MM地址。JZ MM001101xx34-37MM若零標志位置1,跳轉到MM地址。JMP MM001110xx38-3B跳轉到MM地址。OVER001111xx3C-3F程序結束。(2) 新的微指令集(乘除法微指令集)助記符狀態微地址微程序數據輸出數據打入地址輸出運算器移位控制mPCPC_FATCH_T000CBFFFF指令寄存器I

18、RPC輸出A輸出寫入+101FFFFFFA輸出+102FFFFFFA輸出+103FFFFFFA輸出+1ADD R?,AT204FFF7EF寄存器值R?寄存器WA輸出+1T105FFFA98ALU直通寄存器R? 標志位C,Z加運算+1T006CBFFFF指令寄存器IRPC輸出A輸出寫入+107FFFFFFA輸出+1ADD R?,#IIT308FFF7F7寄存器值R?寄存器AA輸出+1T209C7FFEF存貯器值EM寄存器WPC輸出A輸出+1+1T10AFFFA98ALU直通寄存器R?標志位C,Z加運算+1T00BCBFFFF指令寄存器IRPC輸出A輸出寫入+1SUB R?,A T30CFFFF8

19、FALU直通寄存器WA輸出+1T20DFFF7F7寄存器值R?寄存器AA輸出+1T10EFFFA99ALU直通寄存器R?標志位C,Z減運算+1T00FCBFFFF指令寄存器IRPC輸出A輸出寫入+1SUB R?,#IIT310FFF7F7寄存器值R?寄存器AA輸出+1T211C7FFEF存貯器值EM寄存器WPC輸出A輸出+1+1T112FFFA99ALU直通寄存器R?標志位C,Z減運算+1T013CBFFFF指令寄存器IRPC輸出A輸出寫入+1TEST R?,#IIT314C7FFFF存貯器值EM寄存器WPC輸出A輸出+1+1T215FFF7F7寄存器值R?寄存器AA輸出+1T116FFFE9

20、3ALU直通寄存器R?標志位C,Z與運算+1T017CBFFFF指令寄存器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輸出23FFFF

21、FFA輸出MOV R?,#IIT124C7FBFF存貯器值EM寄存器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輸出+1J

22、C MMT130C6FFFF存貯器值EM寄存器PCPC輸出A輸出+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輸

23、出寫入+13DFFFFFFA輸出+13EFFFFFFA輸出+13FFFFFFFA輸出+15用設計完成的新指令集編寫實現無符號二進制乘法、除法功能的匯編語言程序(1)乘法4位乘法的算法流程圖與匯編語言程序清單: MOV R0,#00H ;初始化部分積 MOV R1,#09H ;初始化被乘數 MOV R2,#06H ;初始化乘數LOOP : TEST R2,#0FH ;測試乘數是否為0 JZ LAST ;是0跳轉,程序結束 TEST R2,#01H ;測試乘數末位時候為0 JZ NEXT ;是0跳轉,不用加被乘數 MOV A,R1 ;被乘數送累加器 ADD R0,A ;被乘數加到部分積NEXT :

24、 SHL R1 ;被乘數左移一位SHR R2 ;乘數右移一位JMP LOOP ;跳轉到下一次測試LAST : OVER ;程序結束乘法的算法流程圖:初始化部分積R0,被乘數R1,乘數R2開始計算部分積R0乘數R2末位為1?結束被乘數R1左移一位(不帶進位)乘數R2右移一位(不帶進位)輸出結果(R0)乘數R2為0?YNYN(2)除法 4位除法的算法流程圖與匯編語言程序清單:MOV R0, #31H ;初始化被除數MOV R1, #07H ;初始化除數MOV R2, #00H ;初始化商MOV R3, #05H ;初始化計數器TEST R1,#0FH ;測試除數是否為0JZ OVERFLOW ;除

25、數是0,轉到溢出處理MOV A,R1 ;除數送累加器PUSH A ;保存除數SHL R1 ;除數左移四位SHL R1 SHL R1SHL R1MOV A,R1 ;移位后除數送累加器SUB R0,A ;被除數減去移位后除數JC ZERO ;有進位跳到ZERO,上0處理JMP OVERFLOW ;首次沒借位會得出5位商,溢出處理ZERO:SHL R2 ;商左移一位SHR R1 ;除數右移一位SUB R3,#01H ;計數器減1JZ FINISH ;計數器為0,跳轉到FINISHMOV A,R1 ;被除數減去移位后除數ADD R0,A ;被除數加上移位后除數JC ONE ;有借位跳到ONE,上1處理

26、JMP ZERO ;沒借位跳到ZERO,上0處理ONE:SHL R2 ;商左移一位ADD R2,#01H ;商 加1SHR R1 ;除數右移一位SUB R3,#01H ;計數器減1JZ FINISH ;計數器為0,跳轉到FINISHMOV A,R1 ;移位后除數送累加器SUB R0,A ;被除數減去移位后除數JC ZERO ;有借位跳到ZERO,上0處理JMP ONE ;沒借位跳到ONE,上1處理OVERFLOW:MOV R2,#0FFH ;溢出,商置為全1JMP JIESHU ;無條件跳轉到程序結束FINISH:TEST R0,#80H ;測試余數是否為負JZ JIESHU ;為正不用處理P

27、OP A ;恢復除數ADD R0,A ;余數加上除數JMP JIESHU ;跳轉到程序結束JIESHU:OVERCYCLE:JMP CYCLE除法算法流程圖:開始初始化:被除數R0,除數R1,商R2,計數器R3,除數左移四位除數R1為0? Y N被除數R0減 除數R1有借位嗎? N溢出處理商R2左移一位,加0 Y除數R1右移一位,計數器R3減1計數器R3為0? Y N余數為負?被除數R0減 除數R1有借位嗎? N Y N Y恢復除數R2,余數R0加除數R2商R2左移一位,加1 除數R1右移一位,計數器R3減1結束計數器R3為0? Y被除數R0加 除數R1 N有進位嗎? Y N6上述程序的運行情

28、況(跟蹤結果)乘法程序運行過程匯 編 指 令程序地址機器碼指令說明微程序PC mPC運行時寄存器或存儲器的值_FATCH_0000實驗機占用,不可修改。復位后,所有寄存器清0,首先執行 _FATCH_ 指令取指。CBFFFF+1寫入EM:24MOV R0,#00002400將立即數00H存放到寄存器R0中。C7FBFFCBFFFF+1+1+1寫入EM:24EM:00 R0:00MOV R1,#09022509將立即數09H存放到寄存器R1中。C7FBFFCBFFFF+1+1+1寫入EM:25EM:09 R1:09MOV R2,#06042606將立即數06H存放到寄存器R2中。C7FBFFCB

29、FFFF+1+1+1寫入EM:26EM:06 R2:06TEST R2,#0F06160F寄存器R2 與 立即數0FH,只改變標志位,并不改變R2中的數值。C7FFEFFFF7F7FFFE93CBFFFF+1+1+1+1+1寫入EM:16EM:0F W:0FEM:0F A:06EM:0FJZ 14083414若零標志位置1,跳轉到14H地址。C6FFFFCBFFFF寫入+1+1寫入EM:34EM:14TEST R2,#010A1601寄存器R2與立即數01H,只改變標志位,并不改變R2中的數值。C7FFEFFFF7F7FFFE93CBFFFF+1+1+1+1+1寫入EM:16EM:01 W:0

30、1EM:01 A:06EM:01JZ 100C3410若零標志位置1,跳轉到14H地址。C6FFFFCBFFFF寫入+1+1寫入EM:34EM:10SHL R11029寄存器R1中的數不帶進位向左移一位,并不影響標志位。FFF7F7FFF9DFCBFFFF+1+1+1寫入EM:29EM:29 A:09EM:29 R1:12SHR R2112E寄存器R2中的數不帶進位向右移一位,并不影響標志位。FFF7F7FFF9BFCBFFFF+1+1+1寫入EM:2EEM:2E A:06EM:2E R2:03JMP 06123806跳轉到06H地址。C6FFFFCBFFFF寫入+1+1寫入EM:38EM:0

31、6TEST R2,#0F06160F寄存器R2 與 立即數0FH,只改變標志位,并不改變R2中的數值。C7FFEFFFF7F7FFFE93CBFFFF+1+1+1+1+1寫入EM:16EM:0F W:0FEM:0F A:03EM:0FJZ 14083414若零標志位置1,跳轉到14H地址。C6FFFFCBFFFF寫入+1+1寫入EM:34EM:14TEST R2,#010A1601寄存器R2與立即數01H,只改變標志位,并不改變R2中的數值。C7FFEFFFF7F7FFFE93CBFFFF+1+1+1+1+1寫入EM:16EM:01 W:01EM:01 A:03EM:01JZ 100C3410

32、若零標志位置1,跳轉到14H地址。C6FFFFCBFFFF寫入+1+1寫入EM:34EM:10MOV A,R10E21將寄存器R1中的數放入累加器A中。FFF7F7CBFFFF+1+1寫入EM:21EM:21 A:12ADD R0,A0F04將累加器A中的數加入到寄存器R0中,并影響標志位。FFF7EFFFFA98CBFFFF+1+1+1寫入EM:04EM:04 W:00EM:04 R0:12SHL R11029寄存器R1中的數不帶進位向左移一位,并不影響標志位。FFF7F7FFF9DFCBFFFF+1+1+1寫入EM:29EM:29 A:12EM:29 R1:24SHR R2112E寄存器R

33、2中的數不帶進位向右移一位,并不影響標志位。FFF7F7FFF9BFCBFFFF+1+1+1寫入EM:2EEM:2E A:03EM:2E R2:01JMP 06123806跳轉到06H地址。C6FFFFCBFFFF寫入+1+1寫入EM:38EM:06TEST R2,#0F06160F寄存器R2 與 立即數0FH,只改變標志位,并不改變R2中的數值。C7FFEFFFF7F7FFFE93CBFFFF+1+1+1+1+1寫入EM:16EM:0F W:0FEM:0F A:01EM:0FJZ 14083414若零標志位置1,跳轉到14H地址。C6FFFFCBFFFF寫入+1+1寫入EM:34EM:14T

34、EST R2,#010A1601寄存器R2與立即數01H,只改變標志位,并不改變R2中的數值。C7FFEFFFF7F7FFFE93CBFFFF+1+1+1+1+1寫入EM:16EM:01 W:01EM:01 A:01EM:01JZ 100C3410若零標志位置1,跳轉到14H地址。C6FFFFCBFFFF寫入+1+1寫入EM:34EM:10MOV A,R10E21將寄存器R1中的數放入累加器A中。FFF7F7CBFFFF+1+1寫入EM:21EM:21 A:24ADD R0,A0F04將累加器A中的數加入到寄存器R0中,并影響標志位。FFF7EFFFFA98CBFFFF+1+1+1寫入EM:0

35、4EM:04 W:12EM:04 R0:36SHL R11029寄存器R1中的數不帶進位向左移一位,并不影響標志位。FFF7F7FFF9DFCBFFFF+1+1+1寫入EM:29EM:29 A:24EM:29 R1:48SHR R2112E寄存器R2中的數不帶進位向右移一位,并不影響標志位。FFF7F7FFF9BFCBFFFF+1+1+1寫入EM:2EEM:2E A:01EM:2E R2:00JMP 06123806跳轉到06H地址。C6FFFFCBFFFF寫入+1+1寫入EM:38EM:06TEST R2,#0F06160F寄存器R2 與 立即數0FH,只改變標志位,并不改變R2中的數值。C

36、7FFEFFFF7F7FFFE93CBFFFF+1+1+1+1寫入EM:16EM:0F W:0FEM:0F A:01EM:0FJZ 14083414若零標志位置1,跳轉到14H地址。C6FFFFCBFFFF寫入+1+1寫入EM:34EM:14OVER143C程序結束。CBFFFF+1寫入EM:3C 除法程序運行過程表8 無符號除法程序的運行過程匯 編 指 令程序地址機器碼指令說明微程序PC mPC運行時寄存器或存儲器的值_FATCH0000實驗機占用,不可修改。復位后,所有寄存器清0,首先執行 _FATCH_ 指令取指。CBFFFF+1寫入EM:24MOV R0,#31002431將寄存器R0

37、中的數放入累加器31H中。C7FBFFCBFFFF+1+1+1寫入EM:24EM:31 R0:31MOV R1,#07022507將寄存器R1中的數放入累加器07H中。C7FBFFCBFFFF+1+1+1寫入EM:25EM:07 R1:07MOV R2,#00042600將寄存器R2中的數放入累加器00H中。C7FBFFCBFFFF+1+1+1寫入EM:26EM:00 R2:00MOV R3,#05062705將寄存器R3中的數放入累加05H中。C7FBFFCBFFFF+1+1+1寫入EM:27EM:05 R3:05TEST R1,#0F08150F寄存器R1與立即數0FH,只改變標志位,并不

38、改變R1中的數值。C7FFEFFFF7F7FFFE93CBFFFF+1+1+1+1+1寫入EM:15EM:0F W:0FEM:0F A:07EM:0FJZ OVERFLOW0A3432若零標志位置1,跳轉到32H地址。C6FFFFCBFFFF寫入+1+1寫入EM:34EM:32MOV A,R10C21將寄存器R1中的數放入累加器A中。FFF7F7CBFFFF+1+1寫入EM:21 R1:07EM:21 A:07PUSH A0D18將累加器A中的數據壓入堆棧寄存器ST。FFEF9FCBFFFF+1+1寫入EM:18EM:18 ST:07SHL R10E29寄存器R1中的數不帶進位向左移一位,并不

39、影響標志位。FFF7F7FFF9DFCBFFFF+1+1+1寫入EM:29EM:29EM:29 R1:0ESHL R10F29寄存器R1中的數不帶進位向左移一位,并不影響標志位。FFF7F7FFF9DFCBFFFF+1+1+1寫入EM:29EM:29 A:0EEM:29 R1:1CSHL R11029寄存器R1中的數不帶進位向左移一位,并不影響標志位。FFF7F7FFF9DFCBFFFF+1+1+1寫入EM:29EM:29 A:1CEM:29 R1:38SHL R11129寄存器R1中的數不帶進位向左移一位,并不影響標志位。FFF7F7FFF9DFCBFFFF+1+1+1寫入EM:29EM:2

40、9 A:38EM:29 R1:70MOV A,R11221將寄存器R1中的數放入累加器A中。FFF7F7CBFFFF+1EM:21EM:21 A:70SUB R0,A130C從寄存器R0中減去累加器A中的數,并影響標志位。FFFF8FFFF7F7FFFA99CBFFFF+1+1+1+1寫入EM:0CEM:0C W:70EM:0C A:31EM:0C R0:C1JC ZERO143018若進位標志位置1,跳轉到18H地址。C6FFFFCBFFFF寫入+1+1寫入EM:30EM:18SHL R2182A寄存器R2中的數不帶進位向左移一位,并不影響標志位。FFF7F7FFF9DFCBFFFF+1+1+1寫入EM:2AEM:2A A:00EM:2A R2:00SHR R1192D寄存器R1中的數不帶進位向右移一位,并不影響標志位。FFF7F7FFF9BFCBFFFF+1+1+1寫入EM:2DEM:2D A:70EM:2D R1:38SUB R3,#011A1301從寄存器R3中減去立即數01H,并影響標志位。FFF7F7C7FFEFFFFA99CBFFFF+1+1+1+1+1寫入EM:13 EM:13 A:0

溫馨提示

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

評論

0/150

提交評論