微機(jī)原理匯編程序設(shè)計(共17頁)_第1頁
微機(jī)原理匯編程序設(shè)計(共17頁)_第2頁
微機(jī)原理匯編程序設(shè)計(共17頁)_第3頁
微機(jī)原理匯編程序設(shè)計(共17頁)_第4頁
微機(jī)原理匯編程序設(shè)計(共17頁)_第5頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、微機(jī)原理課程設(shè)計設(shè)計一:從鍵盤輸入十六進(jìn)制數(shù)并顯示出二進(jìn)制值設(shè)計二:字符串匹配設(shè)計設(shè)計三:字符和數(shù)據(jù)顯示的設(shè)計設(shè)計四:鍵盤輸入小寫字母轉(zhuǎn)換成大寫字母設(shè)計五:計算N!的設(shè)計 2011-7-6設(shè)計一:從鍵盤輸入十六進(jìn)制數(shù)并顯示出二進(jìn)制值實驗?zāi)康模赫莆战邮真I盤數(shù)據(jù)的方法,并了解數(shù)據(jù)顯示時須轉(zhuǎn)換為ASCII碼的原理。實驗內(nèi)容:將鍵盤接收到的4位十六進(jìn)制數(shù)據(jù)轉(zhuǎn)換為等值的二進(jìn)制數(shù),再顯示在屏幕終端上。流程圖:程序源代碼:CRLF MACRO MOV AH,02H MOV DL,0DH INT 21H MOV AH,02H MOV DL,0AH INT 21HENDMDATA SEGMENTMARK DB

2、?MESS DB 'INPUT THE NUMBER! Press Enter to Transition,Press Space to Exit!',0DH,0AH,'Input:$'ERROR DB 0DH,0AH, 'Input Error!',0DH,0AH,'$'DATA ENDSSTACK SEGMENTSTA DW 32 DUP(?)TOP DW ?STACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACKSTART: MOV AX,DATA MOV D

3、S,AX MOV ES,AX MOV SP,TOPHEAD: CRLF MOV MARK,0 MOV AH,09H LEA DX,MESS INT 21H ;顯示提示輸入的信息 CALL GETNUM ;接收鍵入數(shù)值送DX CMP MARK,01H JE HEAD MOV CX,0010H ;16位 MOV BX,DXTTT: ROL BX,1 ;循環(huán)左移1位 MOV DL,BL AND DL,01H ;屏蔽掉高7位 ADD DL,30H MOV AH,02H INT 21H ;顯示二進(jìn)制位對應(yīng)的ASCII字符 LOOP TTT JMP HEADFINI: MOV AH,4CH INT 21H

4、 ;返回DOSGETNUM PROC NEAR ;子程序,接收鍵入數(shù)值送DX PUSH CX XOR DX,DXGGG: MOV AH,01H INT 21H CMP AL,0DH ;輸入為回車,則進(jìn)行轉(zhuǎn)換 JE PPP CMP AL,20H ;輸入為空格,則退回DOS JE FINI CMP AL,30H JB KKK SUB AL,30H CMP AL,0AH JB GETS CMP AL,11H JB KKK SUB AL,07H CMP AL,0FH JBE GETS CMP AL,2AH JB KKK CMP AL,2FH JA KKK SUB AL,20HGETS: MOV CL,

5、04 SHL DX,CL XOR AH,AH ADD DX,AX JMP GGGKKK: MOV AH,09H MOV DX,OFFSET ERROR INT 21H MOV MARK,01HPPP: PUSH DX CRLF POP DX POP CX RETGETNUM ENDPCODE ENDSEND START運(yùn)行結(jié)果設(shè)計二:字符串匹配設(shè)計實驗內(nèi)容:編寫程序?qū)崿F(xiàn)兩個字符串比較。如相同,則顯示“MATCH”,否則顯示“NO MATCH”。源程序:CRLF MACRO ;顯示回車 MOV DL,0DH MOV AH,02H INT 21H MOV AH,02H MOV DL,0AH INT

