計算機組成原理課程設計報告

2021-03-04 02:36:51 字數 5460 閱讀 9881

專業名稱:j計算機

班級學號:0501 3051110004

學生姓名: 孫陽陽

指導教師: 劉芳

設計時間: 200 7 年 12 月 26 日——2008 年 1 月4 日

第一天熟悉微程式的設計和除錯方法

一、設計要求

按照《計算機組成設計指導書》的1.4和1.5節的步驟完成設計與除錯的示例,掌握設計與除錯方法。

二、測試程式、資料及執行結果

以下是我在課程設計試作中用到的主要的調機程式以及相應的執行資料、結果。

(注:以下列舉的調機程式按照「記憶體位址:機器碼彙編指令」順序書寫。)

1、資料傳送指令及定址方式的除錯

雙操作指令:

測試內容:

mov指令立即數定址:

0000:0488 0003 mov ax,#0003

0002:ffff halt

執行結果: (ax)=0003

mov指令暫存器定址

0000:0498 0002 mov bx,#0002

0002:0481 mov ax,bx

0004:ffff halt

執行結果: (ax)=0002

mov指令暫存器間接定址(在記憶體中的0010單元寫上0006)

0000: 0498 0002 mov bx,#0002

0000:0485 mov ax, [bx]

0001:ffff halt

執行結果: (ax)=0006

三、設計中遇到的問題及心得

所遇問題:

1.微指令分段的資料怎麼換算成微指令?

請教老師.根據《計算機組成設計指導書》第8頁的微指令格式**轉換

2.指令的編碼該這麼寫?

參考《計算機組成設計指導書》.操作碼需要查表,運算元需要分為單運算元和雙運算元兩種情況:若為單運算元,則只要考慮rx,再根據定址方式編碼.

若為雙運算元,則ry和rx都要考慮.ry部分要看所用的暫存器是作為源運算元還是目的運算元,若為源運算元則第一位是0, 若為目的運算元則第一位是1.rx與單運算元相同.

3.不顯示指令暫存器的值怎麼辦?

可以使用擴充套件單步執行.

心得體會:

這是第一次的組成課程設計上機.因為昨天剛剛考完,想好好休息一下,所以《計算機組成設計指導書》根本沒預習,沒想到今天的任務對我說是這麼難,我一頭霧水,不知從何下手.

即使按照老師指導去做也存在很多疑問.因此,以後還應該好好預習,才能有比較好的效果,做到事半功倍.否則將寶貴的上機時間浪費在這些本應課前準備的事上實在太奢侈了.

第二天資料傳送類指令和雙運算元指令的微程式設計與除錯

一、設計要求

按照《計算機組成設計指導書》的1.2.2的定址方式及編碼完成資料傳送類指令的微程式設計與除錯方法;完成1.

2.3雙運算元指令及1.2.

2各種定址方式的微程式設計與除錯。對於運算類指令,可以改變資料,測試在溢位,產生進製等情況下,cf,of等標誌位的置位情況。

二、測試程式、資料及執行結果

測試內容:

mov指令直接定址(在記憶體中的0010單元寫上0006)

0000:048a 0010 mov ax, 0010

0002:ffff halt

執行結果: (ax)=0006

mov指令間接定址(在記憶體中的0003單元寫上0004,0004單元寫上0005)

0000:048b 0003 mov ax,[0003]

0002:ffff halt

執行結果: (ax)=0005

mov指令基址定址

0000:04c8 0001 mov bp ,#0001

0002: 048c 0002 mov ax,[bp+2]

0004:ffff halt

執行結果: (ax)=0002

mov指令相對定址

0000:0488 0002 mov ax,#0002

0002: 048d 0001 mov ax,[pc+1]

0004:ffff halt

執行結果: (ax)=0001

mov指令源變址址定址

0000:04e8 0001mov si,#0001

0002:048e 0002 mov ax, 0002[si]

0004:ffff halt

執行結果: (ax)=0002

mov指令目的變址定址

0000:04f8 0001mov di,#0001

0002:048f 0002 mov ax, 0002[di]

0004:ffff halt

執行結果: (ax)=0002

adc指令: (adc:目的運算元=目+源+cf)

0000:0488 f003 mov ax,#f003

0002:0888 1000 add ax,#1000

0004: 0c88 0001 adc ax,#0001

0006: ffff halt

執行結果: (ax)=0005

subb:

0000 :0488 0002 mov ax,#0002

0002:1088 0004 sub ax,#0004

0004: 1488 0001 subb ax,#0001

0004:ffff halt

執行結果: (ax)=0001 (subb:目=目-源-cf)

三、設計中遇到的問題及心得

所遇問題:

1. 在用軟體時,微程式滾動條,下滾時會出現無法下滾的情況怎麼辦?

可按重新整理解決

2. pc不能賦值,會造成計算機崩潰

3. adc指令的怎麼編寫?

adc指令的執**況是:目的運算元=目的運算元+源運算元+cf,所以在執行這條指令之前應該使cf!=0,這樣才能看出明顯效果.所以我這樣寫:

