四川大學(xué)電氣信息學(xué)院微機(jī)原理實(shí)驗(yàn)報(bào)告_第1頁
四川大學(xué)電氣信息學(xué)院微機(jī)原理實(shí)驗(yàn)報(bào)告_第2頁
四川大學(xué)電氣信息學(xué)院微機(jī)原理實(shí)驗(yàn)報(bào)告_第3頁
四川大學(xué)電氣信息學(xué)院微機(jī)原理實(shí)驗(yàn)報(bào)告_第4頁
四川大學(xué)電氣信息學(xué)院微機(jī)原理實(shí)驗(yàn)報(bào)告_第5頁
已閱讀5頁,還剩11頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上實(shí)驗(yàn)一 匯編語言編程基礎(chǔ)一上機(jī)目的:了解并逐步熟悉匯編語言的編輯方法及特點(diǎn).復(fù)習(xí)8088匯編語言的段結(jié)構(gòu)、常用的指令與偽指令、存儲空間的分配等。掌握匯編語言的編輯、匯編及連接的過程。了解并逐步掌握運(yùn)用DEBUG進(jìn)行調(diào)試匯編語言程序。二實(shí)驗(yàn)內(nèi)容:學(xué)習(xí)匯編語言程序的上機(jī)步驟1. 編輯EDIT.COM 2用匯編程序MASM.Exe對源程序.ASM文件匯編,生成目標(biāo)文件.OBJ 3.連接LINK.EXE 4.運(yùn)行和調(diào)試DEBUG.exe熟悉、使用DEBUG調(diào)試工具運(yùn)用8086匯編語言,編輯多字節(jié)非壓縮型BCD數(shù)除法的簡單程序,文件名取為*.ASM。運(yùn)用MASMEXE文件進(jìn)行匯

2、編,修改程序中的各種語法錯(cuò)誤,直至正確,形成*.OBJ文件。運(yùn)用LINK.EXE文件進(jìn)行連接,形成*.EXE文件。仔細(xì)閱讀和體會DEBUG調(diào)試方法,掌握各種命令的使用方法。運(yùn)用DEBUG。EXE文件進(jìn)行調(diào)試,使用單步執(zhí)行命令T兩次,觀察寄存器中內(nèi)容的變化,使用察看存儲器數(shù)據(jù)段命令D,觀察存儲器數(shù)據(jù)段內(nèi)數(shù)值。再使用連續(xù)執(zhí)行命令G,執(zhí)行程序,檢查結(jié)果是否正確,若不正確可使用DEBUG的設(shè)置斷點(diǎn),單步執(zhí)行等功能發(fā)現(xiàn)錯(cuò)誤所在并加以改正。3 正確的程序清單data segmenta db 9,6,8,7,5 b db 5c db 5 dup (0) ;5之后有空格n equ 5 data endscod

3、e segment assume cs:code,ds:data,es:data ;是逗號不是分號 最后不應(yīng)有標(biāo)點(diǎn)start: mov ax,data ;start后面應(yīng)該有冒號 mov ds,ax mov es,ax cld lea si,a lea di,c ;lea不是leb mov cx,n mov ah,0lp1: lodsb aad div b stosb loop lp1 mov cx,n lea di,c lp2: mov dl,di add dl,30h ;加30對應(yīng)正確的ASCII碼 mov ah,2 int 21h inc di ;地址應(yīng)該遞增而不是遞減 loop lp2

4、 mov ah,4ch int 21h code ends ;沒有冒號end start程序框圖如下實(shí)驗(yàn)結(jié)果如下 實(shí)驗(yàn)2.1 簡單程序設(shè)計(jì) 一實(shí)驗(yàn)?zāi)康睦斫飧鞣N指令的功能。進(jìn)一步學(xué)習(xí)程序的調(diào)試。2 實(shí)驗(yàn)內(nèi)容練習(xí)1. 實(shí)驗(yàn)題目:編程計(jì)算下列表達(dá)式:A=90,B=-70,C=5,Y均為有符號數(shù),計(jì)算Y=2×(A+B)+(A×C)÷5原程序DATA SEGMENTA DB 90D,-70D,90D,5DB DB 2C DB 5D DB 10DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATASTART:MOV AX,DATA MOV D

