計算機硬體實驗報告

2021-03-04 05:37:20 字數 1458 閱讀 5114

東北大學

一、實驗目的

(1) 加深對迴圈結構的理解;

(2) 掌握迴圈程式的設計方法;

(3) 熟練掌握debug的常用命令,學會用debug除錯程式。

二、實驗內容

統計以buf為首位址開始的位元組資料塊中的正數的個數,將統計結果存放至rlt單元。

三、演算法描述流程圖

四、實驗步驟

1. 輸入源程式:

data segment

buf db 23,123,-12,-21,45,0,90,-45

rlt db 0

data ends

code segment

assume cs:code,ds:data

start:mov ax,data

mov ds,ax

lea si,buf

mov cx,8

next:

mov al,[si]

cmp al,0

jle next1

inc rlt

next1:

inc si

xor al,al

loop next

mov ah,4ch

int 21h

code ends

end start

2. 儲存原始檔,執行ma**彙編源程式,生成obj目標檔案,結果無錯誤。

3. 執行link連線程式,生成exe可執行檔案,結果無錯誤。

4. 執行debug除錯程式,使用t引數單步執行程式,在暫存器中得到計算結果,執行d引數命令察看buf,rlt所在的位址單元中的資料。

五、實驗結果

程式執行結果,如下圖:

執行ma**彙編獲得obj檔案,為3.obj,如下圖:

執行link連線程式,獲得exe檔案,為3.exe,如下圖:

執行debug,執行t命令到最後,如下圖:

在程式中,rlt位址為0008,所以執行-d 0008命令檢視rlt資料,如下圖:

以上資料可以看出,程式執行正確,在各變數記憶體位址中儲存的資料為正確執行答案的16進製制,同時,rlt表明buf中大於0的正數有4個

六、思考題

本程式屬於迴圈次數已知的程式,使用cx暫存器存放計數值,使用loop指令完成迴圈。但是在有些情況下,是不可以用loop指令的,比如迴圈中要用到移位指令時需要占用cl暫存器。我們仍可以兩條指令完成相同的功能,請問是哪兩條指令?

答:可用於替換的兩個指令為dec和jnz。dec用於遞減暫存器的值,可以使用另外的暫存器記錄迴圈次數,用dec迴圈遞減,用jnz判斷迴圈是否完成並實現迴圈跳轉,如果為完成則跳轉至迴圈頭。

這樣就不用占用cl暫存器了。

七、實驗心得

加深了對迴圈結構的理解,掌握debug的常用命令,和程式分步除錯。對於程式設計中的細節需留意,細心。如剛開始遇到的不能生成obj檔案,後除錯發現因為忽略了在兩個暫存器之間不能直接交換資料的問題。

計算機硬體組裝實驗報告

山東政法學院 實驗 實訓 實習 報告 實驗名稱 計算機硬體組裝 一 任務和目的 掌握裝機方法,了解裝機時的注意事項,鍛鍊動手操作能力。二 內容與步驟 按照指導書寫出實驗 實訓 實習 的內容和步驟。1 依次拆卸舊電腦的各個部件,記住各部件與電腦的連線方式 2 在主機板上安裝cpu及其風扇 3 在主機板...

計算機硬體技術基礎實驗報告

東北大學 實驗目的 1 加深對迴圈結構的理解 2 掌握迴圈程式的設計方法 3 熟練掌握debug的常用命令,學會用debug除錯程式。1 實驗內容 設有3個單位元組無符號數存放在buf開始的緩衝區中,編寫乙個能將它們從大到小重新排序的程式。三 演算法描述流程圖 四 實驗步驟 1.輸入源程式 dseg...

計算機硬體實驗報告書寫格式2019

預習報告 1 debug的主要功能 2 在debug中資料的數制表示形式 實驗名稱 debug常用命令 1.寫出下列操作的步驟 1 修改ds段暫存器的值為 300a h 2 分別修改200h 205h記憶體單元的值為 00h,11h,22h,33h,44h,55h。修改400h單元開始的值為 abc...