微機(jī)原理課件 西電 第十次課 上機(jī)調(diào)試.ppt_第1頁
微機(jī)原理課件 西電 第十次課 上機(jī)調(diào)試.ppt_第2頁
微機(jī)原理課件 西電 第十次課 上機(jī)調(diào)試.ppt_第3頁
微機(jī)原理課件 西電 第十次課 上機(jī)調(diào)試.ppt_第4頁
微機(jī)原理課件 西電 第十次課 上機(jī)調(diào)試.ppt_第5頁
已閱讀5頁,還剩36頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、*移動(dòng)一位時(shí)由指令直接給出;移動(dòng)兩位及以上,則移位次數(shù)由CL指定。,四、移位指令,非循環(huán)移位指令,邏輯左移 SHL (Shift logic left) 算術(shù)左移 SAL (Shift arithmetic left) 邏輯右移 SHR (Shift logic right) 算術(shù)右移 SAR (Shift arithmetic right),邏輯移位被看作是無符號(hào)數(shù) 算術(shù)移位則被看作是有符號(hào)數(shù),四、移位指令,算術(shù)左移和邏輯左移,格式: SAL DST,1 SAL DST ,CL SHL DST ,1 SHL DST ,CL,移動(dòng)一位后,若CF與最高不相等,則OF=1;否則OF=0. OF=1

2、對(duì)SAL表示移位后超出了表示范圍。,0,CF,四、移位指令,邏輯右移,格式: SHR DST ,I SHR DST ,CL,0,CF,移動(dòng)一位后,若次高位與最高位不相等,則OF=1;否則OF=0.,無符號(hào)數(shù)的右移,四、移位指令,算術(shù)右移,格式: SAR DST,1 SAR DST,CL,有符號(hào)數(shù)的右移,四、移位指令,循環(huán)移位指令,不帶進(jìn)位的循環(huán)移位 帶進(jìn)位位的循環(huán)移位 *循環(huán)移位指令的格式、對(duì)操作數(shù)的要求與非循環(huán)移位指令相同,四、移位指令,不帶進(jìn)位位的循環(huán)移位,四、移位指令,帶進(jìn)位的循環(huán)移位,移位指令影響AF外所有的標(biāo)志位,循環(huán)指令 只影響CF和OF標(biāo)志位。,四、移位指令,五、處理器控制指令,

3、NOP (No operation):指令不作任何操作, 但占3個(gè)時(shí)鐘周期, 然后執(zhí)行下一條指令。 HLT (Halt) :指令使 CPU進(jìn)入暫停狀態(tài), 外部中斷請(qǐng)求信號(hào)和RESET信號(hào)可使CPU退出暫停狀態(tài)。 WAIT (Wait):該指令使CPU處于空轉(zhuǎn)狀態(tài), 也可用于等待外部中斷請(qǐng)求, 但中斷結(jié)束后仍舊回到WAIT指令繼續(xù)等待。(TEST) ESC (Escape,換碼):指令把SRC的內(nèi)容送到數(shù)據(jù)總線上, 使其它處理器可取得指令或操作數(shù)。 格式: ESC DATA,SRC LOCK (Lock) :該指令是一種前綴, 可與其它指令聯(lián)合, 用于維持總線的鎖存信號(hào)直到與其聯(lián)合的指令執(zhí)行完為

4、止。,五、處理器控制指令,4.3 匯編語言程序設(shè)計(jì),一、程序設(shè)計(jì)步驟 二、源程序的匯編、連接與調(diào)試 三、IBM PC 匯編語言程序源程序的完整結(jié)構(gòu)及偽指令 四、順序結(jié)構(gòu) 五、分支結(jié)構(gòu) 六、循環(huán)結(jié)構(gòu) 七、子程序 八、DOS系統(tǒng)功能調(diào)用 九、字符串處理 十、宏指令,一、程序設(shè)計(jì)步驟,編輯,匯編(MASM或ASM),連接(LINK),調(diào)試(DE-BUG),二、源程序的匯編、連接與調(diào)試,匯編語言的基本編程過程可以總結(jié)成表所示,二、源程序的匯編、連接與調(diào)試,(一)編輯源程序 利用編輯程序“記事本”等編寫源程序,其規(guī)則應(yīng)該遵循8086 CPU的指令系統(tǒng)的要求,源程序名的擴(kuò)展名必須為ASM。 例如myfil

