版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、實驗一:8086匯編語言上機(jī)調(diào)試及基本操作(驗證性)1、實驗?zāi)康模海?)掌握常用DEBUG命令: G,D,R,T,U,Q。(2)掌握工具軟件EMU8086。(3)掌握完整程序設(shè)計方法的格式,能正確書寫數(shù)據(jù)段,代碼段等。(4)掌握簡單的數(shù)值轉(zhuǎn)換算法2、實驗說明:計算機(jī)中的數(shù)值有各種表達(dá)方式,這是計算機(jī)的基礎(chǔ)。掌握各種數(shù)制之間的轉(zhuǎn)換是一種基本功。3、程序框圖:對于0-999(即000H-3E7H)范圍內(nèi)的二進(jìn)制數(shù)4、參考程序:; 將 AX中的三位數(shù)拆為三個BCD碼, 并存入 Result 開始的三個單元DATA SEGMENT ; 數(shù)據(jù)段RESULT_1 DB 1 RESULT_2 DB 1 RE
2、SULT_3 DB 1 DATA ENDSSTACK SEGMENT STACK ; 堆棧段 STA DB 64 DUP(0)STACK_TOP DB 0STACK ENDSCODE SEGMENT ; 代碼段 ASSUME CS:CODE , DS:DATA , ES:DATA , SS:STACK START: MOV AX, DATA MOV DS, AX ; 設(shè)置數(shù)據(jù)段 MOV AX, STACK MOV SS, AX ; 設(shè)置堆棧段 LEA SP, STACK_TOP ; 設(shè)置棧頂指針 MOV AX, 2afH MOV CL, 100 DIV CL MOV RESULT_1, AL
3、; 除以 100, 得百位數(shù) MOV AL, AH MOV AH, 0 MOV CL, 10 DIV CL MOV RESULT_2, AL ; 余數(shù)除以 10, 得十位數(shù) MOV RESULT_3, AH ; 余數(shù)為個位數(shù) MOV AX,4C00H ; 返回DOS INT 21H ; CODE ENDS END START ; 最后一行要按回車鍵5、實驗及報告要求:1) 用合適的編輯軟件編輯以上源文件并存入合適目錄;要求補(bǔ)充注釋未注釋的偽指令和指令;2) 分別在和下編譯、連接生成可執(zhí)行文件,比較兩個環(huán)境下生成的機(jī)器碼的長度和內(nèi)容;試指出第、條指令的和機(jī)器碼。3) 分別在和emu8086下調(diào)試
4、該可執(zhí)行文件,給出程序運行時的各段地址(?,?)舉例說明debug的t,d,g,u等命令操作方法并對寄存器的變化作出解釋;試改變被轉(zhuǎn)換的三位數(shù),并解釋轉(zhuǎn)換過程中標(biāo)志寄存器中各標(biāo)志位的結(jié)果;如何觀察轉(zhuǎn)換結(jié)果的變化?4) 寫出完整的實驗報告,特別是“實驗結(jié)果”與“實驗總結(jié)體會”部分,是評分的主要依據(jù)。5) 實驗總結(jié)中要求結(jié)合實驗中的經(jīng)驗、教訓(xùn)或體會對匯編語言格式、調(diào)試方法和微機(jī)原理學(xué)習(xí)方法作出總結(jié)。6、思考題:1) 用單步執(zhí)行命令t運行程序, 運行到mov ax, 4c00h, int 21h指令后,cs和IP寄存器內(nèi)容前后有何變化?產(chǎn)生變化的原因是什么?2) 試寫出將BCD轉(zhuǎn)換成二進(jìn)制碼的匯編程
5、序?!緦嶒炤o導(dǎo)資料】1 匯編語言程序的上機(jī)過程在計算機(jī)上運行匯編語言程序的步驟是:1用編輯程序建立ASM源文件;2用MASM程序把ASM文件轉(zhuǎn)匯編成OBJ文件;3用LINK程序把OBJ文件轉(zhuǎn)連接成EXE文件;4用DOS命令直接鍵入文件名就可執(zhí)行該程序。圖1 匯編語言程序的建立及匯編過程1. 檢查源程序;2. 測出源程序中的語法錯誤,并給出出錯信息;3. 產(chǎn)生目標(biāo)文件(.OBJ),并可給出列表文件(同時列出匯編語言源程序和機(jī)器語言目標(biāo)程序的文件,稱之為.LST文件)和交叉索引文件(列出程序中使用的符號、變量和標(biāo)號以及引用情況,稱之為.CRF文件)。4. 展開宏指令。1.1建立匯編語言的工作環(huán)境為
6、運行匯編語言程序至少要在磁盤上提供以下文件:1編輯程序,如EDIT.EXE2匯編程序,如MASM.EXE3連接程序,如LINK.EXE4調(diào)試程序,如DEBUG.COM1.2 匯編語言源程序上機(jī)過程1.建立匯編源程序ASM文件2.匯編產(chǎn)生OBJ文件3. 鏈接產(chǎn)生EXE文件4. 程序的調(diào)試和執(zhí)行5. 生成EXE或COM文件2 匯編語言程序格式存儲器的物理地址由段基址和偏移地址組合而成,任何一個邏輯段,無論是代碼段,數(shù)據(jù)段,堆棧段,附加段都必須進(jìn)行段定義,以便連接程序把不同段和模塊連接成一個可執(zhí)行程序。此外,還必須明確段和段寄存器之間的關(guān)系,這可使用段分配語句來完成。1、段定義語句4個邏輯段不一定全
7、部要定義,通常代碼段和數(shù)據(jù)段是必須的,附加段可以省略。但當(dāng)代碼段中使用了串指令,必須設(shè)置附加段作目標(biāo)串基址用,附加段也可用來存放數(shù)據(jù),增大數(shù)據(jù)段容量。一般程序結(jié)構(gòu):(1)代碼段:存放程序執(zhí)行的指令(2)數(shù)據(jù)段:存放程序所需的數(shù)據(jù)(3)堆棧段:存放程序執(zhí)行的臨時信息數(shù)據(jù)段定義格式:DATA SEGMENT ; 數(shù)據(jù)段RESULT_1 DB 1 RESULT_2 DB 1 RESULT_3 DB 1 DATA ENDS 附加段的定義:EXTRA SEGMENT DEST_BUFFER DB 50 DUP (?)EXTRA ENDS堆棧段的定義:STACK SEGMENT STACK ; 堆棧段 S
8、TA DB 64 DUP(0)STACK_TOP DB 0STACK ENDS 2、段分配語句在8086/8088系統(tǒng)中存儲器采用分段結(jié)構(gòu),各段容量64K字節(jié),用戶可以設(shè)置多個邏輯段,但只允許4個邏輯段同時有效,段分配語句用來完成將邏輯段分別定義成代碼段、數(shù)據(jù)段、堆棧段和附加段。由于ASSUME偽指令只指定某個段分配給哪個段寄存器,并將代碼段的段基址自動裝入CS寄存器中,而不能自動把其它段基址裝入相應(yīng)的段寄存器中,所以在代碼段的開始要有一段初始化程序完成這一工作。對堆棧段來說除了將段基址送入SS寄存器外,還要將棧頂偏移地址置入堆棧指示器SP中。ASSUME CS:段名, DS:段名, ES:段
9、名, SS:段名(一)DOS下的匯編調(diào)試:步驟1 匯編調(diào)試所需的文件已拷貝在D:MASM子目錄下,它們是:(1) 用文本編輯軟件UltraEdit 、WINDOWS 中的記事本或其它的文本編輯器輸入?yún)R編語言程序, 注意在最后一行的 END輸入完后要按一次回車鍵,保存的源文件的擴(kuò)展各一定要是 ASM如: EXAMPLE.ASM(2) MASM.EXE 宏匯編工具,把 ASM源文件生成OBJ目標(biāo)文件,(3) LINK.EXE 鏈接工具,把OBJ文件生成EXE文件(4) DEBUG.COM 調(diào)試工具,可對程序進(jìn)行調(diào)試,跟蹤2、進(jìn)入 Windows XP 的命令行方式(在運行程序欄中輸入command
10、/cmd 并按回車鍵) 或 Windows ME 和 Windows 98 的 MS-DOS 方式 ( 在 開始 程序 附件 MS-DOS 方式 )。3、在 DOS 提示符下進(jìn)行匯編 、連接 、動態(tài)調(diào)試等操作。 例如: 對源文件 EXAMPLE.ASM 進(jìn)行的操作 D:MASMMASM EXAMPLE; 匯編源程序操作 D:MASMLINK EXAMPLE; 連接并生成擴(kuò)展名為 .EXE 的可執(zhí)行文件 D:MASMDEBUG EXAMPLE.EXE 對可執(zhí)行文件進(jìn)行調(diào)試 3、要求掌握的調(diào)試命令(在 DEBUG 中使用的命令) a: U - 反匯編命令 用法: -U 代碼段地址:起始偏移地址 如
11、:-U CS:100 b: D - 顯示內(nèi)存中的數(shù)據(jù)命令 用法: -D 數(shù)據(jù)段地址:存放數(shù)據(jù)的偏移地址如:-D DS:00 20 c: T - 單步執(zhí)行程序命令 用法: -T 要執(zhí)行的指令條數(shù) 如:-T 3 d: G - 連續(xù)執(zhí)行程序命令 用法: -G=代碼段地址:指令的起始偏移地址指令的結(jié)束偏移地址 如: -G=CS:100 106 注意: 結(jié)束地址一定要是操作碼的所在地址 e: R - 查看和修改寄存器數(shù)據(jù)命令 用法: -R 回車 如:-R AX f: F - 對內(nèi)存單元填充數(shù)據(jù)命令 用法: -F 數(shù)據(jù)段地址:偏移首地址 偏移未地址填入的數(shù)據(jù) 如: -F DS:100 120 ff g:
12、Q - 退出”DEBUG“ 應(yīng)用程序命令 4、應(yīng)用例子及操作步驟 將 AX 中的十六進(jìn)制數(shù)拆為三個 BCD 碼, 并存入 Result_1, Result_2, Result_3 的三個單元中。DATA SEGMENT ; 數(shù)據(jù)段RESULT_1 DB 1 RESULT_2 DB 1 RESULT_3 DB 1 DATA ENDSSTACK SEGMENT STACK ; 堆棧段 STA DB 64 DUP(0)STACK_TOP DB 0STACK ENDSCODE SEGMENT ; 代碼段 ASSUME CS:CODE , DS:DATA , ES:DATA , SS:STACK STA
13、RT: ; 程序開頭必須要有的五條指令 MOV AX, DATA MOV DS, AX ; 設(shè)置數(shù)據(jù)段 MOV AX, STACK MOV SS, AX ; 設(shè)置堆棧段 LEA SP, STACK_TOP ; 設(shè)置棧頂指針;- ; 程序的中間部分 MOV AX, 587 MOV CL, 100 DIV CL MOV RESULT_1, AL ; 除以 100, 得百位數(shù) MOV AL, AH MOV AH, 0 MOV CL, 10 DIV CL MOV RESULT_2, AL ; 余數(shù)除以 10, 得十位數(shù) MOV RESULT_3, AH ; 余數(shù)為個位數(shù) ;- ; 程序結(jié)束必須要有的兩
14、條指令 MOV AX, 4C00H ; INT 21H ; ;- CODE ENDS END START ; 最后一行要按回車鍵 、對源程序進(jìn)行匯編產(chǎn)生OBJ文件-編譯過程D:MASM>MASM EXAMPLE; Microsoft (R) Macro Assembler Version 5.00Copyright (C) Microsoft Corp 1981-1985, 1987. All rights reserved. 51514 + 408822 Bytes symbol space free 0 Warning Errors 0 Severe Errors、對目標(biāo)文件進(jìn)行連接
15、產(chǎn)生EXE文件-連接過程D:MASM>LINK EXAMPLE; Microsoft (R) 8086 Object Linker Version 3.05Copyright (C) Microsoft Corp 1983, 1984, 1985. All rights reserved.、對可執(zhí)行文件進(jìn)行調(diào)試 -調(diào)試過程D:MASM>DEBUG EXAMPLE.EXE -U CS:0000 用反匯編命令“U 代碼段地址:起始偏移地址”顯示出程序的標(biāo)識符-U 0 2C160D:0000 B80716 MOV AX,1607 ; 程序的起始地址是 160DH:0000H 160D:0
16、003 8ED8 MOV DS,AX160D:0005 B80816 MOV AX,1608160D:0008 8ED0 MOV SS,AX160D:000A 8D264100 LEA SP,0041160D:000E B84B02 MOV AX,024B160D:0011 B164 MOV CL,64160D:0013 F6F1 DIV CL160D:0015 A20000 MOV 0000,AL160D:0018 8AC4 MOV AL,AH160D:001A B400 MOV AH,00160D:001C B10A MOV CL,0A160D:001E F6F1 DIV CL160D:0
17、020 A20100 MOV 0001,AL160D:0023 88260200 MOV 0002,AH160D:0027 B8004C MOV AX,4C00 ; 程序的結(jié)束地址是 160DH:0027H160D:002A CD21 INT 21160D:002C 9E SAHF- 執(zhí)行程序前觀察內(nèi)存中的數(shù)據(jù)-D DS:0000 ; 顯示內(nèi)存中的數(shù)據(jù)命令,命令“D 數(shù)據(jù)段地址:存放數(shù)據(jù)的偏移地址” 顯示內(nèi)存中的數(shù)據(jù) -D DS:0 3015F7:0000 CD 20 00 A0 00 9A F0 FE-1D F0 3C 03 5D 0F 77 03 . .<.w.15F7:0010 5
18、D 0F 04 03 5D 0F 4C 0F-01 01 01 00 02 FF FF FF .L.15F7:0020 FF FF FF FF FF FF FF FF-FF FF FF FF E6 15 4C 01 .L.-G=CS:0000 0027 ; 連續(xù)執(zhí)行程序命令代碼段地址:指令的起始偏移地址指令的結(jié)束偏移地址AX=0708 BX=0000 CX=000A DX=0000 SP=0041 BP=0000 SI=0000 DI=0000DS=1607 ES=15F7 SS=1608 CS=160D IP=0027 NV UP EI PL NZ NA PO NC160D:0027 B80
19、04C MOV AX,4C00- 執(zhí)行程序后觀察內(nèi)存中的數(shù)據(jù)(結(jié)果 )-D DS:0000 ; 用顯示內(nèi)存中的數(shù)據(jù)命令命令“D 數(shù)據(jù)段地址:存放數(shù)據(jù)的偏移地址”顯示內(nèi)存中的數(shù)據(jù) -D DS:00 ; 觀察內(nèi)存中的數(shù)據(jù)1607:0000 05 08 07 00 00 00 00 00-00 00 00 00 00 00 00 00 .1607:0010 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 .1607:0020 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 .-R IP 修改IP寄存器中的
20、數(shù)據(jù)IP 0027 顯示修改前的數(shù)據(jù):00 輸入修改的數(shù)據(jù)-T ;單步執(zhí)行程序命令(執(zhí)行一條指令)AX=1607 BX=0000 CX=000A DX=0000 SP=0041 BP=0000 SI=0000 DI=0000DS=1607 ES=15F7 SS=1608 CS=160D IP=0003 NV UP EI PL NZ NA PO NC160D:0003 8ED8 MOV DS,AX-T3 ;執(zhí)行3條指令A(yù)X=1607 BX=0000 CX=000A DX=0000 SP=0041 BP=0000 SI=0000 DI=0000DS=1607 ES=15F7 SS=1608 CS=
21、160D IP=0005 NV UP EI PL NZ NA PO NC160D:0005 B80816 MOV AX,1608AX=1608 BX=0000 CX=000A DX=0000 SP=0041 BP=0000 SI=0000 DI=0000DS=1607 ES=15F7 SS=1608 CS=160D IP=0008 NV UP EI PL NZ NA PO NC160D:0008 8ED0 MOV SS,AXAX=1608 BX=0000 CX=000A DX=0000 SP=0041 BP=0000 SI=0000 DI=0000DS=1607 ES=15F7 SS=1608
22、 CS=160D IP=000E NV UP EI PL NZ NA PO NC160D:000E B84B02 MOV AX,024B-R ; 查看寄存器數(shù)據(jù)命令A(yù)X=0302 BX=0000 CX=000A DX=0000 SP=0014 BP=0000 SI=0000 DI=0000DS=1607 ES=1607 SS=12A0 CS=129D IP=0028 NV UP EI PL NZ NA PO NC129D:0028 B8004C MOV AX,4C00-R AX ;查看和修改寄存器數(shù)據(jù)命令A(yù)X 0302:FFFF-R ; 查看寄存器數(shù)據(jù)命令A(yù)X=FFFF BX=0000 CX=
23、000A DX=0000 SP=0014 BP=0000 SI=0000 DI=0000DS=1607 ES=1607 SS=12A0 CS=129D IP=0028 NV UP EI PL NZ NA PO NC129D:0028 B8004C MOV AX,4C00-F 數(shù)據(jù)段地址:偏移首地址 偏移未地址填入的數(shù)據(jù)-F DS:0000 0030 DF ; 對內(nèi)存單元填充數(shù)據(jù) -D DS:00 ; 觀察內(nèi)存中的數(shù)據(jù)1607:0000 DF DF DF DF DF DF DF DF-DF DF DF DF DF DF DF DF .1607:0010 DF DF DF DF DF DF DF DF-DF DF DF DF DF DF DF DF .1607:0020 DF DF DF DF DF DF DF DF-DF DF DF DF DF DF DF DF .1607:0030 D
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 創(chuàng)新人才培養(yǎng)的國際經(jīng)驗借鑒
- 培育消費場景的策略及實施路徑
- Unit 3 My School Project (3a–3c)說課稿-2024-2025學(xué)年人教版七年級英語上冊
- 駕駛員交通安全承諾責(zé)任書范文
- 人教版八年級歷史與社會下冊第八單元第一課第一框《鴉片戰(zhàn)爭》說課稿
- 2025年班主任工作計劃格式及范文
- Unit 4 Last Weekend(說課稿)-2023-2024學(xué)年人教新起點版英語五年級下冊
- 2025年酒店工作思路酒店經(jīng)理個人工作計劃
- 2025幼兒園暑假假期計劃
- 2025年學(xué)校部門下半年工作計劃
- 四川新農(nóng)村建設(shè)農(nóng)房設(shè)計方案圖集川西部分
- OBE教育理念驅(qū)動下的文學(xué)類課程教學(xué)創(chuàng)新路徑探究
- GB/T 20279-2024網(wǎng)絡(luò)安全技術(shù)網(wǎng)絡(luò)和終端隔離產(chǎn)品技術(shù)規(guī)范
- 2024貴州省體育彩票管理中心招聘工作人員44人歷年高頻500題難、易錯點模擬試題附帶答案詳解
- GB/T 15568-2024通用型片狀模塑料(SMC)
- “莞能提升”計劃能力提升培養(yǎng)資助申請表
- ISO9001-ISO14001-ISO45001三體系內(nèi)部審核檢查表
- JT∕T 1477-2023 系列2集裝箱 角件
- 危險廢物處置項目實施方案
- 乙酸鈉危化品安全信息卡、周知卡及MSDS-
- 人工造林項目與其他單位的協(xié)調(diào)配合
評論
0/150
提交評論