微機系統及應用實驗指導書
東華大學資訊科學與技術學院自動化系
2023年9月
實驗一基本程式程式設計和程式除錯
一、 實驗目的
1、 掌握數碼轉換等基本程式設計的技巧和方法。
2、 熟悉debug命令。
3、 學會和掌握用debug除錯程式的方法。
二、 實驗裝置
pc機一台,裝有dos基本系統
三、 實驗內容及步驟
用debug建立、彙編和執行除錯程式的操作。debug是dos系統支援的用於組合語言源程式除錯的系統軟體。它共有19條命令完成相應的功能,命令及其格式可參閱附錄一。
(一) debug操作練習
1)實驗除錯程式
程式的功能是從3500h記憶體單元開始建立0-15共16個資料。程式如下:
位址 (h) 機器碼(h) 助記符
2000bf0035mov di, 3500
2003b91000mov cx, 0010
2006b80000mov ax, 0000
20099esahf
200a8805mov byte[di],al
200c47inc di
200d40inc ax
200e27daa
200fe2f9loop 200a
2011f4hlt
2)實驗步驟:
(1)輸入與修改
① 啟動dos,在dos提示符下輸入d e b u g後回車,螢幕立即顯示debug提示符「—」,表明已進入debug狀態,可以執行debug的各種命令。
② 用debug中的彙編命令 「a 位址」將程式建立在記憶體單元中。 在提示符「—」下鍵入 : 「a 2000 」 此時顯示器上將會顯示程式的段位址cs和偏移位址ip,你就可以輸入以上的程式了。
即顯示 169c :2000 鍵入 mov di, 3500
169c: 2003mov cx, 0010
169c: 2011hlt
③ 用反彙編命令 「u 位址」檢查程式
在提示符「—」下,鍵入 「u 2000」,將從2000記憶體單元開始的內容反彙編,螢幕上顯示
169c:2000 bf0035 mov di, 3500
169c:2003 b91000 mov cx, 0010
169c:2006 b8000 mov ax, 0000
169c:2011 f4 hlt
當發現程式有錯時,可用彙編命令「a 位址」進行修改,如要修改200a單元中的指令, 則鍵入
「a 200a」 ,螢幕顯示 169c:200a ,然後再鍵入mov byte[di], al,就把錯誤的程式改正了。
(2)顯示和修改資料
①用修改記憶體單元命令 「e 位址」 在指定記憶體單元中存入乙個數。
如要在3500為首址的單元中存入14h和25h兩個資料,可在提示符「—」下,鍵入:「e 3500」
顯示 169c:3500 ××. 鍵入14,按空格鍵
25,按空格鍵
②用顯示記憶體命令 「d 位址」 檢查指定單元的內容
在提示符「—」下,鍵入 「d3500」
顯示 1489:3500 14 25 48 02 …………
1489:3510
1489:3570
若某單元內容有錯則可用命令: 「e 位址 」進行修正。
③用顯示和修改命令 「r 」或「r 暫存器名」顯示暫存器或修改其內容
在提示符「—」下,鍵入 「r」
顯示 ax=0000 bx=0000 cx=0000 dx=0000 sp=ffee……………………
ds=169c es=169c ss=169c cs=169c ip=2000………………………
要修改ip的內容時,鍵入命令 「r ip」後, 顯示 ip 2000,在2000之後鍵入新內容。
(3)程式執行
程式的執行方式有單步執行、斷點執行和連續執行幾種方式。
①單步執行
輸入debug跟蹤命令「t」或「t=位址」或「t=位址指定次數」,可從指定位址處執行該單元中的一條指令,以後只要連續輸入「t」命令就能連續執行一條一條指令。
如在提示符「—」下,鍵入 「t=2000 」
顯示 :
ax=0000 bx=0000 cx=001d dx-0000 sp=ffee bp=0000 si=0000 di=0000
ds=169c es=169c ss=169c cs=169c ip=2000 nv………
169c:2003 b91000 mov cx, 0010
②斷點執行
用執行命令 「g=位址位址斷點位址斷點…」執行指定位址的程式
在提示符「—」下,鍵入 「g=2000 2011 」
顯示 169c:2011 f4 hlt 表示這段程式已經執行完畢。
③連續執行
輸入debug命令「g=位址」,執行指定位址的程式
(4)用顯示記憶體命令檢查執行結果
在提示符「—」下,鍵入命令 「d 位址」,根據其中的內容判斷程式執行是否正確。
如檢查以上程式執行後的結果,在提示符「—」下,鍵入「 d 3500」,可顯示
169c:3500 00 01 02 03 04 …… 15
169c:3510
(二)數碼轉換程式及其除錯
1、 將ascii碼表示的十進位制數轉換為二進位制數
1)程式設計的演算法及其程式
十進位制資料可表示為:
di代表十進位制數1,2,3,…9,0
上式可轉換為:
由式(2)可歸納十進位制數轉換為二進位制數的方法:從十進位制的最高位dn開始乘10加次位的操作,將結果再乘10再加下一次位,如此重複,則可求出二進位制數結果來。程式流程及參考程式如圖1-1。
這裡我們規定:被轉換的ascii碼十進位制數存放在3500h——3504h單位中。而轉換結果存放在3510h——3511h單元中。
2)實驗步驟
(1)輸入程式並檢查無誤。
(2)在3500h——3504h單元存入十進位制數12的ascii碼,即e3500h↙,並輸入3030303132h。
(3)g=2000↙,執行程式,並用ctrl+c來中斷程式返回監控狀態。
(4)用d3510↙來檢視結果,應為:3510 0c 00
(5)反覆試幾組數,考查程式的正確性。
位址(h) 助記符注釋
2000 mov si,3500 ;源位址
2003 mov di,3510 ;結果位址
2006 mov bx,000a ;乘數 10
2009 mov cx,0004 ;計數
200c mov ah,00 ;ah 清零
200e mov al,[si] ;取被轉換數
2010 sub al,30 ;ascii碼變十進位制數
2012 imul bx高位(ax)*(bx)送ax
2014 add al,[si+01] ;取下一位
1017 sub al,30 ;ascii碼減30變十進位制數
2019 inc si源位址指標+1
201a loop 2012 ;cx-1,若cx不等於零則繼續
201c mov [di],ax ;若cx不等於零則存結果
201e int 3
圖1-1
2 將十進位制數的ascii碼轉換為bcd碼
1)程式流程和程式
設從鍵盤輸入的五位十進位制數的ascii碼已存放在3500h起始的記憶體單元內,把它轉換成bcd碼後,再按位分別存入350ah起始的記憶體單元內。若輸入的不是十進位制數的ascii碼,則對應存放結果的內容為「ff」。一位元組ascii碼取其低四位即變為bcd碼,程式流程圖及考程式如圖1-2所示。
2)實驗步驟
(1) 輸入程式並檢查無誤。
(2) 在3500h——3504h單元中存入五位十進位制數的ascii碼,即
e3500↙,並輸入31,32,33,34,35。
(3) g=2000↙,執行以上程式。
(4) d350a↙,顯示結果為:
0000:350a 01 02 03 04 05 cc…
(5) 反覆試幾組數,考查程式的正確性。
位址(h) 助記符注釋
2000 mov cx,0005;迴圈計數器賦初值
2003 mov di,3500;ascii碼首址
2006 mov bl,ff; 錯誤標誌送bl
2008 mov al,[di];送ascii碼至al
200a cmp al,3a; 比較al與3ah
200c jnb 2014; 不低於3a則轉2014
200e sub al,30; 低於3a則取ascii碼的低四位
2010 jb 2014; 低於30則轉2014
2012 mov bl,al; 否則al內容送bl,取代ff
2014 mov al,bl; 結果或錯誤標誌送al
2016 mov [di+0a],al
2019 inc di
微機原理實驗指導書
目錄 1 實驗一 arm彙編基礎實驗 3 一 實驗目的 3 二 實驗內容 3 三 預備知識 3 四 實驗裝置與工具 3 五 實驗原理 3 六 實驗步驟 9 七 思考題 10 實驗二 arm控制led實驗 12 一 實驗目的 12 二 實驗內容 12 三 預備知識 12 四 實驗裝置與工具 12 五 ...
微機原理實驗指導書硬體部分2019
微機原理實驗指導書 硬體實驗部分 東華大學資訊學院 資訊與控制實驗中心 2015.12 關於微機原理硬體部分實驗的說明 硬體實驗主要分為基礎實驗和綜合設計實驗兩部分。基礎實驗部分每個實驗需完成各自的實驗報告。報告內容以每項實驗的思考題內容為主,不需要抄錄實驗指導書提供的範例程式。報告內容具體要求為 ...
微機原理及應用實驗指導書
微機原理及應用 實驗指導書 安陽工學院 電子資訊與電氣工程學院 目錄第一章 tpc usb實驗系統介紹 3 第二章 tpc usb實驗系統硬體環境 4 2.1 usb模組介紹 4 2.1.1 usb模組結構 4 2.1.2 usb模組功能 4 2.1.3 usb模組的對外介面 4 2.1.4 usb...