5、easm,下面以此為例加以說明。,二、源程序的匯編、連接與調(diào)試,(二)匯編源程序 匯編過程是利用匯編程序MASM對(duì)源程序文件進(jìn)行匯編. MASM功能: 找出源程序中指令格式的錯(cuò)誤、標(biāo)號(hào)變量定義錯(cuò)誤(存在沒有定義或重復(fù)定義標(biāo)號(hào)變量); 生成三個(gè)文件:目標(biāo)文件(myfileobj,必須產(chǎn)生)、列表文件(myfilelst)和交叉索引文件(myfilecrf)。 目標(biāo)文件為指令、偽指令編譯后的目標(biāo)代碼文件; 列表文件中列出了程序代碼、偏移地址以及出錯(cuò)信息,可以方便地分頁打印裝訂; 交叉索引文件列出了程序中所定義地所有標(biāo)識(shí)符和標(biāo)號(hào)及其引用情況。,二、源程序的匯編、連接與調(diào)試,檢查和編制源程序 把初始已

6、經(jīng)分配地址的目標(biāo)程序重新分配為其它的地址 檢查源程序的錯(cuò)誤 產(chǎn)生源程序語句列表和每個(gè)源程序匯編后的目標(biāo)程序,ASM:小匯編程序,可在64KB的內(nèi)存中執(zhí)行,不支持宏指令,只能有限制的使用偽指令,匯編程序,MASM:宏匯編程序,必須在96KB以上的內(nèi)存條件下運(yùn)行,可以使用所有的宏指令和偽指令,匯編程序的功能:,匯編程序一般采用MASM,其使用格式為: MASM source,object,list,crossref 其中,source : 源程序文件名(可以不帶擴(kuò)展名) object : 目標(biāo)文件名(也不帶擴(kuò)展名) list : 列表的文件名 crossref : 交叉索引的文件名 在實(shí)際使用的簡(jiǎn)

7、略方式: MASM myfile;表示只生成myfileobj MASM myfile;按屏幕提示進(jìn)行操作 MASM myfile,list; ;表示要生成myfileobj和myfilelst,二、源程序的匯編、連接與調(diào)試,(三)連接程序 連接命令的常用格式有: LINK object;對(duì)目標(biāo)文件進(jìn)行連接,并生成二進(jìn)制代碼文件(.exe) LINK object;沒有命令末的分號(hào),這時(shí)可按屏幕提示進(jìn)行操作,二、源程序的匯編、連接與調(diào)試,(四)程序調(diào)試 源程序編寫后,通過匯編和連接后,就得到了可以在計(jì)算機(jī)系統(tǒng)中直接執(zhí)行的二進(jìn)制代碼文件,但程序執(zhí)行的結(jié)果是否正確則無法判斷。利用MASM對(duì)源程序匯

8、編時(shí)可以檢測(cè)出程序的語法錯(cuò)誤、指令用法錯(cuò)誤,程序執(zhí)行的情況需要通過程序調(diào)試來完成。 匯編語言程序的調(diào)試可以借助于專門的調(diào)試工具軟件DEBUG來實(shí)現(xiàn)。,二、源程序的匯編、連接與調(diào)試,DEBUG提供了強(qiáng)大的調(diào)試功能,主要有: 顯示、修改寄存器和內(nèi)存單元的內(nèi)容(R命令) 按指定地址運(yùn)行程序(G命令) 設(shè)置斷點(diǎn)并分段執(zhí)行程序(G命令) 反匯編目標(biāo)代碼(U命令) 單(多)條跟蹤執(zhí)行(單步執(zhí)行)(T、P命令) 直接輸入?yún)R編語句(A命令) 顯示并修改內(nèi)存單元的內(nèi)容(D、E、F命令),二、源程序的匯編、連接與調(diào)試,DEBUG軟件的常用命令 1.啟動(dòng)DEBUG DEBUG d:path文件名.擴(kuò)展名 啟動(dòng)DEB

9、UG軟件,并加載(裝入)指定的文件,在缺省文件名時(shí),可直接DEBUG狀態(tài),其提示符為“-”。上式中,“d:”為磁盤符號(hào),表示可以指定不同的驅(qū)動(dòng)器;“path”表示路徑名;文件必須是包含擴(kuò)展名的完整形式,在調(diào)試程序時(shí),應(yīng)該是.exe文件。 例如要對(duì)myfile.exe進(jìn)行調(diào)試,則可以輸入: DEBUG myfile.exe,二、源程序的匯編、連接與調(diào)試,2. 顯示各個(gè)寄存器的內(nèi)容 在DEBUG狀態(tài)下,輸入命令R,可以顯示出所有寄存器的當(dāng)前內(nèi)容,如圖所示。通用寄存器和段寄存器的內(nèi)容一目了然,第二行的右端給出出了PSW中的8個(gè)狀態(tài)標(biāo)志位,它們是采用字母來表示其意義的,依次分別為:溢出標(biāo)志(OF)、方