mov ax,#f003

add ax,#1000

adc ax,#0001

後面的subb指令也是一樣。

心得體會:

有了昨天的適應,今天做起來就順手多了。不過還是會遇到一些意想不到的狀況,但是只要一遇到困難馬上查資料或請教老師或同學,你馬上就會有一種醍醐灌頂、豁然開朗的感覺,課上無法理解的或抽象內容都有了比較透徹的認識。

第三天運算類指令和單操作運算指令的微程式設計與除錯

一、設計要求

完成1.2.3雙運算元指令及1.

2.2各種定址方式的微程式設計與除錯。對於運算類指令,可以改變資料,測試在溢位,產生進製等情況下,cf,of等標誌位的置位情況。

完成1.2.4.

1中除了子程式呼叫和堆疊指令之外的單操作運算指令的微程式設計與除錯。

二、測試程式、資料及執行結果

測試內容:

cmp:(這裡ax原來是等於1)

0000:2488 0010 cmp ax,#0010

0002:ffff halt

執行結果: (ax)=0001

xor:

0000: 2088 0001 xor ax,#0001

0002:ffff halt

執行結果: (ax)=0000

test:

0000: 2888 0001 test ax,#0001

0002:ffff halt

執行結果: (ax)=0000

單操作指令:

pop :

0000:0488 0003 mov ax,#0003

0000: 04d8 0002 mov sp, #0002

0004: 02b0pop ax

0005:ffff halt

執行結果:(ax)=04d8

push:

0000: 0488 0002 mov ax,#0002

0002: 04d8 0004 mov sp, #0004

0004:0488 0002 mov ax,#0002

0006: 02a0push ax

0007:ffff halt

執行結果:(ax)=0002

三、設計中遇到的問題及心得

所遇問題:

1.cmp指令是兩個數相減,但是它相減的結果是儲存在alu裡面的,ax的值不變。

2.怎麼驗證指令執行是否正確?

(1).現看ax的內容是否與預期的相同

(2).有些(像pop和push)指令看ax不能確定,那麼就根據指令的微流程,依次看ib,ir和oszc等。

3.push,pop指令要對sp賦值,在push 裡面,sp的指標要減一,同時結果是儲存在ram裡面的,也就是ax裡面的內容會改寫到sp減一後對應的位址,而pop位址是不用變的,將該位址的內容存放到經過除錯後的ax裡面.

心得體會:

對於結果與預期結果不同的時候要反覆檢查錯誤可能性,遇到困難不可輕言放棄,我們要有一種契而不捨的精神,這樣才會得到正確的結果。

第四天單操作運算指令的微程式設計與除錯

一、設計要求

完成1.2.4.1中除了子程式呼叫和堆疊指令之外的單操作運算指令的微程式設計與除錯。

二、測試程式、資料及執行結果

測試內容:

xlat (0005單元寫上0007,0008單元寫上0004)

0000: 0488 0001 mov ax,#0001

0002: 025a 0005 xlat 0005

0004:ffff halt

執行結果:(ax)=0004

移位指令:

shl : (最高位移入cf中)

0000:0488 0002 mov ax,#0002

0002:04a8 0002 mov cx,#0002

0004:0320shl ax

0005:ffff halt

執行結果:(ax)=0008

shr: (最低位移入cf中)

0000:0488 0002 mov ax,#0002

0002:04a8 0001 mov cx, #0001

0004:0340 shr ax

0005:ffff halt

執行結果:(ax)=0001

sal0000:0488 0002 mov ax,#0002

0002:04a8 0001 mov cx, #0001

0004:0310sal ax

0005:ffff halt

《計算機組成原理》課程設計報告

電子資訊學院 實驗報告書 課程名 計算機組成原理 題目 實驗類別 驗證 班級 學號 姓名 目錄 第一章實訓任務概述 2 1.1實訓目的 2 1.2 實訓任務 2 第二章設計內容 4 2.1 指令的執行流程 4 2.1.1 異或 指令 4 2.1.2讀取指令 4 2.1.3 add 指令 4 2.2 ...

計算機組成原理課程設計報告

學生課程設計報告 課程設計名稱 計算機組成原理 設計專案名稱 基本模型機設計與實現 專業名稱 網路工程 班級 1220551 學號 學生姓名 指導教師 2015年1月3日 目錄課程設計任務書 3 1 課程設計目的 4 2 課程設計裝置 4 3 課程設計內容 4 3.1 課程設計原理 4 3.2 實驗...

計算機組成原理課程設計報告

煙台大學 設計題目 簡單計算機 地點 專業 軟體工程 設計者 指導老師 設計任務 綜合前面實驗單元典型部件設計與除錯,對資料選擇器 a b 計數器 運算器 暫存器和微程式控制器透徹了解的基礎上,完成乙個簡單計算機的設計,使其具有簡單運算功能 取數 讀數 做加法 送數等。設計目的 通過乙個簡單計算機的...