5、S,AX MOV SI,OFFSET A MOV BL,SI ;90D進(jìn)BL INC SI ADD BL,SI ;-70D加入BL XOR AX,AX ;AX清零 MOV AL,BL ;結(jié)果存入AL MUL B ;AL乘2 MOV BL,AL ;結(jié)果存到BL INC SI MOV AL,SI INC SI MUL BYTE PTRSI ;90D乘5D DIV C ;AL除以5 ADD BL,AL ;兩個(gè)結(jié)果相加,結(jié)果存BL MOV AL,BL ;轉(zhuǎn)移到AL DIV D ;除以10 MOV CL,AH ;余數(shù)存CL DIV D ;再除以10 MOV DL,AL ;商轉(zhuǎn)移到DL準(zhǔn)備輸出到屏幕 AD

6、D DL,30H ;調(diào)整ACSII碼 MOV BL,AH ;余數(shù)存到BL MOV AH,2 ;輸出百位 INT 21H MOV DL,BL ADD DL,30H MOV AH,2 ;輸出十位 INT 21H MOV DL,CL ADD DL,30H MOV AH,2 ;輸出個(gè)位 INT 21HCODE ENDSEND START輸出計(jì)算結(jié)果130練習(xí)3.編制程序,從鍵盤輸入最多5個(gè)數(shù),求他們的和,存入SUM。data segmenta db 5 dup (?)b db 10data ends code segmentassume cs:code,ds:datastart: mov ax,dat

7、a mov ds,ax mov cx,5 lea si,a xor dl,dl lop1: xor ax,ax mov ah,01 ;從鍵盤輸入數(shù)字 int 21h add dl,al sub dl,30h ;ASCII碼轉(zhuǎn)換為實(shí)際數(shù)值 loop lop1 ;循環(huán)5次輸入五個(gè)一位數(shù) add dl,30h ;轉(zhuǎn)換為ASCII碼準(zhǔn)備輸出 cmp dl,3Ah ;比較和是否大于9 jae l1 ;大于進(jìn)入l1 jmp l2 ;不大于進(jìn)入l2l1: mov al,dl xor ah,ah sub al,30h div byte ptr b ;與練習(xí)一同理,除以10,商是十位,余數(shù)是個(gè)位 mov dl,

8、al add dl,30h mov bl,ah mov ah,2 int 21h mov dl,bl add dl,30hl2: mov ah,2 ;直接向屏幕輸出結(jié)果 int 21hcode endsend start 輸入11111輸出連加計(jì)算結(jié)果5輸入23456輸出連加計(jì)算結(jié)果20實(shí)驗(yàn)2.2 匯編語言程序設(shè)計(jì) - 循環(huán)結(jié)構(gòu)程序一實(shí)驗(yàn)內(nèi)容練習(xí)1用“冒泡“法對一組數(shù)300,250,280,240,260,按從小到大的順序排列。提示:用冒泡的方法對一組數(shù)據(jù)元素排序,它的基本方法是:將相鄰的兩個(gè)元素通過比較進(jìn)行排序,通過多次,多遍的鄰元素排序,實(shí)現(xiàn)整個(gè)一組數(shù)的排序。對于5(N)個(gè)元素,整個(gè)排序通

9、過4遍(=N-1)鄰元素排序完成。每一遍的排序由若干次鄰元素的排序組成。4遍排序中,鄰元素的排序依次為4,3,2,1遍。完成第一遍排序后,最大數(shù)沉底,已經(jīng)到達(dá)它應(yīng)占據(jù)的位置,不需要參加下一遍的排序。外循環(huán)的次數(shù)為CX=4次(N-1),內(nèi)循環(huán)的次數(shù)為4,3,2,1(DEC CX)排序遍數(shù)本遍排序前第一次排序后第二次排序后第三次排序后第四次排序后1300,250,280,240,260250,300,280,240,260250,280,300,240,260250,280,240,300,260250,280,240,260,3002250,280,240,260,300250,280,240,

10、260,300250,240,280,260,300250,240,260,280,3003250,240,260,280,300250,240,260,280,300240,250,260,280,3004240,250,260,280,300240,250,260,280,300二程序清單DATA SEGMENT A DW 300,250,280,240,260B DW 5 DUP (?)D DB 10DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATA MOV DS,AX XOR AX,AX XOR BX,BX MOV

