COP2000實(shí)現(xiàn)無符號(hào)數(shù)的排序_第1頁
COP2000實(shí)現(xiàn)無符號(hào)數(shù)的排序_第2頁
COP2000實(shí)現(xiàn)無符號(hào)數(shù)的排序_第3頁
COP2000實(shí)現(xiàn)無符號(hào)數(shù)的排序_第4頁
COP2000實(shí)現(xiàn)無符號(hào)數(shù)的排序_第5頁
已閱讀5頁,還剩13頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、課課 程程 設(shè)設(shè) 計(jì)計(jì) 課程設(shè)計(jì)名稱:計(jì)算機(jī)組成原理課程設(shè)計(jì)計(jì)算機(jī)組成原理課程設(shè)計(jì)課程設(shè)計(jì)題目:COP2000 實(shí)現(xiàn)無符號(hào)數(shù)的排序院(系):專 業(yè): 學(xué) 號(hào):姓 名: 江漢大學(xué)組成原理課程設(shè)計(jì) -I-目目 錄錄第第 1 章章 實(shí)驗(yàn)?zāi)康膶?shí)驗(yàn)?zāi)康?11.1設(shè)計(jì)原理.11.2設(shè)計(jì)思路.11.3設(shè)計(jì)環(huán)境.1第第 2 章章 詳細(xì)設(shè)計(jì)方案詳細(xì)設(shè)計(jì)方案.32.1 算法與程序的設(shè)計(jì)與實(shí)現(xiàn) .32.2 流程圖的設(shè)計(jì)與實(shí)現(xiàn) .3第第 3 章章 程序調(diào)試與結(jié)果測試程序調(diào)試與結(jié)果測試.63.1 程序調(diào)試 .6第第 4 章章 實(shí)驗(yàn)擴(kuò)展實(shí)驗(yàn)擴(kuò)展.124.1 原來的實(shí)驗(yàn).124.2 改進(jìn)后的實(shí)驗(yàn).12第第 5 章章 結(jié)論心

2、得結(jié)論心得.15附附 錄(源代碼)錄(源代碼).16江漢大學(xué)組成原理課程設(shè)計(jì)-2-第 1 章 實(shí)驗(yàn)?zāi)康?.1設(shè)計(jì)原理設(shè)計(jì)原理本次課程設(shè)計(jì)的任務(wù)是利用COP2000指令集進(jìn)行編程,實(shí)現(xiàn)對給定內(nèi)存中的12個(gè)8bit無符號(hào)數(shù),完成從小到大的排序。在機(jī)器字長為16位時(shí),無符號(hào)數(shù)表示的范圍是0到65535(補(bǔ)碼表示),沒有正負(fù)號(hào)之分。故可以利用冒泡排序法對內(nèi)存中的12個(gè)無符號(hào)數(shù)進(jìn)行排序;冒泡的原理是重復(fù)的走訪要排序的無符號(hào)數(shù),將十個(gè)數(shù)逐一比較,選出最大的沉底,然后在剩下的數(shù)中依次重復(fù)上一步驟。走訪無符號(hào)數(shù)的工作時(shí)重復(fù)的進(jìn)行直到排序結(jié)束。1.2設(shè)計(jì)思設(shè)計(jì)思路路 本次課程設(shè)計(jì)是對無符號(hào)數(shù)排序??梢苑纸獬扇?/p>

3、分,分別是初始化,將無符號(hào)數(shù)進(jìn)行冒泡排序,對排序進(jìn)行判斷并輸出。1.3設(shè)計(jì)環(huán)境設(shè)計(jì)環(huán)境1.COP2000 實(shí)驗(yàn)環(huán)境介紹 利用 COP2000 模擬軟件,在 COP2000 模擬軟件上編程實(shí)現(xiàn)有符號(hào)數(shù)(補(bǔ)碼形式)的排序。COP2000 試驗(yàn)儀軟件的指令集分為如下大類:算術(shù)運(yùn)算指令、邏輯運(yùn)算指令、移位指令、數(shù)據(jù)傳輸指令、跳轉(zhuǎn)指令、中斷返回指令、輸入輸出指令。2.本程序用到的指令集為:(1) 算術(shù)邏輯運(yùn)算指令SUB A,#01H-從累加器中減去立即數(shù)后放入累加器 A 中AND A, #01H -加上立即數(shù) 1 放入累加器 A 中SUB A,R2 -累加器 A 中的數(shù)減去 R2 所指的數(shù)SUB A,R

