




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、 課程設(shè)計報告課程名稱:計算機組成原理與匯編語言報告題目:字母與進制轉(zhuǎn)換系統(tǒng)學(xué)生姓名: 所在學(xué)院:信息科學(xué)與工程學(xué)院專業(yè)班級:指導(dǎo)教師: 2013 年 6月 26 日摘要匯編語言是計算機能夠提供給用戶使用的最快且最有效的語言,也是能夠充分利用計算機所有硬件資源并能直接控制硬件的唯一語言。用匯編語言編制的程序同機器語言程序一一對應(yīng),它的目標代碼短,運行速度快,在對程序的時間和空間要求很高的場合,往往需要采用匯編語言。本程序是用匯編語言編寫的字母與進制轉(zhuǎn)換系統(tǒng),擁有三個子功能。分別為將大寫字母轉(zhuǎn)換為小寫字母,將十進制數(shù)轉(zhuǎn)換為十六進制數(shù)和將十六進制數(shù)轉(zhuǎn)換為十進制數(shù)。通過此次課程設(shè)計,我們對匯編語言的
2、大部分基本指令非常熟悉。分析問題,解決問題的能力將得到極大的提高。關(guān)鍵詞:匯編;語言;進制;轉(zhuǎn)換目錄一、課題分析1二、需求分析21功能描述22. 功能模塊分析 2 三、設(shè)計方案31系統(tǒng)流程圖32子程序模塊設(shè)計4 3. 詳細設(shè)計44程序調(diào)試結(jié)果及分析11四、結(jié)論與心得12五、參考文獻13一、課題分析根據(jù)要求我們做的是完成一個字母或數(shù)制之間的轉(zhuǎn)化程序,主程序分別具有3種可選擇的子功能,按相應(yīng)的字母(X=>功能1; Y=>功能2; Z=>功能3;)可分別進入相應(yīng)的子功能并在屏幕上顯示結(jié)果。3種可選擇的子功能分別為:1)實現(xiàn)大寫字母向小寫字母的轉(zhuǎn)換2)實現(xiàn)十進制數(shù)向十六進制數(shù)的轉(zhuǎn)換3
3、)實現(xiàn)十六進制數(shù)向十進制數(shù)的轉(zhuǎn)換。當運行程序后,應(yīng)該要出現(xiàn)一個主菜單界面,主界面應(yīng)該要能進入三個子功能界面,即輸入X,進入實現(xiàn)大寫字母向小寫字母的轉(zhuǎn)換的子功能界面;輸入Y,進入十進制數(shù)向十六進制數(shù)轉(zhuǎn)換的子功能界面;輸入Z,進入十六進制數(shù)向十進制數(shù)的轉(zhuǎn)換。如:當選中了大寫字母向小寫字母轉(zhuǎn)換的功能后,如果輸入的不是大寫字母,應(yīng)要提示輸入錯誤,請重新輸入,直到輸入正確為止。通過改變ASSIC碼值,實現(xiàn)大寫字母向小寫字母的轉(zhuǎn)換。顯示轉(zhuǎn)換后的字母后,跳轉(zhuǎn)到主菜單,重新選擇子功能。二、需求分析 1.功能描述 本程序共有三個功能,3種可選擇的子功能分別為:1)實現(xiàn)大寫字母向小寫字母的轉(zhuǎn)換2)實現(xiàn)十進制數(shù)向十
4、六進制數(shù)的轉(zhuǎn)換3)實現(xiàn)十六進制數(shù)向十進制數(shù)的轉(zhuǎn)換。輸入相應(yīng)的字符即可分別進入相應(yīng)的子功能并在屏幕上顯示結(jié)果。 輸入X:進入實現(xiàn)大寫字母向小寫字母的轉(zhuǎn)換子功能模塊。輸入Y: 進入實現(xiàn)十進制數(shù)向十六進制數(shù)轉(zhuǎn)換的子功能模塊。輸入Z:進入實現(xiàn)十六進制數(shù)向十進制數(shù)轉(zhuǎn)換的子功能模塊。如果用戶輸入X,即進入實現(xiàn)大寫字母向小寫字母轉(zhuǎn)換的子功能模塊,如果輸入的不是大寫字母,應(yīng)要提示輸入錯誤,請重新輸入,直到輸入正確為止。通過改變ASSIC碼值,實現(xiàn)大寫字母向小寫字母的轉(zhuǎn)換。顯示轉(zhuǎn)換后的字母后,跳轉(zhuǎn)到主菜單,重新選擇子功能。如果用戶輸入Y,即進入實現(xiàn)十進制向十六進制轉(zhuǎn)換的子功能模塊,十進制轉(zhuǎn)十六進制數(shù)以二進制為中
5、介,先將輸入視為十進制,轉(zhuǎn)換為二進制數(shù)保存在BX中。然后再將這個二進制數(shù)轉(zhuǎn)換為十六進制數(shù)保存在之前設(shè)定的單元中并輸出,然后跳轉(zhuǎn)到主菜單。如果用戶輸入Z,即進入實現(xiàn)十六進制向十進制轉(zhuǎn)換的子功能模塊,十六進制轉(zhuǎn)換為十進制數(shù)的主要思想是按權(quán)值展開再相加,轉(zhuǎn)換輸出后,跳轉(zhuǎn)到主菜單。2.功能模塊分析 本程序主要由四個模塊構(gòu)成。首先是主界面,將顯示本程序擁有的所有的子功能。然后是三個子功能。分別擁有將大寫字母轉(zhuǎn)換成小寫字母,將十進制數(shù)轉(zhuǎn)換成十六進制數(shù),將十六進制數(shù)轉(zhuǎn)換成十進制數(shù)的功能。 主菜單:顯示系統(tǒng)名稱,顯示各字母編號所對應(yīng)的子功能。 大寫字母轉(zhuǎn)換成小寫字母:當用戶輸入X編號時,便進入此子功能。提示輸
6、入一個大寫字母,如果輸入的不是大寫字母則提示輸入錯誤,請重新輸入。通過改變ASSIC碼值,實現(xiàn)大寫字母向小寫字母的轉(zhuǎn)換。顯示轉(zhuǎn)換后的字母,然后跳轉(zhuǎn)到主菜單。十進制數(shù)轉(zhuǎn)換成十六進制數(shù):當用戶輸入Y編號時,便進入此子功能。提示輸入一個十進制數(shù),十進制轉(zhuǎn)十六進制數(shù)以二進制為中介,先將輸入視為十進制,轉(zhuǎn)換為二進制數(shù)保存在BX中。然后再將這個二進制數(shù)轉(zhuǎn)換為十六進制數(shù)保存在預(yù)先準備的單元中,輸出之后跳轉(zhuǎn)到主菜單。 十六進制數(shù)轉(zhuǎn)換成十進制數(shù):當用戶輸入Z編號時,便進入此子功能。提示輸入一個十六進制數(shù),十六進制數(shù)轉(zhuǎn)換成十進制的主要思想是,按權(quán)值展開再相加。首先是將輸入的字符轉(zhuǎn)換成相應(yīng)的數(shù)字,通過設(shè)置相應(yīng)的變量
7、,依次進行累乘,直到十六進制數(shù)位數(shù)全部循環(huán)完畢,將每一位所得的數(shù)保存在寄存器中,每進行一次就實現(xiàn)一次求和運算。最后將轉(zhuǎn)換成的十進制數(shù)輸出,跳轉(zhuǎn)到主菜單。三、設(shè)計方案1.系統(tǒng)流程圖主菜單 開 始輸入有誤,重新輸入其他退出XYZQ輸入十六進制數(shù)輸入十進制數(shù)輸入大寫字母輸入錯誤輸入錯誤輸入錯誤判斷輸入是否合法判斷輸入是否合法N判斷輸入是否合法N轉(zhuǎn)換小寫字母轉(zhuǎn)換十六進制NY轉(zhuǎn)換十進制YY結(jié) 束輸出輸出輸出2.子程序模塊設(shè)計(1)大寫字母轉(zhuǎn)換成小寫字母子程序當用戶選擇編號X,便選中了這一個子功能。通過判斷標識符,程序跳轉(zhuǎn)到標識符所在的位置。根據(jù)提示輸入一個大寫字母,會有一個判斷輸入是否合法的過程,若輸入
8、的是非大寫字母,則會提示輸入錯誤,請重新輸入,直到輸入正確為止。通過改變ASSIC碼值,實現(xiàn)大寫字母向小寫字母的轉(zhuǎn)換。顯示轉(zhuǎn)換后的字母,然后跳轉(zhuǎn)到主菜單。(2)十進制數(shù)轉(zhuǎn)換成十六進制數(shù)子程序 當用戶選擇編號Y,便選中了這一個子功能。通過判斷標識符,程序跳轉(zhuǎn)到標識符所在的位置。根據(jù)提示輸入一個十進制數(shù)??傮w來說是以二進制為中介,先將輸入視為十進制,轉(zhuǎn)換為二進制數(shù)保存在BX中,然后再將這個二進制數(shù)轉(zhuǎn)換為十六進制數(shù)保存在之前定義好的的單元中并輸出,然后跳轉(zhuǎn)到主菜單。(3)十六進制數(shù)轉(zhuǎn)換成十進制數(shù)子程序 當用戶選擇編號Z,便選擇了這一個子功能。通過判斷標識符,程序跳轉(zhuǎn)到標識符所在的位置。根據(jù)提示輸入一
9、個十六進制數(shù),此時會進行判斷,若是輸入字符串不符合十六進制數(shù)的要求,則提示輸入錯誤,重新輸入,直到輸入正確為止。十六進制數(shù)轉(zhuǎn)換成十進制的主要思想是,按權(quán)值展開再相加。首先是將輸入的字符轉(zhuǎn)換成相應(yīng)的數(shù)字,通過設(shè)置相應(yīng)的變量,在最低位上的權(quán)值是1,然后依次是16,256依次進行累乘,直到十六進制數(shù)位數(shù)全部循環(huán)完畢,將每一位所得的數(shù)保存在寄存器中,每進行一次就實現(xiàn)一次求和運算。最后將轉(zhuǎn)換成的十進制數(shù)輸出,跳轉(zhuǎn)到主菜單。3.詳細設(shè)計(1)主菜單設(shè)計include io32.inc .data m1 byte ' 字母與進制轉(zhuǎn)換系統(tǒng) ',13,10,0 ;菜單 m2 byte '
10、-',13,10,0 ;分割線 m3 byte ' 編號 操作 ',13,10,0 ma byte ' X 實現(xiàn)大寫字母向小寫字母的轉(zhuǎn)換',13,10,0 mc byte ' Y 實現(xiàn)十進制向十六進制數(shù)的轉(zhuǎn)換',13,10,0 me byte ' Z 實現(xiàn)十六進制向十進制數(shù)的轉(zhuǎn)換',13,10,0 mq byte ' Q 退出',13,10,0 m_err byte ' 輸入錯誤,請重新輸入',13,10,0 m_meau byte '請輸入菜單中的編號: ',0 m_inp
11、utl byte '請輸入一個大寫字母: ',0 m_outputl byte '對應(yīng)的小寫字母: ',0m_meau byte '請輸入菜單中的編號: ',0 m_input1 byte '請輸入一個十進制數(shù): ',0 m_output1 byte '轉(zhuǎn)換后的十六進制的數(shù): ',0m_meau byte '請輸入菜單中的編號: ',0 m_input3 byte '請輸入一個十六進制的數(shù): ',0 m_output3 byte '轉(zhuǎn)換后的十進制數(shù): ',0 arra
12、y byte 8 dup (0) ;用字符串數(shù)組保存十六進制數(shù) sum dword ? ;十進制數(shù)變量 len byte ? ;字符串數(shù)組的長度 m byte ? array2 byte 100 dup (0) ;用來保存轉(zhuǎn)換后的十六進制數(shù) n dword ? k dword ? j dword ? .codestart: mov eax,offset m1 ;顯示菜單中的內(nèi)容 call dispmsg mov eax,offset m2 call dispmsg mov eax,offset m3 call dispmsg mov eax,offset mx call dispmsg mov
13、 eax,offset my call dispmsg mov eax,offset mz call dispmsg mov eax,offset mq call dispmsgmeau: mov eax,offset m_meau call dispmsg ;提示輸入相應(yīng)的菜單編號 call readc ;輸入對應(yīng)的編號 call dispcrlf ;換行 cmp al,'x' ;判斷輸入 jz a ;若輸入x,則跳轉(zhuǎn)到標識符a cmp al,'y' jz b ;若輸入y,則跳轉(zhuǎn)到標識符b cmp al,'z' jz c ;若輸入z,則跳轉(zhuǎn)到標
14、識符c cmp al,'q' jz q ;若輸入q,則跳轉(zhuǎn)到標識符q mov eax,offset m_err call dispmsg ;輸入錯誤,提示錯誤的信息 jmp meau(2)大寫字母轉(zhuǎn)換為小寫字母子程序設(shè)計 returna: mov eax,offset m_err call dispmsga: mov eax,offset m_inputl call dispmsg ;提示輸入一個大寫的字母 call readc ;獲得字母 mov bl,al ;將輸入的內(nèi)容存儲到bl中 call dispcrlf ;換行 cmp al,'A' ;判斷輸入的字母
15、是否合法 jb returna ;如果比'A'小,則跳轉(zhuǎn)到returna標識符 cmp al,'Z' ja returna ;如果比'Z'大,則跳轉(zhuǎn)到returna標識符 call dispc ;顯示字母 mov eax,offset m_outputl call dispmsg ;輸入正確,則提示輸出相應(yīng)的小寫字母 add bl,20h ;實現(xiàn)大寫向小寫的轉(zhuǎn)換 mov al,bl call dispc ;顯示轉(zhuǎn)換后的字母 call dispcrlf ;換行 jmp meau (3)十進制數(shù)轉(zhuǎn)換為十六進制數(shù)子程序設(shè)計 data segmentst
16、r db 0ah,0dhnum db 4 dup(?),'H$'tab db '0123456789ABCDEF'data endscode segment assume cs:code,ds:databegin: mov ax,data mov ds,ax ;初始化代碼段 xor bx,bx mov cx,10 ;進制next: mov ah,1 int 21h cmp al,0dh jz conv ;如果是回車,表示輸入結(jié)束,轉(zhuǎn)換開始 push ax ;保存輸入值,和AH mov ax,bx mul cx mov bx,ax ;將先前的結(jié)果向上推一位 pop
17、 ax ;取回本次輸入 and al,0fh ;屏蔽掉無用位,類SUB AL,30H xor ah,ah ;高位歸零 add bx,ax ; 合并本次輸入 jmp nextconv: mov ax,bx ; 開始轉(zhuǎn)換 mov ch,4 lea bx,tab mov cl,4 lea si,numlopa: rol ax,cl ; 把高4位移到低4位 push ax and ax,000fh ; 取出低4位 mov si,al ;按地址由低到高的順序?qū)⒔Y(jié)果由高到底存放 inc si pop ax dec ch jnz lopa lea dx,str mov ah,9 int 21h ;回車換行
18、mov ah,4ch int 21h call dispcrlf jmp meau ;返回主菜單(4)十六進制數(shù)轉(zhuǎn)換為十進制數(shù)子程序設(shè)計 mov m,al mov eax,offset m_input3 call dispmsg mov eax,offset array call readmsg mov len,al ;獲得字符串長度 xor ecx,ecx ;異或清零 mov cl,len ;計數(shù) dec cl ;自減1 xor eax,eax mov edx,1 ;初始權(quán)值again: cmp arrayecx,'A' jl shiliu_shi1 ;小于A,轉(zhuǎn)向shili
19、u_shi1 cmp arrayecx,'F' jg shiliu_shi1 ;大于Z,轉(zhuǎn)向shiliu_shi1 xor ebx,ebx mov bl,arrayecx ;相對尋址 sub bl,55 ;轉(zhuǎn)換成相應(yīng)的數(shù)字 imul ebx,edx add eax,ebx imul edx,16 ;改變權(quán)值 jmp shiliu_shi3shiliu_shi1: cmp arrayecx,'0' jl shiliu_shi2 ;小于0,轉(zhuǎn)向shiliu_shi2 cmp arrayecx,'9' jg shiliu_shi2 ;大于9,轉(zhuǎn)向shi
20、liu_shi2 xor ebx,ebx ;臨時寄存 mov bl,arrayecx sub bl,'0' ;轉(zhuǎn)換成相應(yīng)的數(shù)字 imul ebx,edx add eax,ebx imul edx,16 ;改變權(quán)值 jmp shiliu_shi3 shiliu_shi2: mov eax,offset m_err call dispmsg ;提示輸入錯誤 jmp zshiliu_shi3: dec ecx ;自減 cmp ecx,0 jnl again ;不小于0,轉(zhuǎn)向again mov sum,eax cmp m,'e' jz ee ;直接輸出ee: mov eax,offset m_output3 call dispmsg mov eax,sum ;數(shù)據(jù)輸出 call dispuid call dispcrlf jmp me
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 分期購車銀行合同范本
- 兼職廚師勞務(wù)合同范本
- 代理建賬合同范本
- 入職各種合同范本
- 2025年湖南a2貨運從業(yè)資格證考試
- 介紹客戶返利合同范本
- 農(nóng)村住房建筑合同范本
- 勞務(wù)合同范本英文
- 農(nóng)田托管合同范本
- 凍庫修理合同范本
- 《綠色建筑設(shè)計原理》課件
- 中醫(yī)館裝修合同范本
- 光伏電站小EPC規(guī)定合同范本
- 2024年01月江蘇2024年昆山鹿城村鎮(zhèn)銀行第三期校園招考筆試歷年參考題庫附帶答案詳解
- 《直播銷售》課件-項目一 認識直播與直播銷售
- 建筑工程安全與管理
- 2025年內(nèi)蒙古機電職業(yè)技術(shù)學(xué)院高職單招職業(yè)技能測試近5年??及鎱⒖碱}庫含答案解析
- 2024年05月齊魯銀行總行2024年社會招考筆試歷年參考題庫附帶答案詳解
- 浙江省紹興市2024-2025學(xué)年高一上學(xué)期期末調(diào)測英語試題(無答案)
- 幼兒園開學(xué)教師安全知識培訓(xùn)
- 《會展經(jīng)濟與策劃》課件
評論
0/150
提交評論