10、向標(biāo)志(DF)、中斷允許標(biāo)志(IF)、符號(hào)標(biāo)志(SF)、零標(biāo)志(ZF)、半進(jìn)位標(biāo)志(AF)、奇偶標(biāo)志(PF)和進(jìn)位標(biāo)志(CF),其符號(hào)含義如表所示。圖中,最后一行表示所加載程序的第一條即將執(zhí)行的指令。,標(biāo)志位的符號(hào)含義,二、源程序的匯編、連接與調(diào)試,二、源程序的匯編、連接與調(diào)試,3. 顯示并修改某個(gè)寄存器的內(nèi)容 當(dāng)要顯示并修改AX寄存器的內(nèi)容時(shí),也可以采用R命令,如: R AX 這時(shí)DEBUG會(huì)顯示出AX的當(dāng)前內(nèi)容“AX 0000”,并提示用戶輸入更改值,當(dāng)不想修改時(shí),可以直接按回車鍵。,二、源程序的匯編、連接與調(diào)試,4. 顯示修改標(biāo)志寄存器 利用R命令還可以修改個(gè)別標(biāo)志位,例如輸入: R F

11、 則會(huì)顯示出當(dāng)前的標(biāo)志位狀態(tài)“NV UP EI PL NZ NA PO NC - ”,并等待用戶輸入更改值,當(dāng)需要更改IF和CF時(shí),可以直接輸入“DICY”,這時(shí)可以將IF位清0、CF位置1,而且輸入順序可以不按標(biāo)志位的次序。,二、源程序的匯編、連接與調(diào)試,5. 反匯編目的代碼 可以利用U命令反匯編出內(nèi)存中的二進(jìn)制代碼,即以匯編語言指令形式表示出二進(jìn)制代碼。 (1)U ;從當(dāng)前CS:IP地址開始反匯編,每次對(duì)約32個(gè)字節(jié)的代碼進(jìn)行反匯編,下次U命令會(huì)從本次結(jié)束位置開始反匯編。 (2)U addr;從指定地址(addr)開始進(jìn)行反匯編。 (3)U addr1,addr2 ;從地址1(addr1)

12、反匯編到地址2(addr2),二、源程序的匯編、連接與調(diào)試,6. 設(shè)置斷點(diǎn)并執(zhí)行程序 可以利用G命令實(shí)現(xiàn)程序的分段執(zhí)行。G命令主要有四種格式: (1)G ;從當(dāng)前地址(CS:IP)開始執(zhí)行程序,直到程序結(jié)束。 (2)Gaddr ;從指定地址(addr)開始執(zhí)行程序,直到程序結(jié)束。 (3)Gaddr1,addr2;從地址1(addr1)執(zhí)行到地址2(addr2),實(shí)際上在所指定的地址2處設(shè)置了一個(gè)斷點(diǎn),這樣可以使程序得以分段執(zhí)行。 (4)G addr ;從當(dāng)前地址CS:IP執(zhí)行到指定的地址(addr),即在addr處設(shè)置了斷點(diǎn)。,二、源程序的匯編、連接與調(diào)試,7. 顯示并修改內(nèi)存單元的內(nèi)容 D命

13、令用于顯示內(nèi)存(存儲(chǔ))單元的內(nèi)容; E命令用于顯示并修改存儲(chǔ)單元的內(nèi)容; F命令用于給一塊存儲(chǔ)區(qū)域置入同一個(gè)值。 D命令的常用格式有三種:,二、源程序的匯編、連接與調(diào)試,D命令的常用格式有三種: (1)D Daddr:Offset;從指定地址開始顯示128個(gè)字節(jié)單元的內(nèi)容,Daddr指定段地址,缺省時(shí)為DS的內(nèi)容,它可以直接指定段地址值,也可以為DS、ES、CS和SS;Offset用于指定段內(nèi)偏移地址。 (2)D;繼續(xù)上一次顯示的內(nèi)存位置開始顯示128個(gè)字節(jié)單元的內(nèi)容,如果是第一次顯示,則從DS:0位置開始顯示。 (3)D Daddr:Offset1 Offset2;從指定段的地址1(Offs

14、et1)顯示到地址2(Offset2)。,二、源程序的匯編、連接與調(diào)試,E命令的常用格式有兩種: (1)E Daddr:Offset;從指定地址開始顯示一個(gè)字節(jié)單元的內(nèi)容,用戶可以通過輸入新值進(jìn)行修改,按空格鍵表示確認(rèn)修改,這時(shí)會(huì)自動(dòng)顯示下一個(gè)單元的內(nèi)容。如果不修改該單元的內(nèi)容,可以直接按空格鍵。按回車鍵表示E命令結(jié)束。 (2)E Daddr:Offset Expression; 直接修改指定單元的內(nèi)容,Expression為多個(gè)字節(jié)內(nèi)容構(gòu)成的表達(dá)式,字節(jié)之間用空格間隔。例如E100 10 20 30 40 50表示將DS:100H開始的5個(gè)字節(jié)單元的內(nèi)容改成“10H 20H 30H 40H