6、 21HENDMDATA SEGMENTMESS1 DB 'MATCH',0DH,0AH,'$'MESS2 DB 'NO MATCH',0DH,0AH,'$'MESS3 DB 'INPUT STRING1!',0DH,0AH,'$'MESS4 DB 'INPUT STRING2!',0DH,0AH,'$'MAXLEN1 DB 100STRING1 DB 100 DUP(?)MAXLEN2 DB 100STRING2 DB 100 DUP(?)DATA ENDSCODE

7、 SEGMENTASSUME CS:CODE,DS:DATA,ES:DATASTART: MOV AX,DATA MOV DS,AX MOV ES,AX MOV AH,09H MOV DX,OFFSET MESS3 INT 21H ;顯示輸入提示信息1 MOV AL,MAXLEN1 MOV BX,OFFSET STRING1 MOV BX,AL ;最大字符緩沖 MOV AH,0AH MOV DX,OFFSET STRING1 INT 21H ;接收鍵入的字符串1 CRLF MOV AH,09H MOV DX,OFFSET MESS4 INT 21H ;顯示輸入提示信息2 MOV AL,MAXL

8、EN2 MOV BX,OFFSET STRING2 MOV BX,AL ;最大字符緩沖設(shè)置 MOV AH,0AH MOV DX,OFFSET STRING2 INT 21H ;接收鍵入的字符串2 CRLF CLD LEA SI,STRING1 ;字符串1的地址送給SI MOV CL,SI+1 ;字符串1的字符數(shù)送給CX MOV CH,0KKK: LEA DI,STRING2 ;字符串2的地址送給DI MOV DL,DI+1 ;字符串2的字符數(shù)送給DX MOV DH,0 ZJ2: MOV AL,SI+2 ;字符串1的第一個字符在字符串2中匹配 CMP DI+2,AL JE ZJ3 ;匹配成功則跳

9、轉(zhuǎn) ZJ1: INC DI ;指向字符串2下一個字符 DEC DX JZ GGG ;字符串2完,不匹配 JMP ZJ2 ;字符串2沒完,重新匹配 ZJ3: DEC CX JZ MMM ;字符串1完,匹配 DEC DX JZ GGG ;字符串2完,不匹配 INC SI ;指向串1下一個字符 INC DI ;指向串2下一個字符 MOV AL,SI+2 CMP DI+2,AL JE ZJ3 ;匹配,跳轉(zhuǎn) DEC DX JZ GGG ;字符串2完,不匹配 LEA SI,STRING1 ;重新從串1的第一個字符匹配 MOV CL,SI+1 MOV CH,0 INC DI JMP ZJ2MMM: MOV

10、AH,09H ;輸出匹配信息 MOV DX,OFFSET MESS1 INT 21H JMP PPPGGG: MOV AH,09H ;輸出不匹配信息 MOV DX,OFFSET MESS2 INT 21H PPP: MOV AH,4CH ;程序終止 INT 21HCODE ENDS END START 設(shè)計三:字符和數(shù)據(jù)顯示的設(shè)計實驗內(nèi)容:編寫程序,先顯示信息“INPUT STRING IS”,在接受字符。如為0-9,則計數(shù)器加1,并顯示數(shù)據(jù),非數(shù)字,則直接顯示,但不計數(shù)。源程序:CRLF MACRO MOV AH,02H MOV DL,0DH INT 21H MOV AH,02H MOV D

11、L,0AH INT 21HENDM DATA SEGMENTMESS1 DB 'INPUT STRING IS $'MESS2 DB 'Char = $'MESS3 DB 'Not number = $'MESS4 DB 'Num= $'TOTAL DW ?DATA ENDSSTACK SEGMENTSTA DW 32 DUP (?)TOP DW ?STACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACKSTART: MOV AX,DATA MOV DS,AX MO

12、V ES,AX MOV SP,TOP ;初始化 MOV BX,0000H ;計數(shù)值清0 MOV AH,09H MOV DX,OFFSET MESS1 INT 21H CRLFXXX: MOV AH,01H INT 21H ;接收鍵入字符 CMP AL,20H JZ UUU ;是空格鍵則轉(zhuǎn)UUU CMP AL,0DH JNZ III CRLF ;是回車鍵則轉(zhuǎn)UUU JMP UUUIII: CMP AL,30H JB YYY CMP AL,39H JBE VVV ;0-9轉(zhuǎn)VVVYYY: INC BX ;計數(shù)值加1VVV: INC TOTAL JMP XXXUUU: CRLF MOV AH,09H