4、0 -累加器 A 中的數(shù)減去 R0 中的數(shù),放入 A 中SUB A,R1 -累加器 A 中的數(shù)減去 R1 中的數(shù),放入 A 中江漢大學(xué)組成原理課程設(shè)計(jì)-3-(2)數(shù)據(jù)傳送指令MOV A,#70H;MOV R1,A -內(nèi)存中十個(gè)數(shù)的起始地址放入 R1 中MOV A,#00H;MOV R0,A - 當(dāng)前已對比的數(shù)的個(gè)數(shù)放入 R0 中MOV A,R1;MOV R2,A - 將 R1 存放的地址放入 R2 中 MOV A,R1; - R1 所指地址中的數(shù)放入 A 中 MOV A,R1;MOV R3,A;MOV A,R2;MOV R1,A;MOV A,R3;MOV R2,A;-將 R1 所指的數(shù)與 R2

5、 所指的數(shù)交換(3)跳轉(zhuǎn)指令JZ result -若零標(biāo)志位為 1,跳轉(zhuǎn)到 result 程序JC revise -若進(jìn)位標(biāo)志置 1,跳轉(zhuǎn)到 reviseJMP loop-跳轉(zhuǎn)到 loop3.COP2000 計(jì)算機(jī)組成原理實(shí)驗(yàn)軟件截圖如圖 1.1 所示: 圖 1.1 COP2000 計(jì)算機(jī)組成原理軟件江漢大學(xué)組成原理課程設(shè)計(jì)-4- 第 2 章 詳細(xì)設(shè)計(jì)方案2.1 算法與程序的設(shè)計(jì)與實(shí)現(xiàn)算法與程序的設(shè)計(jì)與實(shí)現(xiàn) 本次課程設(shè)計(jì)采用偉福 COP2000 實(shí)驗(yàn)儀軟件和計(jì)算機(jī)實(shí)現(xiàn)無符號(hào)數(shù)排序的功能,利用偉福 COP2000 的指令集編程實(shí)現(xiàn)。算法具體描述如下:1.將十二個(gè) 8bit 無符號(hào)數(shù)存儲(chǔ)到內(nèi)存中:

6、將 12 個(gè)無符號(hào)數(shù)存入到內(nèi)存中,數(shù)據(jù)存入到內(nèi)存地址70H,71H,72H,73H,74H,75H,,76H,77H,78H,79H,7AH,7BH 中。2.利用冒泡排序法將十二個(gè)無符號(hào)數(shù)排序: 冒泡排序的算法如下: (1)比較相鄰的元素。如果第一個(gè)比第二個(gè)大,則交換。 (2)對每一對相鄰元素作同樣的工作,從開始第一對到結(jié)尾的最后一對。在這一點(diǎn),最后的元素應(yīng)該會(huì)是最大的數(shù)。 (3)針對所有的元素重復(fù)以上的步驟,除了最后一個(gè)。 (4)持續(xù)每次對越來越少的元素重復(fù)上面的步驟,直到?jīng)]有任何一對數(shù)字需要比較。 3.判斷結(jié)束并輸出結(jié)果: 每對比一對數(shù),R1 所指的地址加 1,減去 7CH,零標(biāo)志位為 1