15、50H”。應(yīng)該注意,在DEBUG下的所有數(shù)值只能是十六進(jìn)制數(shù)。,二、源程序的匯編、連接與調(diào)試,F命令的常用格式有兩種: (1)F Daddr:Offset1 Offset2 Expression;以表達(dá)式(Expression)的值依次填入從地址1(Offset1)到地址2(Offset2)的所有單元,例如F100 200 55 AA表示將DS:100H到200H的所有單元間隔寫入55H和AAH。 (2)F Daddr:Offset L length Expression;以表達(dá)式(Expression)的值依次填入從地址(Offset)開始、長(zhǎng)度為length中的所有單元,例如F100L10

16、0 55 AA表示將DS:100H到200H的所有單元間隔寫入55H和AAH。,二、源程序的匯編、連接與調(diào)試,8內(nèi)存單元內(nèi)容的傳送 在DEBUG下,利用M命令可以將一塊區(qū)域的內(nèi)容傳送到另一個(gè)位置,它常用的有兩種格式: (1)M Daddr:Offset1 Offset2 Offset3;表示將從地址1(Offset1)到地址2(Offset2)的所有單元的內(nèi)容傳送到地址Offset3開始的單元中,例如M100 200 300表示將DS:100H到200H的所有單元傳送到300H開始的單元中。 (2)M Daddr:Offset1 L length Offset2;將從地址1(Offset1)開

17、始、長(zhǎng)度為length中的所有單元的內(nèi)容傳送到地址Offset2開始的單元中。,二、源程序的匯編、連接與調(diào)試,9程序的單步執(zhí)行 在DEBUG下,可以利用T命令或P命令單步執(zhí)行程序,它們不帶任何參數(shù),每次都會(huì)執(zhí)行一條指令,同時(shí)會(huì)顯示出所有寄存器的內(nèi)容(與R命令顯示的形式一致)。 但T命令與P命令是有區(qū)別的,T命令每次執(zhí)行匯編語言的一條指令,而P命令每次執(zhí)行匯編語言的一條語句,對(duì)于像CALL sub、INT n這樣的語句,執(zhí)行T指令表示轉(zhuǎn)向子程序或中斷服務(wù)子程序,而執(zhí)行P命令時(shí),則表示執(zhí)行完整個(gè)子程序或中斷服務(wù)子程序,因此,在遇到DOS中斷調(diào)用指令時(shí),經(jīng)常采用P命令,以避免程序轉(zhuǎn)入DOS本身的中斷

18、服務(wù)子程序。,二、源程序的匯編、連接與調(diào)試,10輸入?yún)R編語言指令 在DEBUG下,可以利用A命令直接輸入?yún)R編語言的指令,常用格式有兩種: (1)A Daddr:Offset;從指定地址Offset開始輸入?yún)R編語言指令,每輸入一條指令,DEBUG軟件會(huì)自動(dòng)編譯該指令,并生成相應(yīng)的二進(jìn)制代碼,同時(shí)計(jì)算出下一條指令的存放地址,用戶可以繼續(xù)輸入?yún)R編語言指令。如果按回車鍵則可以結(jié)束A命令。 (2)A;從上一次A命令結(jié)束的地址進(jìn)行輸入?yún)R編語言指令,如果是第一次使用,則默認(rèn)從CS:IP地址開始輸入?yún)R編語言指令。,二、源程序的匯編、連接與調(diào)試,11文件裝入 在DEBUG下,可以重新裝入文件,這時(shí)需要分兩步:先指定文件名(N命令),然后裝入文件(L命令)。 N命令的格式為: N path file ;指定file為文件名,可以包含擴(kuò)展名。 L命令的常用格式有兩種: (1)L Daddr:Offset;將指定文件裝入到從地址Offset開始的單元中。 (2)L ;默認(rèn)將文件裝入到從CS:100H開始的單元中。 文

溫馨提示

  • 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)論