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