7、,而 7CH 表示存的最后一個(gè)數(shù)地址的下一地址,則表示十二個(gè)無符號(hào)數(shù)比較結(jié)束,輸出比較之后的按從小到大排序的十二個(gè)無符號(hào)數(shù)。運(yùn)算結(jié)束。2.2 流程圖的設(shè)計(jì)與實(shí)現(xiàn)流程圖的設(shè)計(jì)與實(shí)現(xiàn)江漢大學(xué)組成原理課程設(shè)計(jì)-5-1.將十二個(gè) 8bit 無符號(hào)數(shù)存儲(chǔ)到內(nèi)存中。如圖 2.2.1 所示。 圖 2.2.1 存數(shù)流程圖2.初始化冒泡排序循環(huán)次數(shù)。如圖 2.2.2 所示。 圖 2.2.2 設(shè)置循環(huán)次數(shù)流程圖3.將十二個(gè)無符號(hào)數(shù)冒泡排序。如下圖所示:將 12 個(gè)無符號(hào)數(shù)存入內(nèi)存 結(jié)束循環(huán)需要對比的數(shù)的個(gè)數(shù) 開始 結(jié)束 開始江漢大學(xué)組成原理課程設(shè)計(jì)-6- N Y N Y 開始 cycle 起始地址放入 R1 中,

8、R0=0,80H=980H-1!=0 loopR1 存的地址加 1 放入R2JC (R1)-(R2)revise(R1)與(R2)交換R1 所指地址加 1 R0+180H-R0=0resultR1 所指地址加1(R1)+1)-7AH=0結(jié)束江漢大學(xué)組成原理課程設(shè)計(jì)-7- 第 3 章 程序調(diào)試與結(jié)果測試3.1 程序調(diào)試程序調(diào)試問題 1 : 將 12 個(gè)無符號(hào)數(shù)存儲(chǔ)到 00 地址的內(nèi)存中,運(yùn)行出錯(cuò)解決方法:由于程序指令會(huì)占用一部分內(nèi)存空間,所以將 12 個(gè) 8bit 無符號(hào)數(shù)存儲(chǔ)到 70H 地址的內(nèi)存中;這里也可以選中其它的存儲(chǔ)位置,只要不使用到程序指令占用的位置。問題 2 : 程序執(zhí)行完,輸出的

9、結(jié)果不全是按從小到大排列。解決方法:在輸出結(jié)果前,沒有判斷是否已經(jīng)完成比較。每比較一次,R1 所指地 址加 1,直到 R1 所指地址加 1 后的地址減去 7CH 等于 0,而 7CH 表示所存無符號(hào)數(shù)的最后一個(gè)數(shù)地址的下一地址。運(yùn)算結(jié)束并輸出結(jié)果。3.2 程序測試及結(jié)果分析程序測試及結(jié)果分析 在 COP2000 中輸入立即數(shù),將需要排序的 12 個(gè) 8bit 無符號(hào)數(shù)放入內(nèi)存 70H到 7BH 中調(diào)試,進(jìn)行排序測試;測試數(shù)據(jù):(1)需排序的無符號(hào)數(shù):02,04,06,01,03,05,08,09,00,07, 12,11 排序后的無符號(hào)數(shù):00,01,02,03,04,05,06,07,08,

10、09,11,12 內(nèi)存中初始狀態(tài)如圖 3.2.1 所示。執(zhí)行完成后內(nèi)存中結(jié)果如圖 3.2.2 所示。軟件仿真結(jié)果如圖 3.2.3 所示。江漢大學(xué)組成原理課程設(shè)計(jì)-8- 圖 3.2.1 內(nèi)存中初始狀態(tài)江漢大學(xué)組成原理課程設(shè)計(jì)-9-圖 3.2.2 執(zhí)行完成后內(nèi)存中狀態(tài) 圖 3.2.3 軟件仿真結(jié)果圖江漢大學(xué)組成原理課程設(shè)計(jì)-10-(2)需排序的無符號(hào)數(shù):21,20,15,31,08,06,08,10,11,09,18,15 排序后的無符號(hào)數(shù):06,08,08,09,10,11,15,15,18,20,21,31 內(nèi)存中初始狀態(tài)如圖 3.2.4 所示。執(zhí)行完成后內(nèi)存中結(jié)果如圖 3.2.5 所示。軟件

