微機實驗報告_第1頁
微機實驗報告_第2頁
微機實驗報告_第3頁
微機實驗報告_第4頁
微機實驗報告_第5頁
已閱讀5頁,還剩29頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、 微機實驗報告學(xué) 生 姓 名 專 業(yè) 班 學(xué) 號 指 導(dǎo) 老 師 年 月 日注:紅色為程序修改部分實驗一 1、用命令 A 匯編下列指令,判斷指令正誤并說明原因。 (1) ROR AX,8 (2) LEA DI,AX (3) MOV DS,2010 (4) PUSH AL (5) OUT 900,AL (6) MOV BX,0答:(1)ROR 為右移指令,每次移位只能移一個位。(2)不能對累加器去偏移地址。(3)立即數(shù)不能直接發(fā)送給段寄存器。此程序正確應(yīng)該改為: MOV AX,2010 MOV DS,AX(4)字壓入堆棧指令,它允許將 16 位的源操作數(shù)壓入堆棧。(5)OUT 指令是把累加 AL

2、/AX 中的內(nèi)容輸出到指定的端口。(6)錯在不知道 0 是以字節(jié)型數(shù)據(jù)存儲到BX還是以字型數(shù)據(jù)存儲到BX。2、說明可讀寫內(nèi)存 RAM 和只讀內(nèi)存 ROM 的區(qū)別。答: ROM 和 RAM 是計算機內(nèi)存儲器的兩種型號,ROM 表示的是只讀存儲器,即:它只能讀出信息,不能寫入信息,計算機關(guān)閉電源后其內(nèi)的信息仍舊保存,一般用它存儲固定的系統(tǒng)軟件和字庫等。RAM 表示的是讀寫存儲器,可其中的任一存儲單元進(jìn)行讀或?qū)懖僮?,計算機關(guān)閉電源后其內(nèi)的信息將不在保存,再次開機需要重新裝入,通常用來存放操作系統(tǒng),各種正在運行的軟件、輸入和輸出數(shù)據(jù)、中間結(jié)果及與外存交換信息等,我們常說的內(nèi)存主要是指 RAM。3、說明

3、命令 T 和 P 的差別。答:兩個都是單步執(zhí)行指令。區(qū)別在于遇到調(diào)轉(zhuǎn)程序 call 指令時,T 指令會跳到 call 指令中去一步一步的執(zhí)行;而 p 指令遇到 call 指令時,它一下子全部執(zhí)行后就跳出來,而不會一步一步的去執(zhí)行。指出任務(wù) 6 中程序段的出錯原因,給出修改后的程序段。4、利用 T,P,G 命令,執(zhí)行下列指令段,注意它們的不同之處。 (1) MOV DI,300 MOV SI,400 MOV CX,3 CLD REP MOVSB INT 3-T 指令-G 指令-P 指令(2) MOV AH,2 MOV DL,41 INT 21 INT 3-P 指令-G 指令實驗總結(jié):指令異同T一

4、步一步執(zhí)行G執(zhí)行一段代碼執(zhí)行指令操作P在執(zhí)行的過程中跳過循環(huán)(7) 先在 CS:200 處匯編一條 RET 指令,再在 CS:100 處匯編。 MOV BX,200 CALL BX INT 3然后從 MOV BX,200 處開始執(zhí)行。7、給出任務(wù) 7 中調(diào)試好的程序。用命令 A 匯編下列程序段,并將程序?qū)懙接脖P上,然后調(diào)試程序段,觀察程序段能否完成指定功能,若不能,說明原因,并修改程序。(8) 完成將 DS:2000 開始的 5 個字節(jié)內(nèi)存內(nèi)容相加,并把相加的結(jié)果存放在 DS2005 內(nèi)存單元中。 MOV CX,5 MOV AL,0 MOV BX,2000 nest: ADD AL,BX IN

5、C BX DEC CX LOOP nest MOV BX,AL INT 3(9) 以雙重循環(huán)來實現(xiàn)延時,然后再給 AX 賦值。 MOV AX,0 again1:MOV SI,3 again2:MOV DI,3 DEC DI JNZ again2 DEC SI JNZ again1MOV AX,100INT 3SI 減為零8、回答問題思考。a)、假設(shè)某內(nèi)存單元的內(nèi)容為 CCH,試問該內(nèi)容如看作一條指令、看作無符號數(shù)、看作帶符號數(shù),那將分別表示什么?不查看教材中的指令系統(tǒng)代碼,如何在DEBUG 下知道 CCH 表示一條什么指令?答:CC 指令: INT3 調(diào)試斷點; 無符號數(shù):204 帶符號數(shù):-

