![代碼轉(zhuǎn)換程序設(shè)計_第1頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/13/cdae5bc4-0790-4399-b259-bea24703d515/cdae5bc4-0790-4399-b259-bea24703d5151.gif)
![代碼轉(zhuǎn)換程序設(shè)計_第2頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/13/cdae5bc4-0790-4399-b259-bea24703d515/cdae5bc4-0790-4399-b259-bea24703d5152.gif)
![代碼轉(zhuǎn)換程序設(shè)計_第3頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/13/cdae5bc4-0790-4399-b259-bea24703d515/cdae5bc4-0790-4399-b259-bea24703d5153.gif)
![代碼轉(zhuǎn)換程序設(shè)計_第4頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/13/cdae5bc4-0790-4399-b259-bea24703d515/cdae5bc4-0790-4399-b259-bea24703d5154.gif)
![代碼轉(zhuǎn)換程序設(shè)計_第5頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/13/cdae5bc4-0790-4399-b259-bea24703d515/cdae5bc4-0790-4399-b259-bea24703d5155.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、學(xué) 號 課 程 設(shè) 計題 目代碼轉(zhuǎn)換程序設(shè)計學(xué) 院自動化學(xué)院專 業(yè)電氣工程及其自動化班 級姓 名指導(dǎo)教師2014年1月9日課程設(shè)計任務(wù)書學(xué)生姓名: 賀安東 專業(yè)班級: 電氣1107班 指導(dǎo)教師: 陳靜 教授 工作單位: 自動化學(xué)院 題 目: 代碼轉(zhuǎn)換程序設(shè)計 要求完成的主要任務(wù): (包括課程設(shè)計工作量及其技術(shù)要求,以及說明書撰寫等具體要求)1用匯編語言編寫一個字母和數(shù)制之間的轉(zhuǎn)換程序,設(shè)計出友好的交互界面;2實(shí)現(xiàn)小寫字母和大寫字母之間的相互轉(zhuǎn)換;附加功能:將字符轉(zhuǎn)換成其相應(yīng)的ASCII碼;3撰寫課程設(shè)計說明書。內(nèi)容包括:摘要、目錄、正文、參考文獻(xiàn)、附錄(程序清單)。正文部分包括:設(shè)計任務(wù)及要求
2、、方案比較及論證、軟件設(shè)計說明(軟件思想,流程,源程序設(shè)計及說明等)、程序調(diào)試說明和結(jié)果分析、課程設(shè)計收獲及心得體會。時間安排:12月26日- 12月28 日 查閱資料及方案設(shè)計12月29日- 1 月 2 日 編程1 月 3日- 1 月 7 日 調(diào)試程序1 月 8日- 1 月 9 日 撰寫課程設(shè)計報告指導(dǎo)教師簽名: 年 月 日系主任(或責(zé)任教師)簽名: 年 月 日武漢理工大學(xué)微機(jī)原理與接口技術(shù)課程設(shè)計報告書目 錄摘 要11 設(shè)計任務(wù)及分析21.1 設(shè)計任務(wù)要求21.2 設(shè)計系統(tǒng)分析21.3方案比較及認(rèn)證22 方案設(shè)計32.1 方案原理32.2指令功能32.3 主程序流程圖53 源程序73.1主
3、程序設(shè)計73.2子程序大小寫字母轉(zhuǎn)換及流程圖123.3子程序ASCII碼轉(zhuǎn)換CBA及流程圖144 程序運(yùn)行及調(diào)試164.1大小寫轉(zhuǎn)換174.2 ASCII碼轉(zhuǎn)換174.3 輸入非字符184.4調(diào)試中出現(xiàn)的錯誤184.5結(jié)果分析205 心得體會21參考文獻(xiàn)22本科生課程設(shè)計成績評定表摘 要匯編語言是直接面向處理器(Processor)的程序設(shè)計語言。處理器是在指令的控制下工作的,處理器可以識別的每一條指令稱為機(jī)器指令。每一種處理器都有自己可以識別的一整套指令,稱為指令集。處理器執(zhí)行指令時,根據(jù)不同的指令采取不同的動作,完成不同的功能,既可以改變自己內(nèi)部的工作狀態(tài),也能控制其它外圍電路的工作狀態(tài)。
4、匯編語言的主要特點(diǎn)是可以使用助記符來表示機(jī)器指令的操作碼和操作數(shù),可以用標(biāo)號和符號來代替地址、常量和變量。這次課程設(shè)計的任務(wù)是用匯編語言進(jìn)行一個數(shù)制轉(zhuǎn)換,從鍵盤輸入一串字符(非字符則不接受),通過屏幕提示菜單選擇轉(zhuǎn)換成ASCII碼,或者進(jìn)行大小寫轉(zhuǎn)換(原來是大寫轉(zhuǎn)換成小寫,小寫則轉(zhuǎn)換為大寫)并顯示。先輸入要轉(zhuǎn)換的數(shù)據(jù),再對數(shù)據(jù)進(jìn)行檢驗(yàn)判斷其合法性,對不合法的數(shù)據(jù)進(jìn)行警報并重新輸入數(shù)據(jù),對合法的數(shù)據(jù)按照要求進(jìn)行大小寫轉(zhuǎn)換或者轉(zhuǎn)換成ASCII,碼,最后顯示轉(zhuǎn)換后的字符串。關(guān)鍵詞:DOS功能調(diào)用 大小寫轉(zhuǎn)換 ASCII碼1 設(shè)計任務(wù)及分析1.1 設(shè)計任務(wù)要求(1)用匯編語言編寫一個字母和數(shù)制之間的轉(zhuǎn)
5、換程序,設(shè)計出友好的交互界面;(2)實(shí)現(xiàn)小寫字母和大寫字母之間的相互轉(zhuǎn)換;附加功能:將字符轉(zhuǎn)換成其相應(yīng)的ASCII碼;(3)撰寫課程設(shè)計說明書。內(nèi)容包括:摘要、目錄、正文、參考文獻(xiàn)、附錄(程序清單)。正文部分包括:設(shè)計任務(wù)及要求、方案比較及論證、軟件設(shè)計說明(軟件思想,流程,源程序設(shè)計及說明等)、程序調(diào)試說明和結(jié)果分析、課程設(shè)計收獲及心得體會。1.2 設(shè)計系統(tǒng)分析DOS是一個磁盤操作系統(tǒng),也稱為IBM-DOS或者M(jìn)S-DOS。DOS不僅為用戶提供了許多使用命令,而且還有用戶可以直接調(diào)用的上百個子程序。對這些子程序的調(diào)用,稱為系統(tǒng)功能調(diào)用。這些子程序主要完成一系列的管理功能。在使用時,用戶不需要
6、了解各種I/O接口硬件的詳細(xì)情況,就能完成對I/O接口的控制和管理。為了使用方便,將所有子程序從1號開始順序編號,這些編號稱為DOS功能調(diào)用號。所以在進(jìn)行設(shè)計之前,先要弄清楚DOS 功能調(diào)用。1.3 方案比較及認(rèn)證方案一:通過運(yùn)用匯編語言提供的基本指令,加上運(yùn)用適當(dāng)?shù)难h(huán)方式,按照要求設(shè)計指令來達(dá)到滿足要求的目的。這種方式比較容易理解和編程,是考慮到程序可能有許多重復(fù)的地方,運(yùn)用這種直接的方法就可能造成代碼很多的結(jié)果。方案二:通過運(yùn)用DOS函數(shù)調(diào)用,運(yùn)用匯編語言提供的各種現(xiàn)成的函數(shù)來滿足要求,也可以自己定義函數(shù)來達(dá)到某種要求,在重復(fù)使用時不用造重新編寫,只需一個調(diào)用,大大簡化了程序,這種方法更
7、加簡潔方便,所以選用這種方法。2 方案設(shè)計2.1 方案原理本次課程設(shè)計的要求是:從鍵盤輸入一串字符,通過屏幕提示菜單選則進(jìn)行大小寫轉(zhuǎn)換或者轉(zhuǎn)換成相應(yīng)的ASCII碼并顯示。設(shè)計的基本思路:首先要先完成字符串的輸入并存在buf1中,然后輸入一個字符通過檢驗(yàn)字符來選擇跳轉(zhuǎn)到相應(yīng)的子程序中去進(jìn)行ASCII碼轉(zhuǎn)換或者進(jìn)行大小寫轉(zhuǎn)換,將轉(zhuǎn)換后的字符串存放到buf2中;轉(zhuǎn)換完成后跳轉(zhuǎn)到輸出部分即可完成程序功能;為了程序能重復(fù)運(yùn)行,在代碼段末尾加一條強(qiáng)制跳轉(zhuǎn)語句跳到開頭部分。2.2 指令功能(1)鍵盤輸入并顯示(1號功能調(diào)用)格式:INT 21H功能:按下任何鍵,將其對應(yīng)字符的ASCII碼送入AL中,并在屏幕
8、上顯示該字符。如果按下的是CtrlBreak組合鍵,則終止程序執(zhí)行。1號功能調(diào)用無須入口參數(shù),出口參數(shù)在AL中(2)鍵盤輸入但不顯示格式:MOV AH, 08HINT 21H功能:同1號功能調(diào)用,但字符不在屏幕上顯示。(3)屏幕顯示一個字符(2號功能調(diào)用)格式:MOV DL, 字符 MOV AH, 02HINT 21H功能:將置入DL寄存器中的字符在屏幕上顯示輸出。(4)打印輸出(5號功能調(diào)用)格式:MOV DL, 字符 MOV AH, 05H INT 21H功能:將置入DL寄存器中的字符送打印機(jī)接口,打印輸出。(5)屏幕顯示 格式:LEA DX, 字符串的偏移地址 MOV AH, 09H I
9、NT 21H 功能:在屏幕上顯示字符串。 在使用9號功能調(diào)用時,應(yīng)當(dāng)注意以下問題。 1)待顯示的字符串必須先放在內(nèi)存一數(shù)據(jù)區(qū)(DS段)中,且以$符號作為結(jié)束標(biāo)志。 2)應(yīng)當(dāng)將字符串首地址的段基址和偏移地址分別存入DS和DX寄存器中。(6)字符串輸入功能調(diào)用(0AH號功能調(diào)用) 格式:LEA DX, 已定義緩沖區(qū)的偏移地址 MOV AH, 0AH INT 21H 功能:從鍵盤接收字符,并存放到內(nèi)存緩沖區(qū)。 在使用0AH號功能調(diào)用時,應(yīng)當(dāng)注意以下問題。 1)執(zhí)行前先定義一個輸入緩沖區(qū),緩沖區(qū)內(nèi)第一個字節(jié)定義為允許最多輸入的字符個數(shù),字符個數(shù)應(yīng)包括回車符0DH在內(nèi),不能為“0”值。第二個字節(jié)保留,在
10、執(zhí) 行程序完畢后存入輸入的實(shí)際字符個數(shù)。從第三個字節(jié)開始存入從鍵盤上接收字符的ASCII碼。若實(shí)際輸入的字符個數(shù)少于定義的 2)應(yīng)當(dāng)將緩沖區(qū)首地址的段基址和偏移地址分別存入DS和DX寄存器中。(7)返回DOS操作系統(tǒng)(4CH號功能調(diào)用) 格式:MOV AH, 4CH INT 21H 功能:終止當(dāng)前程序的運(yùn)行,并把控制權(quán)交給調(diào)用的程序,即返回DOS系統(tǒng),屏幕出現(xiàn)DOS提示符,如“C: >”,等待DOS命令。(8)直接輸入、輸出單字符(6號功能調(diào)用) 格式:MOV DL, 輸入/輸出標(biāo)志 MOV AH, 06H INT 21H 功能:執(zhí)行鍵盤輸入操作或屏幕顯示輸出操作,但不檢查CtrlBre
11、ak組合鍵是否按下。執(zhí)行這兩種操作的選擇由DL寄存器中的內(nèi)容決定。 1)當(dāng)(DL)0FFH時,執(zhí)行鍵盤輸入操作。若標(biāo)志ZF0,AL中放入字符的ASCII碼;若標(biāo)志ZF1,表示無鍵按下。這種調(diào)用用來檢測鍵盤是否有鍵按下,但不等待鍵盤輸入。 2)當(dāng)(DL)0FFH時,表示將DL中內(nèi)容送屏幕顯示輸出。(9)檢查鍵盤的工作狀態(tài)(0BH號功能調(diào)用) 格式:MOV AH, 0BH INT 21H 功能:檢查是否有鍵盤輸入,若有鍵按下,則使AL0FFH,若無鍵按下,則AL00H。對于利用鍵盤操作退出循環(huán)或使程序結(jié)束之類的操作來說,這種調(diào)用是很方便實(shí)用的。2.3 主程序流程圖遠(yuǎn)程轉(zhuǎn)移是段間的轉(zhuǎn)移,目的地址與J
12、MP指令所在地址不在同一段內(nèi)。執(zhí)行該指令時要修改CS和IP的內(nèi)容。間接轉(zhuǎn)移指令的目的地址可以由存儲器或寄存器給出。段內(nèi)間接轉(zhuǎn)移 JMP WORD PTR OPRD ;IP=EA (由OPRD的尋址方式確定)。JMP WORD PTRBX IP=(DS)*16+(BX)JMP WORD PTR BX IP=(BX)段間間接轉(zhuǎn)移 JMP DOWRD PTR OPRD;IP=EA,CS=EA+2該指令指定的雙字節(jié)指針的第一個字單元內(nèi)容送IP,第二個字單元內(nèi)容送CS。JMP DWORD PTR BX+SI根據(jù)題目的要求和選擇的指令,首先設(shè)計出主程序,其流程圖如圖2-1:開始輸出字符串輸入提示符將字符輸
13、入緩沖區(qū),再傳入buf1LEA DI,buf+2 LEA SI,buf1 CX置0將di賦給DL DI加1movsi,dl si,cx加1傳送完成? N Y 建立目標(biāo)、源地址指針 Y輸出信息進(jìn)行轉(zhuǎn)換選擇輸入字符 判斷是否為A/a Y判斷是否為B/b N調(diào)用子程序ABC N調(diào)用子程序CBA進(jìn)行ASCII轉(zhuǎn)換 Y 輸出 輸出圖2-1 主程序的流程圖 3 源程序3.1 主程序設(shè)計根據(jù)課題的要求,首先設(shè)計友好的人機(jī)交互頁面,編輯提示語,然后編輯自己所需的函數(shù),通過DOS調(diào)用現(xiàn)成的以及自己編輯的函數(shù),來滿足題目要求。主程序如下: ;* 輸入一串字符(非字符則不接受) * ;* 原字符存放在buf1中 ,
14、轉(zhuǎn)換后的字符存放在buf2中 * ;* 按照屏幕菜單選擇進(jìn)行ASCII碼轉(zhuǎn)換 * ;* 或者進(jìn)行大小寫轉(zhuǎn)換 * ;*-*DATA SEGMENT ;數(shù)據(jù)段input db 0ah,0dh,'if you want to quit ,please press Q/q! ' db 0ah,0dh,'press other key to zhuanhuan',0ah,0dh,'$' ; 輸入提示inputmess db 0ah,0dh,'please input buf1:',0ah,0dh,'$' buf db 100
15、 db '$' db 100 dup(0) ;字符緩沖區(qū) ZHUANHUAN db 0ah,0dh,'if you want to change case press A/a! ' db 0ah,0dh,'if you want to transform to ascii press B/b!',0ah,0dh,'$' ;轉(zhuǎn)換提示outputmess db 0ah,0dh,'after transform Character String BUF2 :' db 0ah,0dh,'BUF1:$' ;輸
16、出提示BUF1 DB 100 dup(0)chgline db 0ah,0dh,'BUF2:'BUF2 DB 100 DUP('$')BUF3 db 0ah,'$'DATA ENDS STACK1 SEGMENT STACK DB 20 DUP('$')STACK1 ENDSCODE ;代碼段SEGMENT ASSUME DS:DATA,SS:STACK1,CS:CODESTART:MOV AX,DATA MOV DS,AXAP: LEA DX,input ;輸入提示 MOV AH,9 INT 21h MOV AH,08h INT
17、 21h CMP AL,'Q' JE exit CMP AL,'q' JE exitPA: LEA DX,inputmess MOV AH,9INT 21h LEA DX,buf MOV AH,10 ;輸入字符 INT 21h LEA di,buf+2 ;將字符存入緩沖區(qū)buf中 LEA si,buf1 MOV CX,0next: MOV DL,di INC di CMP DL,0dh ;判斷是否傳送完畢 JNE aa JMP end0aa: MOV si,DL ;將緩沖區(qū)buf中的內(nèi)容存入buf1中 INC si INC CX JMP next exit: M
18、OV AH,4CH INT 21Hend0: MOV byte ptr si,'$' INC CX MOV BP,CX MOV SI,OFFSET BUF1 ;建立源地址指針 MOV DI,OFFSET BUF2 ;建立目標(biāo)地址指針 MOV CX,BP ;字節(jié)數(shù)送入CX寄存器 LEA DX, ZHUANHUAN ;輸出轉(zhuǎn)換信息,進(jìn)行轉(zhuǎn)換選擇 MOV AH,9 INT 21H MOV AH,08 INT 21H CMP AL,'A' ;檢驗(yàn)輸入的字符,輸入A/a跳到AB進(jìn)行大小: JE AB CMP AL,'a' JE AB CMP AL,'
19、;B' JE BA CMP AL,'b' JE BAAB: CALL ABC ;調(diào)用子程序ABC JMP L1BA: CALL CBA ;調(diào)用子程序CBA JMP L1ABC PROC ;子程序ABC AC: PUSH SI ;進(jìn)棧 PUSH DI PUSH CX PUSH AX MOV AL,SI CMP AL,'$' JE L1 ;判斷大小寫并進(jìn)行大小寫轉(zhuǎn)換 CMP AL,'a' JL DBA CMP AL,'z' JL JK JMP PA JK: SUB AL,20H MOV DI,AL JMP AA0DBA: CM
20、P AL, 'Z' JL KK JMP PA KK: CMP AL,'A' JG LL JMP PA LL:ADD AL,20H MOV DI,ALAA0: INC SI INC DI DEC CX JNZ AC POP CX ;出棧 POP DI POP SIPOP AX RET ABC ENDP CBA PROC ;完成字符轉(zhuǎn)換成ASCII的子程序 AD: PUSH SI ;進(jìn)棧 PUSH DI PUSH CX PUSH AX MOV AL,SI CMP AL,'$' JE L1 CMP AL,'a' JL ABD CMP A
21、L,'z' JLE HW JMP PAHW: CBW MOV BL,10H ;將小寫字母轉(zhuǎn)換成ASCII DIV BL ADD AL,30H MOV DI,AL INC DI ADD AH,30H MOV DI,AH JMP BB0ABD: CMP AL ,'Z' JLE HO JMP PA HO: CMP AL,'A' JGE MO JMP PA MO: CBW MOV BL,10H ;將大寫字母轉(zhuǎn)換成ASCII碼 DIV BL ADD AL,30H MOV DI,AL INC DI ADD AH,30H MOV DI,AHBB0: INC S
22、I INC DI DEC CX JNZ AD POP CX ;出棧 POP DI POP SI POP AX RET CBA ENDPL1: LEA DX,OUTPUTMESS ;實(shí)現(xiàn)輸出 MOV AH,9 INT 21H LEA DX,buf1 MOV AH,9 INT 21h LEA DX,chgline MOV AH ,9 INT 21h LEA dx,BUF3 MOV ah,9 INT 21h mov cl,100 mov si,0qinlin: mov al,'$' mov BUF2si,al inc si loop qinlin JMP APCODE ENDS EN
23、D START把程序輸入到emu8086中去,運(yùn)行程序,打開屏幕界面,按照提示語的要求,輸入相應(yīng)的字符,按字母A/a或B/b來達(dá)到不同的目的。3.2 子程序大小寫字母轉(zhuǎn)換及流程圖首先在屏幕上輸出顯示字符串輸入提示符,再進(jìn)行字符串的輸入,輸入字符串完成后在屏幕上輸出轉(zhuǎn)換信息:(選擇輸入A/a進(jìn)行大小寫轉(zhuǎn)換或者輸入B/b進(jìn)行ASCII轉(zhuǎn)換),接著輸入一個字符,判斷輸入字符A/a還是B/b跳轉(zhuǎn)到進(jìn)行相應(yīng)的轉(zhuǎn)換(在子程序中判斷是否有非字符,若有非字符則重新輸入,沒有則進(jìn)行轉(zhuǎn)換),轉(zhuǎn)換完成后跳轉(zhuǎn)到輸出部分進(jìn)行輸出,程序結(jié)束。程序開始先取buf1中的字符,判斷是否為字符,如果不是字符則不符合要求就不進(jìn)行轉(zhuǎn)
24、換直接跳轉(zhuǎn)到PA重新輸入字符buf1;如果是字符則進(jìn)行大小寫轉(zhuǎn)換,轉(zhuǎn)換后的字符存儲在字符串buf2中;之后SI、DI加1,CX減1,判斷CX是否為零;如果CX為零說明完成轉(zhuǎn)換,此時可以將SI、DI、CX、AX出棧,子程序結(jié)束;跳轉(zhuǎn)到L1進(jìn)行輸出。否則繼續(xù)取下一個字符進(jìn)行轉(zhuǎn)換,直至轉(zhuǎn)換完成。ABC PROC ;子程序ABC AC: PUSH SI ;進(jìn)棧 PUSH DI PUSH CX PUSH AX MOV AL,SI CMP AL,'$' JE L1 ;判斷大小寫并進(jìn)行大小寫轉(zhuǎn)換 CMP AL,'a' JL DBA CMP AL,'z' JL
25、JK JMP PA JK: SUB AL,20H MOV DI,AL JMP AA0DBA: CMP AL, 'Z' JL KK JMP PA KK: CMP AL,'A' JG LL JMP PA LL:ADD AL,20H MOV DI,ALAA0: INC SI INC DI DEC CX JNZ AC POP CX ;出棧 POP DI POP SIPOP AX RET ABC ENDP大小寫字母轉(zhuǎn)換流程圖如圖3-1:開始AX、CX、SI、DI入棧取buf1中的字符是否為字符?進(jìn)行大小寫轉(zhuǎn)換SI、DI加1 ,CX減1CX是否為0?AX、CX、SI、DI出
26、棧結(jié)束跳轉(zhuǎn)到PA重新輸入 N Y 圖3-1 大小寫字母轉(zhuǎn)換流程圖3.3 子程序ASCII碼轉(zhuǎn)換CBA及流程圖CBA PROC ;完成字符轉(zhuǎn)換成ASCII的子程序 AD: PUSH SI ;進(jìn)棧 PUSH DI PUSH CX PUSH AX MOV AL,SI CMP AL,'$' JE L1 CMP AL,'a' JL ABD CMP AL,'z' JLE HW JMP PAHW: CBW MOV BL,10H ;將小寫字母轉(zhuǎn)換成ASCII DIV BL ADD AL,30H MOV DI,AL INC DI ADD AH,30H MOV DI
27、,AH JMP BB0ABD: CMP AL ,'Z' JLE HO JMP PA HO: CMP AL,'A' JGE MO JMP PA MO: CBW MOV BL,10H ;將大寫字母轉(zhuǎn)換成ASCII碼 DIV BL ADD AL,30H MOV DI,AL INC DI ADD AH,30H MOV DI,AHBB0: INC SI INC DI DEC CX JNZ AD POP CX ;出棧 POP DI POP SI POP AX RET CBA ENDPASCII碼轉(zhuǎn)換子程序CBA流程圖如圖3-2:開始SI、DI、CX、AX入棧取buf1中的字
28、符跳轉(zhuǎn)到PA重新輸入判斷是否為字符 N N N 將字符轉(zhuǎn)換成ASCII碼 YSI加1,DI加1,CX減1 CX是否為0? N YSI、DI、AX、CX、出棧結(jié)束 圖3-2 ASCII碼轉(zhuǎn)換子程序CBA流程圖4 程序運(yùn)行及調(diào)試根據(jù)題目要求:鍵盤輸入一串字符(非字符則不接受),通過屏幕提示菜單選擇轉(zhuǎn)換成ASCII碼,或者進(jìn)行大小寫轉(zhuǎn)換(原來是大寫轉(zhuǎn)換成小寫,小寫則轉(zhuǎn)換為大寫)并顯示。所以可能有三種處理結(jié)果:(1)輸入字符串后進(jìn)行大小寫轉(zhuǎn)換后輸出顯示在屏幕上;(2)輸入字符串后將字符串轉(zhuǎn)換成ASCII碼輸出顯示在屏幕上;(3)輸入的串中含有非字符,則不進(jìn)行轉(zhuǎn)換輸出,跳到程序PA處重新輸入字符。4.1
29、 大小寫轉(zhuǎn)換當(dāng)輸入字符串為:WEIJIyuanli并且輸入字符A/a進(jìn)行大小寫轉(zhuǎn)換時得出結(jié)果如圖4-1: 圖4-1字母大小寫轉(zhuǎn)換圖4.2 ASCII碼轉(zhuǎn)換當(dāng)輸入字符串為:daXUE,并且在下一步輸入B/b將輸入的字符轉(zhuǎn)換成ASCII碼輸出得到的結(jié)果如圖4-2:圖4-2 字母轉(zhuǎn)換為ASCII碼4.3 輸入非字符當(dāng)輸入的字符串為WUHAN888含有非字符時,字符串不進(jìn)行轉(zhuǎn)換,直接跳轉(zhuǎn)到程序PA處,提示重新輸入字符buf1,結(jié)果如圖4-3:圖4-3 出入非法字符4.4 調(diào)試中出現(xiàn)的錯誤(1)當(dāng)判斷字符串含有非字符時,直接跳轉(zhuǎn)到重新輸入的PA處,程序會發(fā)生如下錯誤:跳轉(zhuǎn)時相對跳出范圍N字節(jié);所以要使用
30、無條件轉(zhuǎn)移指令JMP來解決這個問題;在其他處發(fā)生此類錯誤也是用同樣的的解決方法。錯誤程序: ABD: CMP AL ,'Z' JG PA CMP AL,'A'修改后的程序: ABD: CMP AL ,'Z' JLE HO JMP PA HO: CMP AL,'A'(2)在實(shí)現(xiàn)輸出L1部分處,輸出buf1和轉(zhuǎn)換后的buf2后,程序會輸出處會有一小段亂碼;解決的辦法是:在輸出結(jié)尾處增加輸出換行buf3即可解決。錯誤程序: L1: LEA DX,OUTPUTMESS ;實(shí)現(xiàn)輸出 MOV AH,9 INT 21H LEA DX,buf1
31、MOV AH,9 INT 21h LEA DX,chgline MOV AH ,9 INT 21h(3)調(diào)用子程序ABC或者CBA后已經(jīng)完成了一種轉(zhuǎn)換,需要跳轉(zhuǎn)到輸出部分L1實(shí)現(xiàn)輸出,所以在調(diào)用完子程序后必須加一條無條件轉(zhuǎn)換語句JMP,否則程序會繼續(xù)執(zhí)行到其他部分。錯誤程序: AB: CALL ABC ;調(diào)用子程序ABC修改后的程序: AB: CALL ABC ;調(diào)用子程序ABC JMP L1(4) 在輸入字符是,輸入的字符長度小于前面所輸?shù)淖址L度時,會出現(xiàn)錯誤,即結(jié)果會顯示上一次字符輸入的部分結(jié)果,原因是buf2沒有清空。如圖4-4:解決方法是加一個buf2的指令段,如下所示:qinlin
32、: mov al,'$' mov BUF2si,al inc si loop qinlin 圖4-4 第二次結(jié)果出錯4.5 結(jié)果分析通過對程序的修改,在最初設(shè)計的程序上加上一部分指令,解決初始程序中的bug即不足,從而完善了程序,滿足了要求。5 心得體會經(jīng)過了將近兩周的時間,我終于能寫心得體會了,這也意味著我的課程設(shè)計基本結(jié)束了。在這兩周的時間里,剛開始幾天有3門專業(yè)課要考試,期間有一門自控要考試,都要花一些時間來復(fù)習(xí),所以用來做課設(shè)的時間就相對來說沒那么多了。從最初給大家分號題目,同時自己也分到了題目,看到題目和要求后,第一感覺覺得應(yīng)該沒有大問題,這些知識課本里面應(yīng)該都學(xué)過,接著就是選擇要用的指令了,雖然以前基本上都是直接使用mov等指令,基本上沒用過DOS調(diào)用,但是出于編寫程序的簡潔明了,同時也是為了更進(jìn)一步的學(xué)習(xí)匯編語言,本次課設(shè)還是選擇了使用我不太熟悉的DOS功能調(diào)用,也算是挑戰(zhàn)一下自己。 雖然這已經(jī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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 醫(yī)療照明銷售合同范例
- 供暖法律合同范例
- 2025年度物流園區(qū)后勤保障與運(yùn)營管理合同
- 產(chǎn)品英文訂購合同范本
- 中國針織襯衫行業(yè)市場深度分析及投資策略咨詢報告
- 倉儲承包服務(wù)合同范本
- 低價漁具轉(zhuǎn)讓合同范例
- 公寓電腦租賃合同范本
- 農(nóng)機(jī)合同范本
- 仔豬購買合同范本
- 數(shù)學(xué)-河南省三門峽市2024-2025學(xué)年高二上學(xué)期1月期末調(diào)研考試試題和答案
- 2025年春新人教版數(shù)學(xué)七年級下冊教學(xué)課件
- 《心臟血管的解剖》課件
- 心肺復(fù)蘇課件2024
- 2024-2030年中國并購基金行業(yè)發(fā)展前景預(yù)測及投資策略研究報告
- 河道清淤安全培訓(xùn)課件
- 2024各科普通高中課程標(biāo)準(zhǔn)
- 7.3.1印度(第1課時)七年級地理下冊(人教版)
- 教師培訓(xùn)校園安全
- 北師大版語文四年級下冊全冊教案
- AS9100D人力資源管理程序(范本)
評論
0/150
提交評論