

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、<p> 課程設計題目:字母大小寫轉(zhuǎn)換</p><p><b> 目錄</b></p><p><b> 一.概述1</b></p><p><b> 二.設計要求1</b></p><p> 三.設計思想與工作原理1</p><p
2、><b> 四.程序流程圖4</b></p><p><b> 五.流程圖說明4</b></p><p><b> 六.程序源代碼5</b></p><p> 七.運行調(diào)試結(jié)果11</p><p> 八.設計過程中遇到的問題及解決辦法11</p&
3、gt;<p><b> 九.心德體會13</b></p><p><b> 字母大小寫轉(zhuǎn)換</b></p><p><b> 一.概述</b></p><p> 在計算機系統(tǒng)中有多種數(shù)制和編碼,常用的數(shù)制有二進制、八進制以及十六進制,常用的代碼有BCD碼、ASCll碼和七段顯示
4、碼等。這些數(shù)制和編碼根據(jù)其作用的不同,在存儲形式上也有差異。在實際應用中,它們也因使用的要求不同而有所差異。在配備操作系統(tǒng)管理程序的計算機中,有些代碼轉(zhuǎn)換程序已在系統(tǒng)管理軟件中編好。還有些代碼轉(zhuǎn)換需要根據(jù)使用要求通過編程完成。因此,代碼轉(zhuǎn)換是非數(shù)據(jù)處理中最常見的情況。</p><p><b> 二.設計要求</b></p><p> 完成一個字母或數(shù)制之間的轉(zhuǎn)化程
5、序,主程序分別具有可選擇的子功能,按相應的字符,可分別進入相應的子功能并在屏幕上顯示結(jié)果。</p><p> 可選擇的子功能分別為:</p><p> ?。?)實現(xiàn)小寫字母向大寫字母的轉(zhuǎn)換</p><p> ?。?)實現(xiàn)大寫字母向小寫字母的轉(zhuǎn)換</p><p><b> 設計思想與工作原理</b></p>
6、<p> 小寫字母的ASC碼比大寫字母的ASC碼大20H,因此,大寫轉(zhuǎn)小寫就是將大寫字母的ASC碼加20H,反之,將小寫字母的ASC碼減20H。 大小寫字母轉(zhuǎn)換功能,是通過調(diào)用子函數(shù)input實現(xiàn)對字符串的輸入,然后調(diào)用宏gaixie來實現(xiàn)對大小寫的轉(zhuǎn)換,其中宏是通過參數(shù)的傳遞來確定是小寫轉(zhuǎn)換成大寫,還是大寫轉(zhuǎn)換成小寫的。從而決定是對操作數(shù)進行加或減20H。</p><p> 80x86從功能上
7、分執(zhí)行單元EU(Execution Unit),和總線接口單元BIU(Bus Interface Unit),執(zhí)行單元由算術邏輯單元(ALU)、標志寄存器、通用寄存器組和EU控制器等部件組成。 指令執(zhí)行部件EU由算術邏輯單元、標志寄存器、通用寄存器和EU控制器等部件組成。 </p><p> 主要功能是執(zhí)行指令: </p><p> 一般順序執(zhí)行,EU不斷地從指令隊列中取指令連續(xù)執(zhí)行,
8、而省去訪問存儲器取指令的時間。 </p><p> 需要訪問存儲器取操作數(shù)時,EU將訪問地址送給BIU后,將要等待操作數(shù)到來后才能繼續(xù)操作; </p><p> 遇到轉(zhuǎn)移類指令時,要將指令隊列中的后續(xù)指令作廢,等待BIU重新從存儲器取出目標地址中的指令代碼進入指令隊列后,EU才能繼續(xù)執(zhí)行指令。 </p><p> 總線接口單元由地址加法器、專用寄存器組、指令
9、隊列緩沖器和總線控制電路等部件組成; </p><p> 主要功能是形成訪問存儲器的物理地址,負責與外部(存儲器或I/O接口)打交道。 正常情況下,BIU通過地址加法器形成指令的物理地址,從給定存儲器地址中取出指令代碼送指令隊列緩沖器中等待執(zhí)行(指令隊列緩沖器中出現(xiàn)一個空字節(jié),BIU將自動進行讀指令的操作填滿隊列)。 </p><p> 收到EU送來的操作數(shù)地址,BIU將立即形成操作數(shù)
10、的物理地址,完成讀/寫操作數(shù)或運算結(jié)果功能。遇到轉(zhuǎn)移類指令,BIU將指令隊列緩沖器中的尚存指令作廢,重新從存儲器目標地址中取指令送指令緩沖器中。 </p><p> 指令隊列可存放6字節(jié)的指令代碼。一般情況下指令隊列中總是填滿指令,使EU可不斷地得到執(zhí)行的指令。 </p><p> 16位地址加法器專門用來完成由邏輯地址變換成物理地址的功能。實際上是進行一次地址加法,將兩個16位的邏
11、輯地址轉(zhuǎn)換為20位的物理地址,以達到可尋址1M字節(jié)的存儲空間。 </p><p> 總線控制電路將8086CPU的內(nèi)部總線與外部總線相連,是8086CPU與外部交換數(shù)據(jù)的必經(jīng)之路。包括16條數(shù)據(jù)總線、20條地址總線和若干條控制總線。程序裝載到內(nèi)存中后通過16位數(shù)據(jù)線確定各個段地址,開始取出指令(內(nèi)存中讀字節(jié)),放到指令隊列,隊列出口通過EU控制器執(zhí)行指令并同時影響IP(指令指針移動指令長度,或通過指令執(zhí)行后影響
12、IP。</p><p><b> ?。?)匯編:</b></p><p> 計算機不能直接識別和執(zhí)行匯編語言程序,而要通過“翻譯”把源程序譯成機器語言程序(目標程序)才能執(zhí)行,這一“翻譯”工作稱為匯編。匯編有人工匯編和計算機匯編兩種方法。</p><p> 匯編語言是面向機器的,每一類計算機分別有自己的匯編語言。匯編語言占用的內(nèi)存單元少,執(zhí)
13、行效率高,廣泛應用于工業(yè)過程控制與檢測等場合。</p><p> ?。?)匯編語言語句格式</p><p> 標號: 操作符 操作數(shù) 注釋</p><p> Start: mov A:30H ;</p><p> 標號用來標明語句地址,它代表該語句指令機器碼的第一個字節(jié)的存儲單元地址。</p>
14、<p> 標號一般規(guī)定由1~8個英文字母或數(shù)字組成,但第一個符號必須是英文字母。</p><p> 注釋只是對語句或程序段的含義進行解釋說明,以方便程序的編寫、閱讀和交流,簡化軟件的維護,一般只在關鍵處加注釋。</p><p><b> (3)偽指令</b></p><p> 偽指令只用于匯編語言源程序中,對匯編過程起控制和
15、指導的作用,不生成機器碼。匯編結(jié)束,自動消失。</p><p> (4)匯編語言程序設計步驟</p><p><b> ?。?)分析問題</b></p><p><b> ?。?)確定算法</b></p><p><b> (3)設計程序流程</b></p>
16、<p> ?。?)分配內(nèi)存單元:分配內(nèi)存工作單元,確定程序和數(shù)據(jù)區(qū)的起始地址。</p><p> ?。?)編寫匯編語言程序 </p><p><b> ?。?)調(diào)試程序 </b></p><p> 四.程序流程圖及其說明</p><p><b> 五.流程圖說明</b></p&g
17、t;<p> 該程序流程圖簡要地表現(xiàn)出了所要實現(xiàn)的功能以及一些功能的大概算法,同時也是我編寫的程序的一個總體的框架。 通過流程圖,可以看出程序開始運行時,首先輸出輸入界面,在界面中輸入字母(大小寫均可),按回車鍵輸出結(jié)果,大寫輸出小寫,小寫輸出大寫,或同時輸入大小寫,其結(jié)果也將以小大寫形式輸出,此時結(jié)束程序,若程序中輸入字母過多或頻繁則報警器報警。</p><p><b> 六.程序源
18、代碼</b></p><p> code segment </p><p> assume cs:code,ds:code</p><p> org 100h </p><p> start:jmp begin
19、 </p><p> p1 db 100 </p><p><b> p2 db 0</b></p><p> array db 100h dup(?) </p><p><b> begin:</b><
20、/p><p> lea bx,array </p><p> mov ax,cs </p><p><b> mov ds,ax</b></p><p> mov dx,offset p1 </p><p
21、> mov ah,0ah </p><p> int 21h ;調(diào)用dos中斷,等待用戶輸入字符串</p><p> xor bx,bx </p><p> mov bl,p2 </p><p> mov arra
22、y[bx],'$' </p><p> mov di,0ffffh </p><p> next: inc di </p><p> cmp array[di],'$' </p><p>
23、 je exit </p><p> cmp array[di],41h ;41h表示A </p><p> jl exit1 </p><p> cmp array[di],5ah ; Z</p><p>
24、 jg next1 </p><p> add array[di],20h ;回車</p><p> jmp next ;判斷是否為大寫字母</p><p><b> next1:</b></p><p> cmp a
25、rray[di],'$' </p><p> je exit </p><p> cmp array[di],61h ;a</p><p> jl next </p><p> cmp array
26、[di],7ah ;z</p><p> jg exit1 </p><p> sub array[di],20h ;回車</p><p> jmp next ;判斷是否為小寫字母 </p><p><b&g
27、t; disp:</b></p><p><b> loop next</b></p><p> exit: mov p1,0dh </p><p> mov p2,0ah</p><p> mov ah,09h</p><p><
28、b> int 21h</b></p><p> jmp begin code segment </p><p> assume cs:code,ds:code</p><p> org 100h </p><p>
29、; start:jmp begin </p><p> p1 db 100 </p><p><b> p2 db 0</b></p><p> array db 100h dup(?) </p><p>&l
30、t;b> begin:</b></p><p> lea bx,array </p><p> mov ax,cs </p><p><b> mov ds,ax</b></p><p> mov dx,offset p1
31、 </p><p> mov ah,0ah </p><p> int 21h ;調(diào)用dos中斷,等待用戶輸入字符串</p><p> xor bx,bx </p><p> mov bl,p2 &l
32、t;/p><p> mov array[bx],'$' </p><p> mov di,0ffffh </p><p> next: inc di </p><p> cmp array[di],'$'
33、 </p><p> je exit </p><p> cmp array[di],41h ;41h表示A </p><p> jl exit1 </p><p> cmp array[di],5ah
34、 ; Z</p><p> jg next1 </p><p> add array[di],20h ;回車</p><p> jmp next ;判斷是否為大寫字母</p><p><b> next1:</b>
35、;</p><p> cmp array[di],'$' </p><p> je exit </p><p> cmp array[di],61h ;a</p><p> jl next <
36、;/p><p> cmp array[di],7ah ;z</p><p> jg exit1 </p><p> sub array[di],20h ;回車</p><p> jmp next ;判斷是否為小寫字母
37、 </p><p><b> disp:</b></p><p><b> loop next</b></p><p> exit: mov p1,0dh </p><p> mov p2,0ah</p><p> mov ah
38、,09h</p><p><b> int 21h</b></p><p><b> jmp begin</b></p><p> exit1: mov p1, 0dh</p><p> mov p2, 0ah </p><p> call sound
39、 </p><p> call sound</p><p> call sound</p><p> call sound ;調(diào)用sound子程序</p><p> jmp begin code segment </p>&
40、lt;p> assume cs:code,ds:code</p><p> org 100h </p><p> start:jmp begin </p><p> p1 db 100 </p><p><
41、b> p2 db 0</b></p><p> array db 100h dup(?) </p><p><b> begin:</b></p><p> lea bx,array </p><p> mov ax,cs
42、 </p><p><b> mov ds,ax</b></p><p> mov dx,offset p1 </p><p> mov ah,0ah </p><p> int 21h ;調(diào)用dos中斷,等待用戶輸入字符串
43、</p><p> xor bx,bx </p><p> mov bl,p2 </p><p> mov array[bx],'$' </p><p> mov di,0ffffh </
44、p><p> next: inc di </p><p> cmp array[di],'$' </p><p> je exit </p><p> cmp array[di],41h ;41h表
45、示A </p><p> jl exit1 </p><p> cmp array[di],5ah ; Z</p><p> jg next1 </p><p> add array[di],20h ;回
46、車</p><p> jmp next ;判斷是否為大寫字母</p><p><b> next1:</b></p><p> cmp array[di],'$' </p><p> je exit &
47、lt;/p><p> cmp array[di],61h ;通過循環(huán)依次判斷每個字母是否為大寫還是小寫 61h表示小寫字母 a,</p><p> jl next </p><p> cmp array[di],7ah ;z</p><p> jg
48、 exit1 </p><p> sub array[di],20h ;回車</p><p> jmp next ;判斷是否為小寫字母 </p><p><b> disp:</b></p><p><b>
49、; loop next</b></p><p> exit: mov p1,0dh </p><p> mov p2,0ah</p><p> mov ah,09h</p><p><b> int 21h</b></p><p><
50、;b> jmp begin</b></p><p> exit1: mov p1, 0dh</p><p> mov p2, 0ah </p><p> call sound </p><p> call sound</p><p> call s
51、ound</p><p> call sound ;調(diào)用sound子程序</p><p> jmp begin ;回到最初的狀態(tài),已達到循環(huán)輸入字符串的目的。</p><p> mov ah,4ch </p><p> int 21h ;程序結(jié)束</p>&l
52、t;p> sound proc</p><p><b> push ax</b></p><p><b> push dx</b></p><p> mov dx, cx</p><p><b> in al,61h</b></p><p&g
53、t; and al,11111100b </p><p> trig: xor al,2 </p><p> out 61h,al</p><p><b> mov cx,bx</b></p><p> delay:loo
54、p delay</p><p> dec dx </p><p> jne trig </p><p><b> pop dx</b></p><p><b> pop ax</b></p><p><b> ret</b></
55、p><p> sound endp</p><p><b> code ends</b></p><p><b> end begin</b></p><p> mov ah,4ch </p><p> int 21h ;
56、程序結(jié)束</p><p> sound proc</p><p><b> push ax</b></p><p><b> push dx</b></p><p> mov dx, cx</p><p><b> in al,61h</b>&
57、lt;/p><p> and al,11111100b </p><p> trig: xor al,2 </p><p> out 61h,al</p><p><b> mov cx,bx</b></p>&l
58、t;p> delay:loop delay</p><p> dec dx </p><p> jne trig </p><p><b> pop dx</b></p><p><b> pop ax</b></p><p><b>
59、ret</b></p><p> sound endp</p><p><b> code ends</b></p><p><b> end begin</b></p><p> exit1: mov p1, 0dh</p><p> mov p2,
60、 0ah </p><p> call sound </p><p> call sound</p><p> call sound</p><p> call sound ;調(diào)用sound子程序</p><p><b> jmp begin<
61、/b></p><p> mov ah,4ch </p><p> int 21h ;程序結(jié)束</p><p> sound proc</p><p><b> push ax</b></p><p><b> push d
62、x</b></p><p> mov dx, cx</p><p><b> in al,61h</b></p><p> and al,11111100b </p><p> trig: xor al,2 &l
63、t;/p><p> out 61h,al</p><p><b> mov cx,bx</b></p><p> delay:loop delay</p><p> dec dx </p><p> jne trig </p><p><b>
64、pop dx</b></p><p><b> pop ax</b></p><p><b> ret</b></p><p> sound endp</p><p><b> code ends</b></p><p><b&
65、gt; end begin</b></p><p><b> 七.運行調(diào)試結(jié)果</b></p><p> 八.設計過程中遇到的問題及解決辦法</p><p> 在這次課程設計中,我也遇到了一些困難,比如在分配內(nèi)存工作單元,不能出現(xiàn)OBJ文件等一些問題,由于不熟悉掌握匯編語言的命令很容易出錯。例如,程序編寫錯誤或者匯編出錯的時
66、候很難發(fā)現(xiàn)錯誤出現(xiàn)在哪里。所以我們要熟悉掌握匯編語言命令。在編程過程中必須熟練的掌握一些語句。比如,程序開始語句、結(jié)束語句等程序中規(guī)范語句。后經(jīng)請教同學,查閱資料得以解決。</p><p><b> 九.心地體會</b></p><p> 通過這學期的微機課設,我知道了自己的理論知識并不扎實。對于許多指令和一些基本的編程方法都掌握不清楚。通過我的認真在復習,我終于
67、能基本理解一些語句及程序的含義,才開始設定我的大小寫字母轉(zhuǎn)換程序,</p><p> 用匯編語言來實現(xiàn)大小寫字母的轉(zhuǎn)換,首先:大寫與小寫相差32ASC11值,其實字母大小寫的區(qū)別在于他們的ASCII碼范圍,它們之間的轉(zhuǎn)換其實就是加減相應的ASCII碼值。在判斷輸入的字母是大寫的還是小寫的(即判斷輸入符號ASCII碼在41H~5AH還是在61H~7AH內(nèi))之后,決定判斷是加上還是減去ASCII碼值。在運行過程中,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 匯編語言課程設計---大小寫字母轉(zhuǎn)換
- 匯編語言字母大小寫轉(zhuǎn)換
- 課程設計---大小寫字母轉(zhuǎn)換設計
- 大小寫金額轉(zhuǎn)換表
- word英文大小寫轉(zhuǎn)換
- 匯編語言課程設計報告
- 匯編語言課程設計--代碼轉(zhuǎn)換程序
- 匯編語言課程設計報告
- 匯編語言課程設計報告
- 匯編語言課程設計報告a
- 26個字母大小寫、順序練習
- 匯編語言課程設計
- 匯編語言課程設計
- 大小寫字母巧輸入教案
- 13、大小寫字母混合輸入-教學設計
- 匯編語言課程設計報告---打字游戲
- 26個英文字母大小寫筆順
- 匯編語言課程設計安排
- 《匯編語言》課程設計報告--判斷閏年程序
- 匯編語言課程設計報告---顯示系統(tǒng)時間
評論
0/150
提交評論