6、52b)、在指令 MOVBX,AX 中,操作數(shù)BX的尋址方式是什么?在 DEBUG 下執(zhí)行完該指令后,如何查看執(zhí)行結(jié)果?答:指令 MOVBX,AX 中,操作數(shù)BX的尋址方式是:寄存器間接尋址方式。在DEBUG 下執(zhí)行完該指令后,輸入 R 即可。c)、可否隨意在 DEBUG 提示符“”后不帶參數(shù)發(fā)出命令 G?什么情況下使用命令 G 時,可不用“=”給出執(zhí)行的首地址?答:不帶參數(shù)的 G 命令是指從當(dāng)前 CS:IP 處開始運行,直到遇到返回指令、結(jié)束指令等才停止。因此,除非你已知當(dāng)前 CS:IP 就是你想開始的位置,同時在你所運行的程序中,有結(jié)束或返回指令,否則可能會轉(zhuǎn)到不可預(yù)知的地方。 “”而號可

7、以在不管當(dāng)前 IP 為什么的情況下指定起始地址,這大減少了出錯的機率。d)、分析出現(xiàn)死機的幾種情況。如何理解死機現(xiàn)象?試從計算機的工作原理進(jìn)行解釋。答: 情況有:1、散熱不良 2、移動不當(dāng) 3、設(shè)備不匹配 4、內(nèi)存條故障 5、硬盤故障 6、硬件資源沖突 7 內(nèi)存容量不夠 8、病毒感染 9、初始化文件遭破壞 10、啟動的程序太多 11、內(nèi)存中沖突理解: 死機就是 cpu 進(jìn)入了死循環(huán),不能中斷退出到原來的管理進(jìn)程。通常一個進(jìn)程去調(diào)用一個進(jìn)程,就會把原來進(jìn)程的內(nèi)存地址放入堆棧,去執(zhí)行新進(jìn)程,執(zhí)行完,就從堆棧找到原進(jìn)程的地址,回到原進(jìn)程繼續(xù)執(zhí)行。死機的情況很多,多半是內(nèi)核和驅(qū)動的問題造成的,通常應(yīng)用

8、程序不會讓它做底層的事情,你總是可以在任務(wù)管理器里把它給中斷的。實驗二 匯編語言程序結(jié)構(gòu)1 偽操作學(xué)習(xí)編輯下列源文件:datavar0var1var2var3var4datacodestart: SEGMENT DB10101010B,TsingHua DW efgh DB374,1 DW1,9080H DDffeeddccH ENDS SEGMENTASSUME CS:code,DS:data MOVAX,data MOVDS,AX MOVCX,var0 LEAAX,var1 ENDSENDstartcode三、實驗內(nèi)容有如下程序段,程序源文件名設(shè)為 EA1.asm:dataSEGMENTs

9、tringDBhow are you doing?,D_wordDW1234h,5678hDataENDSCodeSEGMENT ASSUMECS:code,DS:datamainPROCFARBegin:PUSH DS MOVAX,0 PUSH AX MOVAX,data MOVDS,AX MOVSI,OFFSET string MOVBL,string RETmainENDPcodeENDS END begin經(jīng)匯編、連接后,形成 EA1.exe,在 DEBUG 下裝入此文件,用 t 查看程序。8結(jié)束實驗前,演示編程任務(wù)(1)(2)(3)(4)的運行結(jié)果,請指導(dǎo),教師檢查。四、問題思考1匯

10、編語言程序中語句 END 后的標(biāo)號作用是什么? 答:END START 表示程序結(jié)束。end 叫做結(jié)束語句, 2采用附錄 2 介紹返回 DOS 的方法二中,可否將語句 main proc far 中的 far 屬性去掉,為什么? 答:不能; 3一個段的大小為多少?一定是 64KB 嗎?如何在 DEBUG 下查看程序在內(nèi)存 的存放情況?畫出編程任務(wù) 4 各段在內(nèi)存的存放情況。 答:最大為 64k,在 dubug 中輸入 d 就是看內(nèi)存存放情況的 實驗三1)顯示 AL 中兩位十六進(jìn)制數(shù)程序B、程序清單CODE SEGMENTASSUME CS:CODE START: MOV AL,3EH MOV

11、BL,AL MOV DL,AL MOV CL,4 SHR DL,CL CMP DL,9JBE NEXT1 ADD DL,7 NEXT1: ADD DL,30H MOV AH,2 INT 21H ;顯示高位 ASCII 碼 MOV DL,BL AND DL,0FH CMP DL,9 JBE NEXT2 ADD DL,7 NEXT2: ADD DL,30H MOV AH,2 INT 21H ;顯示低位 ASCII 碼 MOV AH,4CH INT 21H CODE ENDS ;返回 DOS END START2) 顯示鍵入字符程序 CMP AL,0DH JZ DONE CMP AL,'0&