11、仿真結(jié)果如圖 3.2.6 所示。 圖 3.2.4 內(nèi)存中初始狀態(tài)江漢大學(xué)組成原理課程設(shè)計(jì)-11- 圖 3.2.5 內(nèi)存中初始狀態(tài) 圖 3.2.6 軟件仿真結(jié)果圖(3)需排序的無符號(hào)數(shù):29,0A,0B,A1,2B,3C,A1,A2,01,05,C1,0F 排序后的無符號(hào)數(shù):01,05,0A,0B,0F,29,2B,3C,A1,A1,B2,C1 內(nèi)存中初始狀態(tài)如圖 3.2.7 示。執(zhí)行完成后內(nèi)存中結(jié)果如圖 3.2.8 示。軟件仿真結(jié)果如圖 3.2.9 示。江漢大學(xué)組成原理課程設(shè)計(jì)-12- 圖 3.2.7 內(nèi)存中初始狀態(tài) 圖 3.2.8 執(zhí)行完成后內(nèi)存中狀態(tài)江漢大學(xué)組成原理課程設(shè)計(jì)-13- 圖 3

12、.2.9 軟件仿真結(jié)果圖江漢大學(xué)組成原理課程設(shè)計(jì)-14-第 4 章 實(shí)驗(yàn)擴(kuò)展4.1 原來的實(shí)驗(yàn)原來的實(shí)驗(yàn)原來的實(shí)驗(yàn)是借鑒了網(wǎng)上的實(shí)驗(yàn),數(shù)據(jù)只能通過在 70H 到 7BH 中手動(dòng)寫入。感覺很不方便。我想到了學(xué)過的 IN 指令輸入數(shù)據(jù),并進(jìn)行排序。由于在自己的電腦上無法進(jìn)行模擬。所以這里我采用了數(shù)據(jù)輸入的方法。4.2 改進(jìn)后的實(shí)驗(yàn)改進(jìn)后的實(shí)驗(yàn) 改進(jìn)后的代碼見 examnew.sam。改進(jìn)的過程中又遇到了上面的問題 1。由于程序指令會(huì)占用一部分內(nèi)存空間,所以將 12 個(gè) 8bit 無符號(hào)數(shù)存儲(chǔ)到 80H 地址的內(nèi)存中;這里也可以選中其它的存儲(chǔ)位置,只要不使用到程序指令占用的位置。這個(gè)代碼中是采取自動(dòng)

13、輸入 0C 到 01 這 12 個(gè)數(shù)。代碼為start:MOV A,#0CH; MOV 91H,A; MOV A,#80H; MOV R3,A; MOV A,#0CH; MOV R2,A;這里是設(shè)置一個(gè)為 13 的值放在 91H 這個(gè)地址。將 R3 的值設(shè)為 80H,用來指向地址的。最后的 R2 是因?yàn)闊o法使用 IN 指令,我設(shè)置的一個(gè)輸入的值,為 0Cinput:MOV A,R2 把 R2 寫入 A,用來代替 INMOV R3,A MOV A,R3 ADD A,#01H MOV R3,A 將 R2 的值放入 80H,并將地址加 1MOV A,R2 SUB A,#01H MOV R2,A將 R

14、2 的值減 1,用于下次寫入MOV A,R0; ADD A,#01H; MOV R0,A; MOV A,91H; SUB A,R0; JZ over;用來判斷循環(huán)了幾次。每一次循環(huán)加 1,一共循環(huán) 12 次。JMP input;需排序的無符號(hào)數(shù):0C,0B,0A,09,08,07,06,05,04,03,02,01 排序后的無符號(hào)數(shù):01,02,03,04,05,06,07,08,09,0A,0B,0C修改的程序測試結(jié)果如下自動(dòng)生成內(nèi)存中初始狀態(tài)如圖 4.2.1 示。執(zhí)行完成后內(nèi)存中結(jié)果如圖 4.2.2 示。江漢大學(xué)組成原理課程設(shè)計(jì)-15- 圖 4.2.1 自動(dòng)生成內(nèi)存中初始狀態(tài)圖 4.2.2