11、CX,5 LEA SI,ALOP33: MOV AX,SI ;LOP33內(nèi)的循環(huán)是將A內(nèi)的5個(gè)數(shù)輸出到屏幕上,與實(shí)驗(yàn)2.1練 習(xí)一中程序同理 DIV D ;將三個(gè)數(shù)通過除法取出轉(zhuǎn)換為ASCII碼然后輸出 MOV BH,AH DIV D MOV DL,AL ADD DL,30H MOV BL,AH MOV AH,2 INT 21H MOV DL,BL ADD DL,30H MOV AH,2 INT 21H MOV DL,BH ADD DL,30H MOV AH,2 INT 21H MOV DL,20H MOV AH,2 INT 21H INC SI INC SI LOOP LOP33 MOV D

12、X,5 ;外循環(huán)5次 MOV CX,5LOPP: LEA SI,A DEC DX MOV CX,DX LOP: MOV AX,SI ;取第一個(gè)數(shù) MOV BX,SI+2 ;取第二個(gè)數(shù) CMP AX,BX JAE LOP1 ;第一個(gè)數(shù)大于第二個(gè)數(shù)則進(jìn)入LOP1 JMP LOP2 ;不大于則挑過LOP1進(jìn)入LOP2 LOP1: MOV SI+2,AX ;LOP1用于兩數(shù)互換位置 MOV SI,BX LOP2: INC SI INC SI CMP DX,0 ;如果外循環(huán)了5次則進(jìn)入LOP4 JZ LOP4 LOOP LOP ;內(nèi)循環(huán) LOOP LOPP ;外循環(huán)LOP4: MOV CX,5 LEA

13、SI,ALOP3: MOV AX,SI ;LOP3中的循環(huán)是將排序過后的五個(gè)三位數(shù)輸出,與實(shí)驗(yàn)2.1練 習(xí)一中程序同理 DIV D MOV BH,AH DIV D MOV DL,AL ADD DL,30H MOV BL,AH MOV AH,2 INT 21H MOV DL,BL ADD DL,30H MOV AH,2 INT 21H MOV DL,BH ADD DL,30H MOV AH,2 INT 21H MOV DL,20H MOV AH,2 INT 21H INC SI INC SI LOOP LOP3 MOV AH,4CH INT 21HCODE ENDS END START 第三次實(shí)

14、驗(yàn) 8253定時(shí)器/計(jì)數(shù)器與接口實(shí)驗(yàn) -樂曲程序一實(shí)驗(yàn)?zāi)康模?學(xué)習(xí)8253計(jì)數(shù)器2輸出方波信號用以驅(qū)動揚(yáng)聲器發(fā)聲的原理,通過程序設(shè)置計(jì)數(shù)器2的輸出波形的頻率和延續(xù)時(shí)間,控制揚(yáng)聲器的音調(diào)和發(fā)生長短。二.實(shí)驗(yàn)內(nèi)容:1.設(shè)計(jì)程序讓微機(jī)演奏一段兩只老虎的樂曲。2.思考如何讓PC機(jī)演奏一遍,兩遍以及數(shù)遍這段兩只老虎的樂曲,并修改程序?qū)崿F(xiàn)。3 程序清單stack segment stackdw 100 dup(?)stack endsdata segmentmusic dw 2 dup(262,294,330,262)dw 2 dup(330,349,392)dw 2 dup(392,440,392,34

15、9,330,262)dw 2 dup(294,196,262),0time dw 10 dup(250*50),500*50,250*50,250*50,500*50dw 2 dup(120*50,120*50,120*50,120*50,250*50,250*50)dw 2 dup(250*50,250*50,500*50)nequ 32data endscode segmentassume cs:code;ds:datastart:mov ax,datamov ds,axmov al,0b6h ;控制字寫入控制器out 43h,allea di,music ;分別取music和time地址

16、送入DI,SIlea si,timemov cx,n ;循環(huán)32次將樂曲的32個(gè)音符完成lp:mov bx,di ;讀出頻率add di,2 ;指向下一個(gè)頻率mov dx,12h ;將脈沖頻率存入AX,DXmov ax,34dchdiv bx ;算出計(jì)數(shù)值out 42h,al mov al,ah out 42h,al ;計(jì)數(shù)值給到計(jì)數(shù)器2in al,61h or al,3out 61h,al ;開揚(yáng)聲器 mov dx,si ;將時(shí)長存入DXadd si,2 mov bx,cxdel1: mov cx,064h ;延時(shí)del2: loop del2 dec dx ;循環(huán)中繼續(xù)延時(shí) jnz del