12、#39; JB NEXT CMP AL,'9' JA NUMB MOV DL,AL MOV AH,2 INT 21H JMP STARTNUMB:CMP AL,41H JB NEXT CMP AL,5AH JA CHARDISP:MOV DL,'C' MOV AH,2 INT 21HNEXT: JMP STARTCHAR:CMP AL,61H JB NEXT CMP AL,7AH JA NEXT JMP DISPDONE: MOV AH,4CH INT 21HCODE ENDSEND START 實驗四1)偶校驗程序清單:a、程序流程圖開始將 DS;SI 指向數(shù)

13、據(jù)內(nèi)存單元AL=(DS;SI)的偏移地址YAL=?$N是否為偶YINC SIN偶數(shù)存儲中(DS;SI)=ALINC DL結(jié)束b、程序:DSEG SEGMENTSTRN DB 'ASCDEfghijkLMNOPQuvw','$'N DB 00hDSEG ENDSCSEG SEGMENTASSUME CS: CSEG, DS: DSEGSTART: MOV AX, DSEGMOV DS, AXLEA SI, STRNMOV DL, 0AGAIN: MOV AL, SICMP AL, '$'JE DONETEST AL, 0FFHJPE NEXTOR

14、AL, 80HMOV SI, ALINC DLNEXT: INC SIJMP AGAINDONE: MOV N, DLMOV AH, 4CHINT 21HCSEG ENDSEND START實驗結(jié)果:2)加法程序a、程序流程圖:開始顯示被加數(shù)和加數(shù)將加數(shù)和被加數(shù)由 ASCII 碼轉(zhuǎn)化為十六進(jìn)制b、程序清單:DATA SEGMENTDAT1 DB 70H, 80H, 90H, 0A0H, 0A1H,0A2H, 0A3HDB 74H, 65H, 56HDAT2 DB 45H, 67H, 89H, 01AH, 02BH,03CHDB 4DH, 05EH, 06FH, 04HDAT3 DB 10 DU

15、P(?)DATA ENDSCSDE SEGMENT ASSUME CS:CSDE,DS:DATASTART:MOV AX,DATA MOV DS,AX LEA SI,DAT1 LEA DI,DAT2 LEA BX,DAT3 MOV CX,10 XOR AL,ALAGAIN:MOV AL, SI ADC AL, DI MOV BX, AL INC SI INC DI INC BXLOOP AGAIN MOV AH, 4CH INT 21H CSDE ENDS END START計數(shù)值 5CX清除最低位進(jìn)位執(zhí)行 ADC 帶進(jìn)位加法指令A(yù)AA 調(diào)整結(jié)果送被加數(shù)存儲區(qū)調(diào)整偏移量NCX-1=0?Y將十六

16、進(jìn)制結(jié)果轉(zhuǎn)化為 ASCII 碼表示的字符串顯示結(jié)果的和結(jié)束實驗結(jié)果:實驗 五1)碼型轉(zhuǎn)換程序清單:a、程序流程圖:開始MOV AX,DATAMOV DS,AXMOV CX,10LEA BX,BUFYNMOV AL,BX結(jié)束CX=?0MOV DL,AL PUSH CXMOV CL,4SHR DL,CL POP CXYNCX-1<=9ADD DL,30HMOV AH,2INT 21HMOV DL,ALAND DL,OFHY<=9?ADD DL,30HMOV AH,2INT 21HADD DL,7ADD DL,30HMOV AH,2INT 21HNADD DL,7ADD DL,30HMO

17、V AH,2INT 21HINC BXb、實驗清單:DATA SEGMENTBUF DB 0ABH,0CDH,0DEH,01H,02H,03HDB 3AH,4BH,5CH,6FHDATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AXMOV CX,10LEA BX,BUFAGAIN: MOV AL, BXCALL HEXASCINC BXLOOP AGAINMOV AH,4CHINT 21HHEXASC PROC NEARMOV DL,ALPUSH CXMOV CL,4SHR DL,CLPOP CXCALL D

18、ISPMOV DL,ALAND DL,0FHCALL DISPRETHEXASC ENDPDISP PROCCMP DL,9JBE NEXTADD DL,7NEXT: ADD DL,30HMOV AH,2INT 21HRETDISP ENDPCODE ENDSEND START程序運行結(jié)果為:開始MOV AX,DATAMOV DS,AXLEA DX,BUFMOV AH,9INT 21HLEA SI,BUFMOV CL,SI+2MOV CH,0INC SIPOP AXMOV DL,CHARMOV AH,2INT 21HMOV DL,ALAND DL,OFHY<=9?NMOV AL,CHAR