13、 LEA DX,MESS2 ;顯示字符總數(shù) INT 21H MOV AX,TOTAL CALL DISP MOV AH,02H MOV DL,'H' INT 21H CRLF ;回車換行MOV AH,09H MOV DX,OFFSET MESS3INT 21H ;顯示非數(shù)字字符總數(shù)MOV AX,BXCALL DISP MOV AH,02HMOV DL,'H'INT 21H ;十六進(jìn)制數(shù)標(biāo)志CRLFMOV AH,09HLEA DX,MESS4 ;顯示數(shù)字字符總數(shù)INT 21HMOV AX,BXSUB TOTAL,AXMOV AX,TOTALCALL DISPMOV

14、 AH,02HMOV DL,'H'INT 21HMOV AH,4CHINT 21HDISPP PROC NEAR ;顯示子程序,顯示AL中的數(shù)按十六進(jìn)制數(shù)方式MOV BL,AL ;AL中數(shù)送BLKKK: MOV DL,BLMOV CL,04ROL DL,CLAND DL,0FHCALL DISPL ;顯示字節(jié)高位MOV DL,BLAND DL,0FHCALL DISPL ;顯示字節(jié)低位RETDISPP ENDPDISPL PROC NEARADD DL,30H ;由數(shù)值轉(zhuǎn)為參應(yīng)字符的ASCII碼CMP DL,3AH JB DDD ;是0-9轉(zhuǎn)DDD ADD DL,07H ;是A

15、-FDDD: MOV AH,02H INT 21H ;顯示DL中字符 RET ;返回DISPL ENDP ;顯示子程序,顯示AX中的數(shù)按十六進(jìn)制數(shù)方式DISP PROC NEAR PUSH BX PUSH CX PUSH DX PUSH AX ;入棧保存 MOV AL,AH CALL DISPP ;顯示高字節(jié) POP AX CALL DISPP POP DX POP CX POP BX RET ;出棧DISP ENDPCODE ENDS END START設(shè)計四:鍵盤輸入小寫字母轉(zhuǎn)換成大寫字母實驗內(nèi)容: 編寫程序,接收鍵盤字符,并將其中的小寫字母變?yōu)榇髮懽帜?,然后顯示在屏幕上。源程序:DATA

16、 SEGMENT p1 db 100 P2 db 0array db 100 dup(?)DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATASTART: MOV AX,DATA MOV DS,AX mov dx,offset p1 MOV AH,0AH INT 21H xor bx,bx mov BL,p2 mov arraybx,'$' mov di,0ffffh next: inc di cmp arraydi,'$' je exit cmp arraydi,61h jl next cmp arraydi,7ah jg

17、next sub arraydi,20h jmp next exit: mov p1, 0dh mov p2, 0ah MOV AH,09H INT 21H MOV AH,4CH INT 21HCODE ENDS END START設(shè)計五:計算N!的設(shè)計實驗內(nèi)容:編寫程序,計算N!的程序。數(shù)值N由鍵盤輸入,結(jié)果顯示在屏幕上。N的范圍為065535,即剛好能被16的寄存器容納。源程序:CRLF MACRO;回車,換行 MOV AH, 02H MOV DL, 0DH INT 21H MOV AH, 02H MOV DL, 0AH INT 21HENDMDATA SEGMENTMESS1 DB &#

18、39;INPUT THE NUMBER ACCORDING TO HEXNUM!',0DH,0AH,'$'MESS2 DB 'THE RESULT IS: $'ERROR DB 'INPUT ERROR! INPUT ONCE MORE!',0DH ,0AH,'$'LEN DW 1CY DW ?BUF DW 256 DUP(0)DATA ENDSSTACKS SEGMENT STACK 'STACK' DW 32 DUP(?)STACKSENDSCODE SEGMENTASSUME CS: CODE, DS