17、1mov cx,bxin al,61hand al,0fchout 61h,al ;關(guān)揚(yáng)聲器loop lp ;回到lp準(zhǔn)備發(fā)出下一個(gè)音符mov ah,4chint 21hcode endsend start4 實(shí)驗(yàn)結(jié)果揚(yáng)聲器發(fā)出兩只老虎的音樂反匯編和單步運(yùn)行 實(shí)驗(yàn)1心得體會將源程序打入記事本中,存為asm文件,用masm匯編以后報(bào)5個(gè)錯(cuò)。通過行數(shù)檢查發(fā)現(xiàn)一些格式錯(cuò)誤和指令錯(cuò)誤,這些錯(cuò)誤都不難發(fā)現(xiàn)。錯(cuò)誤都在正確程序中標(biāo)注出。改正過之后程序正常運(yùn)行,但最終結(jié)果錯(cuò)誤,說明還有邏輯錯(cuò)誤。在了解了程序流程圖,掌握了解決問題的邏輯順序后開始讀程序,并用debug里面的T命令一步一步看程序執(zhí)行的結(jié)果,發(fā)現(xiàn)l

18、p2循環(huán)中dl在第一次循環(huán)中輸出正確后之后均是錯(cuò)誤輸出。注意到之前有l(wèi)ea di,c語句將DI地址恢復(fù),于是發(fā)現(xiàn)DEC DI錯(cuò)誤,應(yīng)該是遞增而不是遞減。這樣修改之后程序仍未得到正確的結(jié)果。發(fā)現(xiàn)結(jié)果對應(yīng)ASCII碼輸出,于是將DL加30H,最終輸出正確結(jié)果。實(shí)驗(yàn)2.1心得體會在練習(xí)1中,通過匯編發(fā)現(xiàn)MUL不能用立即數(shù)。練習(xí)1中的計(jì)算編程比較簡單,只是要求輸出在屏幕上的話,就需要將十六進(jìn)制的結(jié)果轉(zhuǎn)化為十進(jìn)制然后一位一位輸出出來。本程序使用將十六進(jìn)制結(jié)果除以十得到的商和余數(shù)轉(zhuǎn)化為ASCII碼后輸出。三位數(shù)使用了兩次除法,將兩次除法的商和最后的余數(shù)輸出,得到正確結(jié)果。練習(xí)3中我將基礎(chǔ)的五個(gè)一位數(shù)加法,

19、和的上線為9的程序改進(jìn)到能夠正確輸出兩位數(shù)和。一開始和的上線為9是因?yàn)殡m然程序能夠計(jì)算出正確結(jié)果,但輸出時(shí)轉(zhuǎn)變?yōu)锳SCII碼,只能正確輸出十進(jìn)制一位,超過一位的會輸出其他字符。經(jīng)過改進(jìn)的程序能夠輸出一位數(shù)或兩位數(shù)的和。這是因?yàn)槌绦蛑惺紫仁褂昧薈MP判斷是否和是小于10的數(shù),是則跳到程序最后進(jìn)行輸出,不是則運(yùn)用除十輸出商和余數(shù)的方法在屏幕上輸出正確的結(jié)果。匯編語言比高級語言實(shí)現(xiàn)相同功能編寫的代碼要長得多。根據(jù)程序員的習(xí)慣,實(shí)現(xiàn)同一個(gè)目標(biāo)能用不同的語句,比如取地址可以用LEA也可以用OFFSET。剛開始編程時(shí)主要是模仿,漸漸的就有了自己喜好語句和邏輯。實(shí)驗(yàn)2.2心得體會編程時(shí)首先實(shí)現(xiàn)了冒泡和輸出結(jié)果,輸出結(jié)果參考了實(shí)驗(yàn)2.1練習(xí)一中的輸出方式,并稍加修改使得5個(gè)數(shù)之間有空格隔開。冒泡法在學(xué)習(xí)C語言時(shí)了解過,所以邏輯清晰,編程時(shí)知道在何時(shí)循環(huán)。但邏輯正確不能保證程序能夠正確運(yùn)行,在運(yùn)行程序時(shí)發(fā)現(xiàn)并不能正確輸出,而是卡住了(可能是進(jìn)入了死

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論