實驗一-8086匯編語言上機調(diào)試及基本操作_第1頁
實驗一-8086匯編語言上機調(diào)試及基本操作_第2頁
實驗一-8086匯編語言上機調(diào)試及基本操作_第3頁
實驗一-8086匯編語言上機調(diào)試及基本操作_第4頁
實驗一-8086匯編語言上機調(diào)試及基本操作_第5頁
已閱讀5頁,還剩6頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、實驗一:8086匯編語言上機調(diào)試及基本操作(驗證性)1、實驗目的:(1)掌握常用DEBUG命令: G,D,R,T,U,Q。(2)掌握工具軟件EMU8086。(3)掌握完整程序設計方法的格式,能正確書寫數(shù)據(jù)段,代碼段等。(4)掌握簡單的數(shù)值轉(zhuǎn)換算法2、實驗說明:計算機中的數(shù)值有各種表達方式,這是計算機的基礎。掌握各種數(shù)制之間的轉(zhuǎn)換是一種基本功。3、程序框圖:對于0-999(即000H-3E7H)范圍內(nèi)的二進制數(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ù)據(jù)段 MOV AX, STACK MOV SS, AX ; 設置堆棧段 LEA SP, STACK_TOP ; 設置棧頂指針 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) 用合適的編輯軟件編輯以上源文件并存入合適目錄;要求補充注釋未注釋的偽指令和指令;2) 分別在和下編譯、連接生成可執(zhí)行文件,比較兩個環(huán)境下生成的機器碼的長度和內(nèi)容;試指出第、條指令的和機器碼。3) 分別在和emu8086下調(diào)試

4、該可執(zhí)行文件,給出程序運行時的各段地址(?,?)舉例說明debug的t,d,g,u等命令操作方法并對寄存器的變化作出解釋;試改變被轉(zhuǎn)換的三位數(shù),并解釋轉(zhuǎn)換過程中標志寄存器中各標志位的結果;如何觀察轉(zhuǎn)換結果的變化?4) 寫出完整的實驗報告,特別是“實驗結果”與“實驗總結體會”部分,是評分的主要依據(jù)。5) 實驗總結中要求結合實驗中的經(jīng)驗、教訓或體會對匯編語言格式、調(diào)試方法和微機原理學習方法作出總結。6、思考題:1) 用單步執(zhí)行命令t運行程序, 運行到mov ax, 4c00h, int 21h指令后,cs和IP寄存器內(nèi)容前后有何變化?產(chǎn)生變化的原因是什么?2) 試寫出將BCD轉(zhuǎn)換成二進制碼的匯編程

5、序?!緦嶒炤o導資料】1 匯編語言程序的上機過程在計算機上運行匯編語言程序的步驟是:1用編輯程序建立ASM源文件;2用MASM程序把ASM文件轉(zhuǎn)匯編成OBJ文件;3用LINK程序把OBJ文件轉(zhuǎn)連接成EXE文件;4用DOS命令直接鍵入文件名就可執(zhí)行該程序。圖1 匯編語言程序的建立及匯編過程1. 檢查源程序;2. 測出源程序中的語法錯誤,并給出出錯信息;3. 產(chǎn)生目標文件(.OBJ),并可給出列表文件(同時列出匯編語言源程序和機器語言目標程序的文件,稱之為.LST文件)和交叉索引文件(列出程序中使用的符號、變量和標號以及引用情況,稱之為.CRF文件)。4. 展開宏指令。1.1建立匯編語言的工作環(huán)境為

6、運行匯編語言程序至少要在磁盤上提供以下文件:1編輯程序,如EDIT.EXE2匯編程序,如MASM.EXE3連接程序,如LINK.EXE4調(diào)試程序,如DEBUG.COM1.2 匯編語言源程序上機過程1.建立匯編源程序ASM文件2.匯編產(chǎn)生OBJ文件3. 鏈接產(chǎn)生EXE文件4. 程序的調(diào)試和執(zhí)行5. 生成EXE或COM文件2 匯編語言程序格式存儲器的物理地址由段基址和偏移地址組合而成,任何一個邏輯段,無論是代碼段,數(shù)據(jù)段,堆棧段,附加段都必須進行段定義,以便連接程序把不同段和模塊連接成一個可執(zhí)行程序。此外,還必須明確段和段寄存器之間的關系,這可使用段分配語句來完成。1、段定義語句4個邏輯段不一定全

