中國民航大學微機原理實驗報告_第1頁
中國民航大學微機原理實驗報告_第2頁
中國民航大學微機原理實驗報告_第3頁
中國民航大學微機原理實驗報告_第4頁
中國民航大學微機原理實驗報告_第5頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

中國民航大學《微機原理》實驗報告 姓名:王鵬飛 學號:111142222 指導教師:談嫻茹實驗一Debug命令及匯編指令和尋址的應用實驗目的:掌握DEBUG的基本命令及其功能,學會用DEBUG調試程序;掌握8086CPU的指令功能,體會寄存器的作用;了解數(shù)據(jù)在內存的存放方式和內存操作數(shù)的幾種尋址方式;了解指令的執(zhí)行過程。實驗內容:1、設堆棧段指針SP=1000H,AX=4000H,BX=8000H;請編寫一段程序將AX和BX的內容進行交換。要求:用三種不同的方法。方法一:DATASEGMENTBUFDB?DATAENDSSTACKSEGMENTSTACKDB10DUP(0)STACKENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACKSTART:MOVAX,4000HMOVBX,8000HMOVCX,AXMOVAX,BXMOVBX,CXCODEENDSENDSTART方法二:DATASEGMENTBUFDB?DATAENDSSTACKSEGMENTSTACKDB10DUP(0)STACKENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACKSTART:MOVAX,4000HMOVBX,8000HXCHGAX,BXCODEENDSENDSTART方法三:DATASEGMENTBUFDB?DATAENDSSTACKSEGMENTSTACKDB10DUP(0)STACKENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACKSTART:MOVAX,4000HMOVBX,8000HPUSHAXPUSHBXPOPAXPOPBXCODEENDSENDSTART2、分別執(zhí)行以下指令,比較寄存器尋址,寄存器間接尋址和相對寄存器尋址間的區(qū)別。MOVBX,1000HMOVAX,BXMOVAX,[BX]MOVAX,20[BX]要求:在執(zhí)行以上指令時,記下當時DS數(shù)據(jù)段的值,記下每條指令執(zhí)行后的AX的結果。將以上指令的"BX"修改為DX執(zhí)行指令,觀察結果及結果產生的原因。答:DS數(shù)據(jù)段的值為13D8H,MOVAX,BX執(zhí)行后AX的值為1000H,MOVAX,[BX]執(zhí)行后AX的值為3325H,MOVAX,20[BX]執(zhí)行后AX的值為14ABH。第一條指令是將1000H送入BX寄存器中,指令二是將BX中的值送入AX中,指令三是將存儲器中地址為13D8H:1000H字單元內的值送入AX中,指令四是將存儲器地址為13D8H:1020H字單元的值送入AX中。3、已知有如下程序段:MOVAX,3421HMOVCL,4在以上程序段的基礎上,分別執(zhí)行以下指令:ROLAX,CLRORAX,CLSHLAX,CLSHRAX,CLSARAX,CLRCLAX,CLRCRAX,CL試在DEBUG下用A命令匯編以上程序段,用T命令跟蹤,觀察以下內容:每條指令執(zhí)行完后,AX寄存器的內容是什么?每條指令執(zhí)行完成后,進位、符號和零標志位的值有什么變化?答:ROLAX,CLAX=4213H,CF=1,SF=0,ZF=0;RORAX,CLAX=1342H,CF=0,SF=0,ZF=0;SHLAX,CLAX=3420H,CF=1,SF=0,ZF=0;SHRAX,CLAX=0342H,CF=0,SF=0,ZF=0;SARAX,CLAX=0342H,CF=0,SF=0,ZF=0;RCLAX,CLAX=4213H,CF=1,SF=0,ZF=0;RCRAX,CLAX=3342H,CF=0,SF=0,ZF=0;4、設有以下部分程序段:TABLEDW10H,20H,30H,40H,50HENTRYDW4...LEABX,TABLEADDBX,ENTRYMOVAX,[BX]要求:(1)將以上程序段補充成為一個完整的匯編程序。(2)在(1)的基礎上編輯、調試并運行程序,記錄在執(zhí)行MOVAX,[BX]后AX的內容。答:(1)DATASEGMENTTABLEDW10H,20H,30H,40H,50HENTRYDW4BUFDB20DUP(?)DATAENDSSTACKSEGMENTSTACKDB10DUP(0)STACKENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACKSTART:MOVAX,DATAMOVDS,AXLEABX,TABLEADDBX,ENTRYMOVAX,[BX]MOVAH,4CHINT21HCODEENDSENDSTART(2)AX=30H三、心得及收獲通過此次實驗,我已經(jīng)熟練掌握了程序上機過程,熟悉了程序的匯編、鏈接、調試的步驟,掌握了Debug常用命令的功能及命令格式。在程序匯編時發(fā)現(xiàn)編寫程序存在很多錯誤,無法生成OBJ文件,原因在于第一次上機編寫程序,匯編語言命令和程序格式還不是很熟練,對部分命令功能掌握的并不準確,還有輸入上的一些錯誤等,最后根據(jù)錯誤提示解決了問題,完成了實驗,這也讓我對這些語言命令更熟悉。實驗二匯編語言程序的調試與運行實驗目的掌握匯編語言的開發(fā)環(huán)境和運行過程;熟悉運算類指令對標志位的狀態(tài)影響以及標志位狀態(tài)的表示方法;熟悉邏輯類指令的用法;掌握傳送類指令的功能;掌握順序程序設計的基本方法。實驗內容求單元內存中所定義的兩個字節(jié)變量的連續(xù)內容之和。要求使用三種不同的方法實現(xiàn),下邊給出一種方法,請自己編寫出另外兩種方法的程序(提示:(1)用定義字的形式實現(xiàn);(2)用直接尋址方法實現(xiàn)。DATASEGMENTADB5CH,85HBDB43H,0ABHDATAENDSSTACKSEGMENTSTACKDB10DUP(0)STACKENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACKSTART:MOVAX,DATAMOVDS,AXMOVSI,0MOVAL,A[SI]ADDAL,B[SI]MOVA[SI],ALINCSIMOVAL,A[SI]ADCAL,B[SI]MOVA[SI],ALMOVAH,4CHINT21HCODEENDSENDSTART定義字法:DATASEGMENTADW855CHBDW0AB43HCDW?DATAENDSSTACKSEGMENTSTACKDW10DUP(?)STACKENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACKSTART:MOVAX,DATAMOVDS,AXMOVSI,0MOVAX,A[SI]ADDAX,B[SI]MOVC[SI],AXMOVAH,4CHINT21HCODEENDSENDSTART直接尋址:DATASEGMENTADB5CH,85HBDB43H,0ABHDATAENDSSTACKSEGMENTSTACKDB10DUP(0)STACKENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACKSTART:MOVAX,DATAMOVDS,AXMOVAL,[0000]ADDAL,[0002]MOV[0000],ALMOVAL,[0001]ADCAL,[0003]MOV[0001],ALMOVAH,4CHINT21HCODEENDSENDSTART2、編寫計算表達式2×(X+Y-50)/Z的值得程序,要求將其商和余數(shù)分別放在A、B單元中(設X、Y和Z都是16為有符號數(shù),A、B是字單元,不考慮溢出情況)。DATASEGMENTXDW1234HYDW4567HZDW1321HADW?BDW?DATAENDSSTACKSEGMENTSTACKDB10DUP(0)STACKENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACKSTART:MOVAX,DATAMOVDS,AXMOVAX,XADDAX,YSUBAX,0032HSHLAX,1IDIVZMOVA,AXMOVB,DXMOVAH,4CHINT21HCODEENDSENDSTART結果:A=09H,B=02A9H3、拆字程序:把偏移地址為1000H中的字內容拆開,并將高字節(jié)內容送入4001H單元,將低字節(jié)內容送到4002H單元。DATASEGMENTORG1000HDW3456HORG4001HDB?,?DATAENDSSTACKSEGMENTSTACKDW10DUP(0)STACKENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACKSTART:MOVAX,DATAMOVDS,AXMOVBX,1000HMOVAX,WORDPTR[BX]MOVBX,4001HMOV[BX],AHMOV[BX+1H],ALMOVAH,4CHINT21HCODEENDSENDSTART結果:1000H:56H;1001H:34H;4001H:34H;4002H:56H;三、心得及收獲經(jīng)過實驗發(fā)現(xiàn)對MUL、IMUL、DIV、IDIV等指令的規(guī)則并不明確,在運算時不能正確運用。除此之外當然還對匯編語言命對狀態(tài)標志位的影響更明確,也明確了字單元的數(shù)據(jù)在內存中時是高位高字節(jié),低位低字節(jié)。通過實驗還發(fā)現(xiàn)對知識點的學習存在很多盲點,是上課聽講認真程度不夠,平時看書太馬虎,以后得認真對待。實驗三分支結構程序設計實驗目的熟悉運算類指令對標志位的狀態(tài)影響以及標志位狀態(tài)的表示方法;掌握條件轉移、無條件轉移指令的使用方法;掌握分支程序設計、編寫、調試和運行的方法。實驗內容編寫程序,實現(xiàn)將大寫字母字符串轉換成小寫字符串。設:字符串的首地址為STRING,字符串的長度在LEN單元內。數(shù)據(jù)段定義如下:DATASEGMENTSTRINGDB‘Iamastudent’LENEQU$-STRINGDATAENDS程序如下DATASEGMENTSTRINGDB'Iamastudent'LENEQU$-STRINGDATAENDSSTACKSEGMENTSTACKDB10DUP(0)STACKENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACKSTART:MOVAX,DATAMOVDS,AXMOVBX,0000HROLL:MOVAL,BYTEPTR[BX]CMPAL,60HJNCNEXTADDAL,20HMOV[BX],ALNEXT:INCBXCMPBX,LENJCROLLMOVAH,4CHINT21HCODEENDSENDSTART2、內存中定義三個16位數(shù),判斷這三個數(shù)是否相等。若三個數(shù)相等,則顯示“Allequal.”,若只有其中兩個數(shù)相等,則顯示“Onlytwoequal.”;否則,顯示“Allthreedifferentfromeachother.”。DATASEGMENTADW2345HBDW1234HCDW3214HSTRING1DB"Allequal$"STRING2DB"Onlytwoequal$"STRING3DB"Allthreedifferentfromeachother$"DATAENDSSTACKSEGMENTSTACKDB10DUP(0)STACKENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACKSTART:MOVAX,DATAMOVDS,AXMOVBL,AEQCMOVBH,BEQCADDBL,BHSUBBL,1HJCORDER3SUBBL,1HJCORDER2LEADX,STRING1JMPNEXTORDER2:LEADX,STRING2JMPNEXTORDER3:LEADX,STRING3JMPNEXTNEXT:MOVAH,09HINT21HMOVAH,4CHINT21HCODEENDSENDSTART3、從鍵盤輸入一個字符,判斷該字符時小寫字母、大寫字母、數(shù)字或其他字符,并給出相應的提示。DATASEGMENTADB'Thisisacapital',0dH,0aH,'$'BDB'Thisisalowercase',0dH,0aH,'$'CDB'Thisisafigure',0dH,0aH,'$'DDB'Thisisaundefinedcharacter',0dH,0aH,'$'DATAENDSSTACKSEGMENTSTACKDB100DUP(0)STACKENDSCODESEGMENTASSUMECS:CODE,DS:CODE,SS:STACKSTART:MOVAX,DATAMOVDS,AXNEXT1:MOVAH,01HINT21HCMPAH,0dHJZEXITCMPAL,30HJSNEXTDCMPAL,3AHJSNEXTCCMPAL,41HJSNEXTDCMPAL,60HJSNEXTACMPAL,61HJSNEXTDCMPAL,7BHJSNEXTBNEXTD:LEADX,DJMPNEXT2NEXTA:LEADX,AJMPNEXT2NEXTB:LEADX,BJMPNEXT2NEXTC:LEADX,CNEXT2:MOVAH,09HINT21HJMPNEXT1EXIT:MOVAH,4CHINT21HCODEENDSENDSTART三、心得及收獲由于對條件轉移類指令掌握的不到位,在程序中出現(xiàn)了錯誤的轉跳,而且不能輸練所有的條件轉移指令,導致所編寫程序過于冗長繁復,不夠簡潔。由于對分支結構程序的結構利用不合理,導致程序結構混亂,分支部分不太合理,程序有些頭重腳輕。這些問題經(jīng)過不斷的練習后已經(jīng)有了很大的改善。還有在第三題中對字符分類時,將輸入字符的ASCII碼與其它字符比較時費了好大勁去查各個字符的ASCII碼,最后發(fā)現(xiàn)完全不用那么麻煩,直接把兩個字符進行比較就行了,這也是由于知識點掌握不全面所致,以后會加強。實驗四循環(huán)程序設計實驗目的掌握循環(huán)指令LOOP、LOOPZ、LOOPNZ的使用方法;掌握實現(xiàn)單重、多重循環(huán)程序設計、編寫、調試和運行的方法。實驗內容在數(shù)據(jù)段變量名為A的數(shù)據(jù)區(qū)內有10個字符,編程實現(xiàn)將這10個字符以相反次序傳送到附加段變量名為B的內存區(qū)中。源程序已部分給出,請將程序補充完整,并調試運行結果。DATASEGMENTADB'1234567890'NEQU$-ABDBNDUP(?)DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVES,AXLEASI,ALEADI,BADDDI,NMOVCX,NMOVE:MOVAL,[SI]MOVES:[DI],ALINCSIDECDILOOPMOVEMOVAH,4CHINT21HCODEENDSENDSTART編寫一個程序,將內存1000H開始的連續(xù)100個字節(jié)送往1050H開始的連續(xù)100個內存單元中。DATASEGMENTADB20DUP(?)DATAENDSSTACKSEGMENTSTACKDB200DUP(0)STACKENDSCODESEGMENTASSUMEDS:DATA,SS:STACK,CS:CODESTART:MOVAX,DATAMOVDS,AXMOVCX,64HMOVSI,1000HMOVDI,1050HADDSI,63HADDDI,63HNEXT:MOVAX,[SI]MOV[DI],AXDECSIDECDILOOPNEXTMOVAH,4CHINT21HCODEENDSENDSTART數(shù)據(jù)段開始區(qū)域中,連續(xù)存放著10個無符號數(shù),編寫程序找出這10個數(shù)中最大的一個數(shù),并將其存放到該數(shù)據(jù)區(qū)的后邊。DATASEGMENTADB12H,32H,45H,23H,98H,32H,54H,76H,64H,86HBDB0NEQU$-ADATAENDSSTACKSEGMENTSTACKDB200DUP(0)STACKENDSCODESEGMENTASSUMEDS:DATA,SS:STACK,CS:CODESTART:MOVAX,DATAMOVDS,AXLEABX,AMOVCX,NMOVAL,[BX]ORDER:INCBXCMPAL,[BX]JNBNEXTMOVAL,[BX]NEXT:LOOPORDERMOVB,ALMOVAH,4CHINT21HCODEENDSENDSTART心得及收獲本次實驗內容是熟悉循環(huán)結構程序的編寫,循環(huán)語句很簡單,很容易完成,但在程序中要特別注意的是程序的循環(huán)次數(shù)。在第二題中我運行了自己編寫的程序后發(fā)現(xiàn)結果并不像題目所要求的,其它的符合要求,但1000H單元中的內容并未移到1050H單元中。經(jīng)反復檢查發(fā)現(xiàn)移位100次應該是從1063H開始到1000H結束,我開始是從1064H開始的,循環(huán)了100次之后到1001H結束了,沒有達到預期目的,程序錯誤。所以程序循環(huán)次數(shù)要特別注意。實驗六DOS中斷功能調用程序設計實驗目的掌握1號、2號、9號和10號DOS系統(tǒng)功能的調用方法和程序設計方法。實驗內容編程實現(xiàn)由鍵盤輸入任意一個字符,將該字符的ASCII碼值顯示在屏幕上。DATASEGMENTADB20DUP(?)DATAENDSSTACKSEGMENTSTACKDB200DUP(0)STACKENDSCODESEGMENTASSUMEDS:DATA,SS:STACK,CS:CODESTART:MOVAX,DATAMOVDS,AXNEXT:MOVAH,01HINT21HCMPAL,0DHJNZNEXTMOVAH,4CHINT21HCODEENDSENDSTART編寫一程序,實現(xiàn)從鍵盤輸入一個字符,判斷其是不是一個數(shù)字,如果是則請輸出這個數(shù)字,如果不是,請輸出“這不是一個數(shù)字”的英文信息。DATASEGMENTSTRINGDB'ThisisnotaFigure',0DH,0AH,'$'DATAENDSSTACKSEGMENTSTACKDB200DUP(0)STACKENDSCODESEGMENTASSUMEDS:DATA,SS:STACK,CS:CODESTART:MOVAX,DATAMOVDS,AXNEXT2:MOVAH,08HINT21HCMPAL,0DHJZEXISTCMPAL,30HJBNEXTCMPAL,39HJANEXTMOVDL,ALMOVAH,02HINT21HJMPNEXT3NEXT:LEADX,STRINGMOVAH,09HINT21HNEXT3:JMPNEXT2EXIST:MOVAH,4CHINT21HCODEENDSENDSTART從鍵盤鍵入10個字符,然后以與鍵入相反的順序輸出。DATASEGMENTINFO1DB0DH,0AH,'INPUTSTRING:$'INFO2DB0DH,0AH,'OUTPUTSTRING:$'STRDB20DUP(?)DATAENDSSTACKSEGMENTSTACKDB200DUP(0)STACKENDSCODESEGMENTASSUMEDS:DATA,SS:STACK,CS:CODESTART:MOVAX,DATAMOVDS,AXLEADX,INFO1MOVAH,09HINT21HMOVCX,0AHLEABX,STRINPUT:MOVAH,01HINT21HMOVSI,CXMOV[BX][SI],ALLOOPINPUTMOVAH,09HLEADX,INFO2INT21HMOVAH,09HLEADX,STRINT21HMOVAH,4CHINT21HCODEENDSENDSTART心得及收獲在本次實驗中發(fā)現(xiàn)對自己對DOS中斷功能調用很不熟悉,對各個功能調用入口和出口參數(shù)沒記清楚,導致了很多錯誤。在排除這些錯誤之后發(fā)現(xiàn)調用9號功能輸出要求字符串后還會跟隨很多亂碼,最后經(jīng)過看書才知道9號功能要輸出的字符串后必須以“$”結尾。而且編寫的程序輸入字符時輸入一個就結束了,最后經(jīng)反復改進才可以多次輸入。實驗八存儲器擴展實驗實驗目的片選存儲器擴展方法;了解61C256RAM特性;學習數(shù)據(jù)存儲不同的讀寫方法;學習片外程序存儲器的

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論