




已閱讀5頁,還剩13頁未讀, 繼續(xù)免費閱讀
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
微機原理實驗指導書(電子信息工程 自動化 通信工程專業(yè))湖南人文科技學院通信與控制工程系謝四蓮 編2009年10月目 錄實驗一 學習使用DEBUG主要命令(必做)1實驗二 80X86指令系統(tǒng)和尋址方式(選做)4實驗三 80X86指令系統(tǒng)和尋址方式(二)(選做)6實驗四 匯編語言程序格式、上機過程(必做)8實驗五 分支程序設計(必做)10實驗六 循環(huán)程序設計(必做)11實驗七 子程序設計(選做)13實驗一 學習使用DEBUG主要命令(必做)實驗目的: 通過實驗掌握下列知識: 1、DOS命令: CD、MD、RENAME,EDIT ,COPY。 2、8086指令: MOV,ADD,ADC,SUB,SBB,DAA,XCHG 3、DEBUG命令: A,D,E,F,H,R,T,U。 4、BCD碼,ASCII碼及用16進制數表示二進制碼的方法。 5、8086寄存器: AX,BX,CX,DX,F,IP。 內容及步驟: 一、DOS常用命令練習: 1、自己在C:上新建一個文件夾,以自己的名字的首字母命名,并創(chuàng)建一個文件X.X2、打命令 COPY C:X.X D: 將C:盤上文件拷到D:的目錄上,并與開始創(chuàng)建的文件夾同名。 3,用DIR命令查看D盤上文件。 4、用命令 RENAME 將文件改為更名。 5、用命令 DEL將文件刪除。 在操作時要注意提示信息,并按提示操作。 二、DEBUG 命令使用: 1、打 DEBUG 進入 DEBUG 控制,顯示提示苻 _ 。 2、用命令 F100 10F A 將A的ASCII碼填入內存。 3、用命令 D100 10F 觀察內存中的16進制碼及屏幕右邊的ASCII字符。 4、用命令 F110 11F 41 重復上二項實驗,觀察結果并比較。 5、用命令 E100 30 31 32 3F將30H-3FH寫入地址為100開始的內存 單元中,再用D命令觀察結果,看鍵入的16進制數是什么字符的ASCII碼? 6、用H命令檢查下列各組16進制數加減結果并和你的手算結果比較: (1)34H,22H (2)56H,78H (3)A5,79H (4)1284H,5678H (5)A758,347FH 7、用R 命令檢查各寄存器內容,特別注意AX,BX,CX,DX,IP及標志位中ZF,CF和AF的內容。 8、用R命令將AX,BX內容改寫為1050H及23A8H。 三、8086常用指令練習 1、傳送指令 1)用A命令在內存100H處鍵入下列內容: MOV AX,1234 MOV BX,5678 XCHG AX,BX MOV AH,35 MOV AL,48 MOV DX,75AB XCHG AX,DX 2)用U命令檢查鍵入的程序并記錄,特別注意左邊的機器碼。 3)用T命令逐條運行這些指令,每運行一行檢查并記錄有關寄存器及IP的變化情況。并注意標志位有無變化。 2、加減法指令: 1)用A命令在內存100H處鍵入下列內容: MOV AH,34 MOV AL,22 ADD AL,AH SUB AL,78 MOV CX,1284 MOV DX,5678 ADD CX,DX SUB CX,AX SUB CX,CX 2)用U命令檢查鍵入的程序及對應的機器碼。 3)用T命令逐條運行這些指令,檢查并記錄有關寄存器及ZF情況。 思考:這次運行還是打入T,行不行?怎么辦?用R命令檢查一下IP的內容。注意T命令與IP的關系。 3、帶進位加減法: 1)用A命令在內存100H處鍵入下列內容,并用U命令檢查: MOV AH,12 MOV AL,84 MOV CH,56 MOV CL,78 ADD AL,CL ADC AH,CH MOV DH,A7 MOV DL,58 SUB DL,7F SBB DH,34 2)用T命令逐條運行這些指令,檢查并記錄有寄存器及CF內容。 3)上面這段程序若改用16位操作指令達到同樣結果,怎么改?試修改并運 行之。 4、BCD碼加減法 1)內容: MOV AL,58 ADD AL,25 DAA 2)要求:用A 命令鍵入,U命令檢查,T命令逐條運行并記錄有關寄存器及AF內容。 實驗報告要求: 1、16進制數加減法手算結果及實驗結果 2、8086常用指令練習部分的逐條運行記錄,思考結果及自編程序運行記錄 (列出自編程序)。 附: DEBUG 使用: 1、打 DEBUG 進入 DEBUG,顯示提示苻 _ 。 2、退出DEBUG命令:Q 3、顯示內存命令:D 起始地址 結束地址 4、修改內存命令:E 起始地址,連續(xù)修改打空格鍵。打回車鍵退出E命令。 5、檢查寄存器命令:R 標志位10CFCYNCZFZRNZSFNGPLAFACNAOFOVNVPFPEPODFDNUPIFEIDI6、修改寄存器命令:R 寄存器名 7、小匯編命令:A 起始地址,不輸入指令打回車鍵退出A命令。 8、反匯編命令:U 起始地址 結束地址 9、文件命名命令:N 盤號:文件名 10、讀文件命令:L 內存地址 11、寫文件命令:W 內存地址 10、讀扇區(qū)命令:L 內存地址 盤號(0-A:,1-B:) 扇區(qū)號 扇區(qū)數 11、寫扇區(qū)命令:W 內存地址 盤號 扇區(qū)號 扇區(qū)數 12、運行命令:G=起始地址 結束(斷點)地址 13、單步命令:T=起始地址 運行指令數,進入子程序內部。 14、單步命令:P=起始地址 運行指令數,不進入子程序內部。 15、內存搬家命令:M 起始地址 結束地址 目的地址 實驗二 80X86指令系統(tǒng)和尋址方式(選做)實驗目的: 通過實驗掌握下列知識: 1、DEBUG命令:G,N,W,L及Q。 2、8086系統(tǒng)中數據在內存中的存放方式和內存操作數的幾種尋址方式。 3、8086指令:INC,DEC,LOOP,INT 3,INT 20H,寄存器SI,DI。 4、8086匯編語言偽操作:BYTE PTR,WORD PTR。 5、求累加和程序和多字節(jié)加減法程序。 實驗內容和步驟: 一、內存操作數及各種尋址方式使用: 內容: MOV AX,1234 MOV 1000,AX MOV BX,1002 MOV BYTE PTRBX,20 MOV DL,39 INC BX MOV BX,DL DEC DL MOV SI,3 MOV BX+SI,DL MOV BX+SI+1,DL MOV WORD PTRBX+SI+2,2846 步驟: 1)用A命令鍵入上述程序,并用T命令逐條運行。 2)每運行一條有關內存操作數的指令,要用D命令檢查并記錄有關內存單元的內容并注明是什么尋址方式。 注意D命令顯示結果中右邊的ASCII字符及雙字節(jié)數存放法。 思考:有關指令中BYTE PTR及WORD PTR偽操作不加行不行?試一試。 二、求累加和程序: 程序: MOV BX,1000 MOV CX,10 SUB AX,AX LOP: ADD AL,BX AD CAH,0 INC BX J: LOOP LOP INT 3 步驟: 1)用A命令將程序鍵入到100H開始的內存中,在鍵入時記下標號LOP和J的實際地址,在鍵入LOOP指令時LOP用實際地址值代替。 2)用命令N AA將此程序命名為文件AA(文件名可任取)。 3)用R命令將BX:CX改為程序長度值(即最后一條指令后面的地址減去開始地址) 4)用命令W 100將此程序存到AA命名的磁盤文件中。 5)用命令Q退出DEBUG。 6)用命令DEBUG AA再次調入DEBUG和文件AA,可用U命令檢查調入程序。 若調入DEBUG時忘了加AA文件名,可用N命令和L命令將文件調入。 7)用E命令在內存地址1000H處鍵入16個數字 8)用命令G=100 J(J用實際地址代替),使程序運行并停在斷點J上,檢查 AX,BX的值是否符合你的預計值。 9)用T命令運行一步,觀察程序方向(IP值)和CX值是否與你的估計一樣, 若不一樣,檢查程序是否有錯。 10)重復G J與T,再檢查AX是否正確。 11)用G命令使程序運行到結束,檢查AX值是否正確。 三、多字節(jié)加法程序。 程序: MOV DI,1000 MOV CX,8 MOV SI,2000 CLC LOP: MOV AL,SI ADC DI,AL INC SI INC DI LOOP LOP INT 20 步驟: 1)用命令鍵入此程序 2)用E命令在1000H開始處鍵入一個8字節(jié)被加數,在2000H開始處鍵入一個8字節(jié)加數,均為低字節(jié)在前面。 3)用G命令運行此程序,并用D命令檢查其結果(存放在哪里?),是否正確? 4)將INT 20H指令改為INT 3,有何區(qū)別?若這條指令不加,行不行?試一試。 四。自編程序: 用16位減法指令編一個32位(4字節(jié))數減法程序,兩個源數及結果存放 地址同上題。調試并做記錄。 實驗報告要求: 1、各項實驗結果記錄。 2、自編程序原稿及調試后修正稿,寫出原稿錯在那里。 實驗三 80X86指令系統(tǒng)和尋址方式(二)(選做)實驗目的: 通過實驗掌握下列知識: 1、堆棧。堆棧指示器SP和堆棧操作指令PUSH。POP。 2、段寄存器和物理地址計算。 3、查表法和查表指令XLAT。 4、數據串傳送程序和數據串傳送指令MOVS。STOS及重復前輟REP。 5、循環(huán)指令ROL。邏輯與指令AND和清方向位指令CLD。 6、偽操作指令DB。 實驗內容及步驟: 一、利用查表方法把DX的內容(16進制數)轉換成ASCII碼: 1、用A命令鍵入下列程序: MOV BX,1000 MOV DI,2000 MOV CX,4 LOP: PUSH CX MOV CL,4 ROL DX,CL POP CX MOV AL,DL AND AL,OF XLAT CLD STOSB LOOP LOP INT 20 2、用A命令在1000H處鍵入下列ASCII碼并用D命令檢查之: DB 0 1 2 3 4 5 6 7 8 9 A B C D E F 用D命令檢查時注意左邊的ASCII碼值和右邊的字符。 3、用R命令給DX送一個四位的16進制數(例7F8E)。 4、用T命令逐條運行這程序到LOOP指令處,觀察并記錄每次運行結果,特別是SP和堆棧內容(用D命令檢查) 5、用G命令將此程序運行到結束,并用D命令檢查2000H處所轉換的結果??勺⒁馄聊挥疫叺腁SCII字符與DX是否一致。 二、數據串搬家程序: 1、用A命令鍵入下列程序: MOV SI,1000 MOV DI,1500 MOV CX,0F LOP: MOV AL,SI MOV DI,AL INC SI INC DI LOOP LOP INT 20 2、用A命令DB偽指令在1000H鍵入下列字符串: IBM_PC COMPUTER 3、用G命令運行此程序,并用D命令檢查目的地址處的字符與源串是否一致。 4、若此程序中的目的地址改為1002H,再運行此程序,看能不能把1000H開始的 字符串搬到1002H開始的地方去?修改程序以做到這一點。 三、段寄存器概念及字符串傳送指令練習: 1、用A命令鍵入下列程序: MOV SI,0 MOV DI,0 MOV AX,1000 MOV DS,AX MOV AX,1500 MOV ES,AX MOV CX,0F CLD REP MOVSB INT 20 2、用A命令DB偽指令在1000:0000處鍵入字符串IBM_PC COMPUTER,并用D命檢查之 3、用D命令檢查0F00:1000處內容,看是否一樣。為什么? 4、用G命令運行此程序,檢查目的地址1500:0000處內容。并記下DS與ES值。 5、修改此程序,使ES與DS為同一值,以減少一條指令,而源物理地址和目的物理地址(是多少?)仍和原來一樣。 實驗報告要求: 1、各項實驗記錄和思考題。 2、要求你修改的程序的清單(修改后)和調試記錄。 實驗四 匯編語言程序格式、上機過程(必做)實驗目的: 1、掌握常用工具軟件 MASM5.0,MASM和LINK的使用。 2、偽指令: SEGMENT,ENDS,ASSUME,END,OFFSET,DUP。 3、利用的 1號功能實現鍵盤輸入的方法。 4、了解.EXE文件和.COM文件的區(qū)別及用INT 21H 4C號功能返回系統(tǒng)的方法。 程序1: data segmenta1 db hello!,0dh,0ah,$data endscode segmentassume cs:code,ds:data start: mov ax,data mov ds,ax mov dx,offset a1 mov ah,09h int 21h mov ah,4ch int 21hcode ends end start實驗步驟: 1、用用文字編輯工具(記事本或EDIT)將源程序輸入,其擴展名為.ASM。 2、用MASM對源文件進行匯編,產生.OBJ文件和.LST文件。若匯編時提示有錯,用文字編輯工具修改源程序后重新匯編,直至通過。 3、用LINK將.OBJ文件連接成可執(zhí)行的.EXE文件。 5、在DOS狀態(tài)下運行LINK產生的.EXE文件。按ESC鍵可返回DOS。若未出現預期結果,用DEBUG檢查程序。 程序2:data segment message db This is a sample program of keyboard and disply db 0dh,0ah,Please strike the key!,0dh,0ah,$ data ends stack segment para stack stack db 50 dup(?) stack ends code segment assume cs:code,ds:data,ss:stack start: mov ax,data mov ds,ax mov dx,offset message mov ah,9 int 21h again: mov ah,1 int 21h cmp al,1bh ;1bh escje exit cmp al,61h ;61h ajc nd cmp al,7ah ;7ah z ja nd and al,11011111b nd: mov dl,al mov ah,2 int 21h jmp again exit: mov ah,4ch int 21h code ends end start 實驗報告: 1、匯編,連接及調試時產生的錯誤,其原因及解決辦法。 2、思考: 1)若在源程序中把INT 21H的H省去,會產生什么現象? 2)把 INT 21H 4CH號功能改為 INT 20H,行不行? 實驗五 分支程序設計(必做)實驗目的: 1、掌握利用間接轉移指令JMP BX實現多岔分枝的方法。 2、宏替換指令MACRO及ENDM。 3、符號擴展指令CBW。 實驗程序: disp macro msg lea dx,msg mov ah,9 int 21h mov ah,4ch int 21h endm stack segment stack db 256 dup(0) stack ends data segment parm db 16 dup(?) brtable dw offset bra,offset brb,offset brc dw offset brd,offset bre,offset brf msga db I like my IBM-PC!$ msgb db How are you!$ msgc db Nibao College$ msgd db This is a sample$ msge db Wellcome use my coputer!$ msgf db Theassemder language of 8086$ errms db Error! invalid parameter!$ data ends code segment assume cs:code,ds:data,ss:stack start: mov ax,data mov es,ax mov si,80h lea di,parm mov cx,16 cld rep movsb mov ds,ax cmp parm,2 jc err mov al,parm+2 sub al,30h jc err cmp al,6 jnc err lea bx,brtable cbw add ax,ax add bx,ax jmp bx err: disp errms bra: disp msga brb: disp msgb brc: disp msgc brd: disp msgd bre: disp msge brf: disp msgf code ends end start 實驗步驟: 1、輸入并匯編此程序。要求生成一個 .LST文件。用TYPE命令檢查 .LST文件,觀察宏替換命令產生的指令集。 2、將OBJ文件連接成EXE文件(假設為AA。EXE)。 3、用命令DEBUG AA.EXE XXX (XXX為任意字符串)將AA.EXE帶參數調入DEBUG用D命令觀察DS:0080處的命令行,記錄80H處的內容和字符個數的關糸。 4、退出DEBUG。直接帶參數運行此程序: AA n(n=0-5) 依次觀察并記錄 n從0到5時的運行結果。5、練習教材P136例4.18實驗報告要求: 1、各項實驗記錄和思考題。 2、要求你修改的程序的清單(修改后)和調試記錄。 實驗六 循環(huán)程序設計(必做)實驗目的: 1、掌握循環(huán)程序和排序程序設計方法。 2、掌握帶符號數的比較轉移指令:JL,JLE,JG,JGE 3、偽指令 EQU 及操作符 $的使用。 4、 COM文件的要求和生成過程。 程序: code segment org 100h assume cs:code,ds:code main: jmp start array dw 1234h,5673h,7fffh,8000h,0dffh dw 0ab5h,0369h,005fh,5634h,9069h count equ $-array start: mov cx,count shr cx,1 dec cx mov bl,-1 again: mov dx,cx and bl,bl je exit xor bl,bl xor si,si again1: mov ax,cs:arraysi cmp ax, cs:arraysi+2 jle nchg xchg cs:arraysi+2,ax mov cs:arraysi,ax mov bl,-1 nchg: inc si inc si dec dx jnz again1 loop again exit: mov ah, 4chint 21h code ends end main code segment org 100h assume cs:code,ds:code main: jmp start array dw 1234h,5673h,7fffh,8000h,0dffh dw 0ab5h,0369h,005fh,5634h,9069h count equ $-array start: mov cx,count shr cx,1 dec cx mov bl,-1 again: mov dx,cx and bl,bl je exit xor bl,bl xor si,si again1: mov ax,arraysi cmp ax,arraysi+2 jle nchg xchg arraysi+2,ax mov arraysi,ax mov bl,-1 nchg: inc si inc si dec dx jnz again1 loop again exit: int 20h code ends end main實驗步驟: 1、輸入,匯編并連接此程序。忽略連接時的無堆棧告警。 2、用EXE2BIN將 .exe文件轉換為 。COM文件,命令格式: EXE2BIN? ?.EXE ?.COM 3、在DEBUG下運行此程序,記錄運行結果。 4、將轉移指令JLE改為JBE,JGE和JAE,分別運行并記錄排序結果。5、練習教材P141例4.24實驗報告: 1、實驗記錄。 2、自編程序。 3、體會和意見。 實驗七 子程序設計(選做)實驗目的: 1、掌握利用堆棧傳遞參數的子程序調用方法。 2、掌握子程序遞歸調用方法。 3、過程調用偽指令: PROC,ENDP,NEAR和FAR。 4、8086指令: CALL,RET,RET n。 5、利用RET指令退出EXE文件的方法。 實驗內容及步驟: 一、利用堆棧傳遞參數的子程序調用。(求累加和) 程序: stack segment stack db 256 dup(0) stack ends data segment ary1 db 1,2,3,4,5,6,7,8,9,10 count1 equ $-ary1 sum1 dw ? ary2 db 10,11,12,13,14,15,16,17,18 count2 equ $-ary2 sum2 dw ? data ends main segment assume cs:main,ds:data,ss:stack start proc far push ds xor ax,ax push ax mov ax,data mov ds,ax mov ax,count1 push ax lea ax,ary1
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 石油化工企業(yè)本質安全理論實踐及方法考核試卷
- 牛群結構優(yōu)化方法考核試卷
- 能源地質勘查與新能源探索考核試卷
- 期貨市場流動性改善方案考核試卷
- 共享汽車分時租賃與新能源汽車推廣協議
- 企業(yè)人力資源外包綜合服務協議
- 智能小區(qū)快遞代收系統(tǒng)租賃與智能配送服務合同
- 婚后作品版權收益分割協議
- 藝術品修復工作室租賃與全球藝術品修復產業(yè)合作框架協議
- 國際數據保護常年法律顧問及合規(guī)性審查服務合同
- (四調)武漢市2025屆高中畢業(yè)生四月調研考試 語文試卷(含答案詳解)
- 2023貴州安順市實驗學校招聘公費師范生2人筆試備考題庫及答案解析
- 護理部降低住院患者跌倒發(fā)生率品管圈匯報書模板
- 納稅實務(第二版-楊則文)課件05項目五 企業(yè)所得稅辦稅業(yè)務
- 設備現場調試記錄表完整
- 液化天然氣接收站安全管理規(guī)定
- 影像診斷與手術后符合率統(tǒng)計表
- 中考語文作文專題復習:以小見大的寫作技巧
- 高三主題班會三輪復習動員 沖刺高考課件
- 歷史小劇場《萬隆會議》劇本
- 施工進度計劃網絡圖及橫道圖
評論
0/150
提交評論