7、部要定義,通常代碼段和數(shù)據(jù)段是必須的,附加段可以省略。但當代碼段中使用了串指令,必須設置附加段作目標串基址用,附加段也可用來存放數(shù)據(jù),增大數(shù)據(jù)段容量。一般程序結構:(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)中存儲器采用分段結構,各段容量64K字節(jié),用戶可以設置多個邏輯段,但只允許4個邏輯段同時有效,段分配語句用來完成將邏輯段分別定義成代碼段、數(shù)據(jù)段、堆棧段和附加段。由于ASSUME偽指令只指定某個段分配給哪個段寄存器,并將代碼段的段基址自動裝入CS寄存器中,而不能自動把其它段基址裝入相應的段寄存器中,所以在代碼段的開始要有一段初始化程序完成這一工作。對堆棧段來說除了將段基址送入SS寄存器外,還要將棧頂偏移地址置入堆棧指示器SP中。ASSUME CS:段名, DS:段名, ES:段

9、名, SS:段名(一)DOS下的匯編調(diào)試:步驟1 匯編調(diào)試所需的文件已拷貝在D:MASM子目錄下,它們是:(1) 用文本編輯軟件UltraEdit 、WINDOWS 中的記事本或其它的文本編輯器輸入?yún)R編語言程序, 注意在最后一行的 END輸入完后要按一次回車鍵,保存的源文件的擴展各一定要是 ASM如: EXAMPLE.ASM(2) MASM.EXE 宏匯編工具,把 ASM源文件生成OBJ目標文件,(3) LINK.EXE 鏈接工具,把OBJ文件生成EXE文件(4) DEBUG.COM 調(diào)試工具,可對程序進行調(diào)試,跟蹤2、進入 Windows XP 的命令行方式(在運行程序欄中輸入command

10、/cmd 并按回車鍵) 或 Windows ME 和 Windows 98 的 MS-DOS 方式 ( 在 開始 程序 附件 MS-DOS 方式 )。3、在 DOS 提示符下進行匯編 、連接 、動態(tài)調(diào)試等操作。 例如: 對源文件 EXAMPLE.ASM 進行的操作 D:MASMMASM EXAMPLE; 匯編源程序操作 D:MASMLINK EXAMPLE; 連接并生成擴展名為 .EXE 的可執(zhí)行文件 D:MASMDEBUG EXAMPLE.EXE 對可執(zhí)行文件進行調(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=代碼段地址:指令的起始偏移地址指令的結束偏移地址 如: -G=CS:100 106 注意: 結束地址一定要是操作碼的所在地址 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“ 應用程序命令 4、應用例子及操作步驟 將 AX 中的十六進制數(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ù)據(jù)段 MOV AX, STACK MOV SS, AX ; 設置堆棧段 LEA SP, STACK_TOP ; 設置棧頂指針;- ; 程序的中間部分 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ù) ;- ; 程序結束必須要有的兩

14、條指令 MOV AX, 4C00H ; INT 21H ; ;- CODE ENDS END START ; 最后一行要按回車鍵 、對源程序進行匯編產(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、對目標文件進行連接

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í)行文件進行調(diào)試 -調(diào)試過程D:MASM>DEBUG EXAMPLE.EXE -U CS:0000 用反匯編命令“U 代碼段地址:起始偏移地址”顯示出程序的標識符-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 ; 程序的結束地址是 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í)行程序命令代碼段地址:指令的起始偏移地址指令的結束偏移地址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ù)(結果 )-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條指令AX=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ù)命令AX=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ù)命令AX 0302:FFFF-R ; 查看寄存器數(shù)據(jù)命令AX=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)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論