匯編語言上機(jī)過程(自學(xué)).ppt_第1頁
匯編語言上機(jī)過程(自學(xué)).ppt_第2頁
匯編語言上機(jī)過程(自學(xué)).ppt_第3頁
匯編語言上機(jī)過程(自學(xué)).ppt_第4頁
匯編語言上機(jī)過程(自學(xué)).ppt_第5頁
已閱讀5頁,還剩21頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、匯編語言上機(jī)過程(自學(xué)),附加1 用DEBUG驗(yàn)證程序段,通常匯編教學(xué)中,匯編程序結(jié)構(gòu)會(huì)在指令系統(tǒng)后面講,學(xué)生在學(xué)習(xí)指令系統(tǒng)時(shí)由于沒有講匯編程序結(jié)構(gòu)而無法編寫匯編程序來加深對(duì)匯編指令的理解,因此,在這里我們通過2個(gè)例子,介紹使用DEBUG調(diào)試工具編寫程序段來學(xué)習(xí)匯編指令。 有關(guān)DEBUG的常用命令的用法請(qǐng)參看現(xiàn)代微機(jī)原理與接口技術(shù)教材的附錄A.2.4,題目:非壓縮BCD碼的減法運(yùn)算,做68-9,mov ax, 0608h mov bl, 09h sub al, bl aas,運(yùn)行debug,首先用A命令輸入程序,Debug中只使用16進(jìn)制數(shù),且無需加H后綴,直接用回車退出匯編編輯狀態(tài),使用T命

2、令跟蹤執(zhí)行,第一個(gè)T命令要帶上程序首地址,后面的T命令無需地址,標(biāo)志位,當(dāng)前指令執(zhí)行后的各寄存器的結(jié)果,這是還未執(zhí)行的下一條指令的反匯編,這是還未執(zhí)行的下一條指令的地址和指令碼,調(diào)試完后用Q命令退出DEBUG。 DEBUG命令參見教材2附錄D。下面給出DEBUG中標(biāo)志位狀態(tài)符號(hào)的含義。,再舉一個(gè)有訪存操作的例子,MOV SI, 0050H ; (DS)=2000H MOV DI, 0100H ; (ES)=3000H MOV CX, 5 CLD REP MOVSB,1)先用A命令輸入程序,2)用R命令修改DS和ES寄存器到約定值,DS的原始值,輸入的修改值,3)用D命令查看源數(shù)據(jù)區(qū)和目標(biāo)數(shù)據(jù)區(qū)

3、,4)用E命令初始化源數(shù)據(jù)區(qū)后再用D命令檢查源數(shù)據(jù)區(qū)和目的數(shù)據(jù)區(qū),5)單步跟蹤執(zhí)行程序,6)執(zhí)行后檢查源數(shù)據(jù)區(qū)和目標(biāo)數(shù)據(jù)區(qū),注意,用A命令輸入指令時(shí),如果輸入錯(cuò)誤debug會(huì)立即指出錯(cuò)誤和位置。地址不會(huì)變化,以便用戶修正指令。,附加2 匯編語言上機(jī)過程用MASM 5.0上機(jī)過程(注意是在CMD窗口中執(zhí)行),第一步編輯:,第二步匯編:,可以不輸入,用回車回應(yīng),修改好后再匯編:,第三步連接并執(zhí)行:,用DEBUG調(diào)試程序:,段值 偏移 指令碼 反匯編的源碼,1)用U命令查看程序和目標(biāo)碼及指令地址,2)用T命令單步跟蹤,逐條執(zhí)行看中間結(jié)果,DEBUG將顯示每個(gè)寄存器以及各標(biāo)志位的當(dāng)前值,3)對(duì)于系統(tǒng)功

4、能調(diào)用,可以用G命令設(shè)置斷點(diǎn)執(zhí)行,也可以用P命令跳過過程與系統(tǒng)功能服務(wù)程序。,設(shè)斷點(diǎn)執(zhí)行,斷點(diǎn)設(shè)在INT 21H的后一句,INT 21H輸出的一個(gè)字符,注意:DEBUG只支持16位匯編調(diào)試,如果要編寫32位匯編程序,需要用MASM 6.11匯編和連接,用CodeView軟件查看執(zhí)行代碼。但MASM 6.11中帶的CodeView 4.01可以查看32位程序的執(zhí)行代碼,不能進(jìn)行單步調(diào)試。要調(diào)試可以考慮使用SoftICE軟件。 另外,VC嵌入?yún)R編可以支持80486的所有指令,也支持32位匯編。,用VC6.0實(shí)現(xiàn)C+中嵌入?yún)R編,建立源程序asmsample.cpp,將下列程序輸入到asmsample.cpp中,#include int power2(int, int); void main(void) cout2的6次方乘5等于:t; coutpower2(5,6)endl; int power2(int num, int power) _asm mov eax, num ; 取第一個(gè)參數(shù) mov

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論