19、:DATA, ES:DATA, SS:STACKSSTART:MOV AX, DATA MOV DS,AX MOV ES, AX MOV AH, 09H MOV DX,OFFSET MESS1 INT 21H ;顯示輸入提示信息 CALL GETNUM ;讀取鍵入的N值 MOV BP, DX ;N值送BP CMP BP, 0 JZ EEE CMP BP, 1 JZ EEE ;N=0或N=1則轉(zhuǎn)EEE MOV SI, OFFSET BUF ;緩沖區(qū)首址 MOV SI,DX ;緩沖區(qū)初始化為值NXXX: DEC BP ;N值減1 CMP BP,0001H JZ LLL ;若為1則轉(zhuǎn)LLL XOR

20、BX,BX ;偏移指針清0 MOV WORD PTR CY,0 ;進(jìn)位單元清0 MOV CX,LEN ;當(dāng)前結(jié)果長度送CXTTT: MOV AX, SI+BX MUL BP ;相乘 ADD AX,CY ;加低位進(jìn)位 JNC JJJ ;結(jié)果無進(jìn)位轉(zhuǎn)JJJ INC DX ;有進(jìn)位將高位單元加1JJJ: MOV SI+BX,AX ;結(jié)果送緩沖區(qū)中 MOV CY,DX ;高位單元送進(jìn)位單元 INC BX INC BX ;一個字長度 LOOP TTT ;循環(huán) CMP DX, 0000H JZ BBB ;最后1次的進(jìn)位為0則轉(zhuǎn)BBB INC WORD PTR LEN ;長度加1 MOV SI+BX,DX

21、;進(jìn)位送緩沖區(qū)中BBB: JMP XXXEEE: MOV SI,OFFSET BUF MOV WORD PTR SI,1 ;結(jié)果為1LLL: MOV AH, 09H MOV DX,OFFSET MESS2 INT 21H ;顯示表頭 MOV CX,LEN MOV BX,CX ;長度 DEC BX SHL BX,1 ;1個字為兩個字節(jié)CCC: MOV AX, SI+BX CALL DISP DEC BX DEC BX ;顯示結(jié)果 LOOP CCC MOV AX,4C00H ;結(jié)束 INT 21HDISP1 PROC NEAR ;顯示字符(AL) MOV BL, AL MOV DL, BL MOV

22、 CL, 04 ROL DL, CL AND DL, 0FH CALL DISPL ;顯示高位 MOV DL, BL AND DL, 0FH CALL DISPL ;顯示低位 RETDISP1 ENDPDISPL PROC NEAR ;顯示一位(DL0XH) ADD DL, 30H CMP DL, 3AH JB DDD ADD DL, 07HDDD: MOV AH, 02H INT 21H RETDISPL ENDPDISP PROC NEAR ;顯示4位數(shù)(HEX) PUSH BX PUSH CX PUSH DX PUSH AX MOV AL, AH CALL DISP1 POP AX CA

23、LL DISP1 POP DX POP CX POP BX RETDISP ENDPGETNUMPROC NEAR ;字符匹配程序 PUSH CXREGET:XOR DX, DXGGG: MOV AH, 01H INT 21H CMP AL, 0DH JZ PPP CMP AL, 20H JZ PPP SUB AL, 30H JB KKK CMP AL, 0AH JB GETS CMP AL,11H JB KKK SUB AL, 07H CMP AL, 0FH JBE GETS CMP AL, 2AH JB KKK CMP AL, 2FH JA KKK SUB AL, 20HGETS: MOV

24、 CL, 04H SHL DX,CL XOR AH, AH ADD DX ,AX JMP GGGKKK: CRLF MOV AH, 09H MOV DX,OFFSET ERROR INT 21H JMP REGETPPP: PUSH DX CRLF POP DX POP CX RETGETNUMENDP CODE ENDS END START*心得體會*經(jīng)過了一周的匯編課程設(shè)計,我在其中經(jīng)歷了很大的困難,可是也感受到了巨大的幸福。當(dāng)我面對一個難題,從一籌莫展到逐漸清晰明朗,到最后成功完成任務(wù)。只要親身經(jīng)歷過,才能感受其中的淚水和快樂。更重要的是我們對匯編有了更進(jìn)一步的理解。有了實際應(yīng)用的體會,知識更加的融會貫通了。不管是從知識上還是從思維方式上,我們都得到了很大的

溫馨提示

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

評論

0/150

提交評論