15、 執(zhí)行完成后內(nèi)存中狀態(tài)江漢大學(xué)組成原理課程設(shè)計(jì)-16-第 5 章 結(jié)論心得本次課程設(shè)計(jì)我做的是使用 cop2000 模擬軟件,實(shí)現(xiàn)對 12 個(gè)無符號(hào)的數(shù)進(jìn)行排序。排序采用的是比較經(jīng)典的冒泡排序,通過對每兩個(gè)相鄰的數(shù)進(jìn)行比較。如果第一個(gè)大于第二個(gè),就將第一個(gè)和第二個(gè)進(jìn)行換位置。換位采用的 MOV A,R1; MOV R3,A; MOV A,R2; MOV R1,A; MOV A,R3; MOV R2,A; 以上幾句代碼就是將 R1 所指的數(shù)與 R2 所指的數(shù)交換。過程是首先將 R1 地址所指的數(shù)放到寄存器 A 中,然后將 A 的值放在 R3 中,再接著將 R2 地址所指的數(shù)放入 A,再將 A 的

16、值放入 R1 對應(yīng)的地址位置,此時(shí) R1 地址的值是 R2 地址對應(yīng)的值。將剛剛存在 R3 中值打回寄存器 A 中,將 A 的值放入 R2 對應(yīng)的地址中。到此完成R1 和 R2 對應(yīng)地址的值的交換。在編寫這個(gè)程序的時(shí)候通過網(wǎng)上查詢,我找到了思路。網(wǎng)上是實(shí)現(xiàn)的 10 個(gè)數(shù)的排序,在編寫的時(shí)候我是實(shí)現(xiàn)了 12 個(gè)數(shù)的排序。實(shí)現(xiàn)了 12 個(gè)數(shù)的排序我還是不滿足。我就在想著能不能實(shí)現(xiàn)自己手動(dòng)輸入數(shù)值進(jìn)行排序,我想到了 IN 指令。通過查閱資料,我知道了 IN 指令是將數(shù)打入寄存器 A 中,我就想將 A 的數(shù)放入#70H 中。但是在 cop2000 我沒找到模擬的方法。這里我采用了給入一個(gè)數(shù)放在 R2

17、中每次將 1,用來代替 IN 輸入。然后通過跳轉(zhuǎn),12 次循環(huán)。這里我又設(shè)置了控制循環(huán)的指令。一共實(shí)現(xiàn)了 12 次循環(huán)。這個(gè)循環(huán)變量放在 91H 中。在實(shí)現(xiàn)這個(gè)功能的時(shí)候又不得不把存儲(chǔ)的值由 70H 移動(dòng)到 80H 中。由于之前的組成原理的實(shí)驗(yàn),學(xué)習(xí)過 cop2000??偟膩頃鴮?shí)驗(yàn)的難度不是很大。這個(gè)實(shí)驗(yàn)加深了對匯編的理解。有一次復(fù)習(xí)了 cop2000 的基本操作。課程設(shè)讓我進(jìn)一步理解了冒泡排序法,并在 cop2000 中運(yùn)用成功。雖然這次課程設(shè)計(jì)我沒有自己設(shè)計(jì)指令系統(tǒng)。但是我也復(fù)習(xí)了一下指令系統(tǒng)設(shè)計(jì)這一部分。加深了對指令系統(tǒng)的理解。 江漢大學(xué)組成原理課程設(shè)計(jì)-17-附 錄(源代碼)start

18、: MOV A,#0CH; MOV 91H,A; MOV A,#80H; MOV R3,A; MOV A,#0CH; MOV R2,A; input: MOV A,R2 MOV R3,A MOV A,R3 ADD A,#01H MOV R3,A MOV A,R2 SUB A,#01H MOV R2,A MOV A,R0; ADD A,#01H; MOV R0,A; MOV A,91H; SUB A,R0; JZ over; JMP input; over: MOV A,#0CH; MOV 90H,A;cycle: MOV A,#80H; MOV R1,A; MOV A,#00H; MOV R0,A; MOV A,90H; SUB A,#01H; JZ result; MOV 90H,A;LOOP: MOV A,R1; ADD A,#01H; MOV R2,A; MOV A,R1; SUB A,R2; JC revise; MOV A,R1; MOV R3,A; MOV A,R2; MOV R1,A; MOV A,R3; MOV R2,A; MOV A,R1; ADD A,#01H; MOV R1,A; MOV A,R0; ADD A,#01H; MOV R0,A; MOV A,90H; SUB A,R0; JZ cycle; JMP LOOP;revise: MOV A

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論