19、MOV AH,0PUSH SIPUSH CXPUSH AXADD DL,30HMOV AH,2INT 21ADD DL,7ADD DL,30HMOV AH,2INT 21PUSH BPMOV BP,SPMOV SI,BP+10MOV CX,BP+6XOR AH,AH結(jié)束YCX=?0CX-1NYAL=?SIINC AHINC SIINC SINMOV AL,AHMOVBP+10,AXPOP BPB、程序清單:DATA SEGMENTCHAR DB "b"BUF DB "Qbbbbbbbaaaaaaa$"N EQU $-BUFDATA ENDSscode s

20、egment assume cs: scodeCHECK PROC FARPUSH BPMOV BP,SPMOV SI,BP+10MOV CX,BP+8MOV AX,BP+6XOR AH,AHAGAIN: CMP AL,SIJNE NEXT1INC AHNEXT1: INC SILOOP AGAINMOV AL,AHMOV BP+10,AXPOP BPRET 4CHECK ENDPscode endsMCODE SEGMENTASSUME CS: MCODE, DS: DATASTART: MOV AX,DATAMOV DS,AXLEA DX,BUFMOV AH,9INT 21HLEA SI,

21、 BUFMOV CL, SI+1MOV CH, 0INC SIINC SIMOV AL,CHARMOV AH,0PUSH SIPUSH CXPUSH AXCALL CHECKMOV DL,CHARMOV AH,2INT 21HPOP AXMOV DL,ALAND DL, 0FHCMP DL,9JBE NEXTADD DL,7NEXT: ADD DL,30HMOV AH,2INT 21HMOV AH,4CHINT 21HMCODE ENDSEND START程序運行如下: 實驗 六1)轉(zhuǎn)換字符串小寫字母為大寫字母:A、程序清單:EXTRN DNTOUP: FARPUBLICSTRING1, ST

22、RING2DATASEGMENTSTRING1DB 'This is a Book','$'STRING2DB 80 DUP (0)DATAENDSCODESEGMENTASSUME CS: CODE, DS: DATASTART:MOV AX, DATAMOVDS, AXCALL DNTOUPMOV AH, 4CHINT 21HCODEENDSENDSTARTPUBLICDNTOUPEXTRNSTRING1: BYTE, STRING2: BYTECODESEGMENTASSUMECS: CODEDNTOUPPROC FARMOVBX,0CYCLE:MOVAL

23、, STRING1 BXCMPAL,24HJZ DONECMPAL,61HJB NEXT debugCMPAL, 7AHJA NEXTSUB AL,20HNEXT:MOVSTRING2 BX,ALNC BXJMP CYCLEDONE:MOVAL,'$'MOVSTRING2BX,ALMOVDL, 0DHMOVAH, 2INT 21HMOVDL, 0AHMOVAH, 2INT 21HLEA DX, STRING1MOVAH, 9INT 21HMOVDL, 0DHMOVAH, 2INT 21HMOVDL, 0AHMOVAH, 2INT 21HMOVDX, OFFSET STRING2

24、MOVAH,9RETDNTOUPCODEENDENDP ENDS程序運行如下:2)查找指定字符,并返回地址值A(chǔ)、程序清單:EXTRN FINDC:FARPUBLIC STRINDATA SEGMENTSTRIN DB 'LINK DISPLAY SUBR OUNTINE $'ADDR DW ?DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATASTART:MOV AX,DATA MOV DS,AX MOV AH,1 INT 21H CALL FINDC MOV ADDR,DI MOV DL,AL PUSH AX MOV CL,4 SHR DL

25、,CL CMP DL,9 JBE JUMP ADD DL,7JUMP:ADD DL,30H MOV AH,2 INT 21H MOV AH,4CH INT 21H CODE ENDS END START;FINDC.ASM 為子模塊程序名PUBLIC FINDCEXTRN STRN:BYTECODE SEGMENT ASSUME CS:CODEFINDC PROC FAR LEA DI,TRINAGAIN:CMP BYTE PRTDI,'$' JZ DONE CMP AL,DI JNZ NEXTDONE1:RETNEXT:INCDI JMP AGAINDONE:MOV DI,0

26、FFFFH JMP DONE1FINDC ENDPCODE ENDS END實驗七1、統(tǒng)計小寫字母個數(shù)A、流程圖:開始提示輸入字符串回顯示輸入的字符串取字符串進(jìn)行判斷所取字符的 ASCII 碼是否大于 97 小于 122?YN壓棧并 DX+1存入該字符并 BX+1字符個數(shù)減 1N字符個數(shù)是否為0?Y存入字符個數(shù)顯示所有字符的個數(shù)、小寫字母及小寫字母的個數(shù)。結(jié)束DATA SEGMENTSTRN DB 80 DUP(?)DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS, AXLEA DI, STRNMOV CL, 0AGAIN: MOV AH,1INT 21HCMP AL,0DHJZ DONEMOV DI,ALINC DIINC CLJMP AGAINDONE: LEA SI,STRNMOV CH,0MOV BL,0CLDCYCLE: LODSBC

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論