




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、匯編語言程序設(shè)計大作業(yè)報告匯編語言程序設(shè)計綜合程序設(shè)計實驗報告 題 目: 數(shù)制轉(zhuǎn)換器 班 級: 信1101-2班 姓 名: 王兵茹 李夏蕾 胡佳奇 學 號: 20112917 20112912 20113013 完成日期: 2013-11-24 目錄一、簡介二、小組成員及具體分工三、需求分析與設(shè)計四、代碼及分析五、總結(jié)一、簡介本設(shè)計利用匯編語言來實現(xiàn)數(shù)制轉(zhuǎn)換設(shè)計,用于方便進制之間的互換。設(shè)計的內(nèi)容可以使十六進制、八進制、二進制、十進制的數(shù)制互相轉(zhuǎn)換。二小組成員及具體分工小組成員:王兵茹 李夏蕾 胡佳奇具體分工: 我們?nèi)齻€一開始是各自的分工查資料,先看看單個數(shù)制轉(zhuǎn)換,王兵茹負責的是十六進制,李夏
2、蕾負責的是十進制,胡佳琪負責的是二進制。 最后我們幾個一起完成了程序的主要設(shè)計,由于大體思路相同,最后加上了八進制的轉(zhuǎn)換。 在程序的修改方面,王兵茹進行了后期的加工,增加了dios中斷,把單調(diào)的退出改成文本形式下的退出,在退出之前,執(zhí)行清屏。 最后我們幾個商量著完成了實驗報告和ppt的制作,經(jīng)過我們幾個人的努力,雖然做的不是特別好,但還是各有收獲。三、需求分析與設(shè)計需求分析通過編程實現(xiàn)顯示菜單,然后通過鍵盤輸入菜單相應的選項進入相應的數(shù)制轉(zhuǎn)換,然后通過選項對應的子程序跳轉(zhuǎn)來實現(xiàn)轉(zhuǎn)換,子程序中通過宏定義定義數(shù)制前后的數(shù)制,并且在宏定義過程中實現(xiàn)數(shù)制轉(zhuǎn)換算法,最后輸出轉(zhuǎn)換后的進制數(shù) 。 設(shè)計 運行
3、的設(shè)計框圖 Debug運行的顯示的數(shù)值轉(zhuǎn)換的菜單八進制轉(zhuǎn)換為二進制二進制轉(zhuǎn)換為十六進制二進制轉(zhuǎn)換為十進制二進制轉(zhuǎn)換為八進制十進制轉(zhuǎn)換為二進制八進制轉(zhuǎn)換為十六進制八進制轉(zhuǎn)換為十進制十進制轉(zhuǎn)換為八進制十進制轉(zhuǎn)換為十六進制十六進制轉(zhuǎn)換為十進制十六進制轉(zhuǎn)換為二進制十六進制轉(zhuǎn)換為八進制 整個系統(tǒng)的設(shè)計框圖選擇菜單 輸入選擇輸入轉(zhuǎn)換的進制數(shù)子程序調(diào)用輸出轉(zhuǎn)換后的數(shù)據(jù)循環(huán)操作退出退出時,加了一個文本界面,用到dios中斷,int 10h 子程序之間調(diào)用關(guān)系框圖我們的這個程序主要就是用到的子程序的調(diào)用和大量的宏定義,對于輸入時的宏定義有charin,strin,numin,輸出時的宏定義有charout,st
4、rout,numout,輸出的時候用到的是棧push和pop,在壓棧push時,用到了irp不定重復偽操作。定義通用inax宏,確定轉(zhuǎn)換之前的進制,例如inax cx、cx=2是把轉(zhuǎn)換之前的進制確定為2存到cx中定義通用outax宏,確定轉(zhuǎn)換之后的進制,例如outax bx、bx=2是把轉(zhuǎn)換之后的進制確定為2存到bx中通用宏charin逐個輸入轉(zhuǎn)換之前進制字符輸入的具體框圖如下:通用宏inax,來確定轉(zhuǎn)換之前的進制charin宏來逐個輸入轉(zhuǎn)換之前的字符回車(來確定輸入完成)判斷輸入的字符al=?判斷輸入的字符al=?判斷輸入的字符al=?將字符的ASCII碼轉(zhuǎn)換成數(shù)值送到ax中ax=?axax
5、*cxax出棧ax=0!=0<009>9<AAAZ>F<a or >zaz 輸出的具體框圖如下通用宏outax,確定轉(zhuǎn)換之后的進制判斷第一步的ax為多少判斷之前保存的余數(shù)ax/bxal商dx余數(shù)把dx壓入堆棧保存,保存之后清空dxcxcx+1用來記錄余數(shù)個數(shù)把它的ASCII碼加上55得到相應的字符逐個輸出繼續(xù)執(zhí)行直到ax為0不為0輸出后返回上一步處理下一個余數(shù)直到堆棧中沒有余數(shù)>10<10直接輸出四、代碼及分析程序運行源代碼如下:;*data segment space db 1000 dup(' ')str1 db 10 dup
6、(' '),9 dup(' '),'Welcome to shuzhizhuanhuan!',52 dup(' ')str12 db 240 dup (' '),9 dup(' '),'Thank you!',412 dup(' ')clear_screen MACRO ;清屏宏定義 mov ah,06h mov al,0 mov bh,0f0h ;白底黑字 mov ch,0 ;從0行0列到23行79列清屏 mov cl,0 mov dh,23 mov dl,79 i
7、nt 10h mov dx,0 ;光標在左上角 mov ah,2 int 10h ;調(diào)用biosENDMmenu db 10,13,'*' db10,13,'*'db10,13,'* please choice action: *'db10,13,'* a.binary 2 to octal 8 *'db10,13,'* b.binary 2 to decimal 10 *' db10,13,'* c.binary 2 to hexadecimal 16 *' db10,13,'* d.oc
8、tal 8 to binary 2 *' db10,13,'* e.octal 8 to decimal 10 *' db10,13,'* f.octal 8 to hexadecimal 16 *' db10,13,'* g.decimal 10 to binary 2 *' db10,13,'* h.decimal 10 to octal 8 *' db10,13,'* i.decimal 10 to hexadecimal 16 *' db10,13,'* j.hexadecimal 16 t
9、o binary 2 *' db10,13,'* k.hexadecimal 16 to octal 8 *' db10,13,'* l.hexadecimal 16 to decimal 10 *'db10,13,'* m.exit *'db10,13,'*',10,13,'$'*;2進制轉(zhuǎn)換為16進制和10進制和8進制str2db10,13,'please input the binary string:',10,13, '$'str21db'the hexade
10、cimal string is:',10,13, '$'str22db'the decimal string is:',10,13, '$'str23db'the octal string is:',10,13, '$'16進制轉(zhuǎn)換為2進制和8進制和10進制str3db10,13,'please input the hexadecimal string:',10,13, '$'str31db'the binary string is:',10,13, '
11、;$'str32db'the octal string is:',10,13, '$'str33db'the decimal string is:',10,13, '$'10進制轉(zhuǎn)換為2進制和8進制和16進制str4db10,13,'please input the decimal string:',10,13, '$'str41db'the binary string is:',10,13, '$'str42db'the octal string i
12、s:',10,13, '$'str43db'the hexadecimal string is:',10,13, '$'8進制轉(zhuǎn)換為2進制和10進制和16進制str5db10,13,'please input the octal string:',10,13, '$'str51db'the binary string is:',10,13, '$'str52db'the decimal string is:',10,13, '$'str53db
13、'the hexadecimal string is:',10,13, '$'str0 db 10,13,'ERROR! please input am:',13,10,'$'在數(shù)據(jù)段定義字符,數(shù)字,字符串的輸入輸出的宏定義;*charin macro;字符輸入mov ah,01hint 21hendm;*numin macro ;數(shù)字輸入charin ;調(diào)用charin宏定義sub al,48 ;48d=30h,將字符轉(zhuǎn)換為數(shù)字endm;*strin macro stringin;字符串輸入lea dx,stringinmov
14、ah,0ahint 21hendm;*charoutmacro outchar ;字符輸出 irp rec,<ax,dx>不定重復偽操作 push rec endm;push ax;push dxmov dl, outcharmov ah, 02hint 21hpop dxpop axendm;*numoutmacro outnum ;數(shù)字輸出push axpush dxmov dl, outnumadd dl, 48mov ah, 02hint 21hpop dxpop axendm;*stroutmacro stringout;字符串輸出push axpush dxlea dx
15、, stringoutmov ah, 9int 21hpopdxpopaxendmdataendsstack segment stackdw 200 dup(?)stack ends;*code segmentassume cs:code,ds:data,es:data,ss:stack;*endl macro irp x,<ax,bx,cx,dx>不定重復偽操作 push x endm;push ax;push bx;push cx;push dxmov dl, 0ah;回車換行mov ah, 2int 21hmov dl, 0dhint 21hpop dxpop cxpop b
16、xpop axendm;*outaxmacrobasenumpush axpush bxpush cxpush dxmov bx, basenumcall outaxppop dxpop cxpop bxpop axendm;*outaxpprocmov dx,0mov cx,0outaxp_circle:cmp ax,0je outaxp_nextdiv bxpush dxmov dx,0inc cxjmp outaxp_circleoutaxp_next:pop axcmp al,10jb noutadd al,55 ;55d=37hcharout aljmp coutnout:numou
17、t alcout:loop outaxp_nextretoutaxpendp;*inax macro basenumpush bxpush cxpush dxmov cx, basenumcall inaxppop dxpop cxpop bxendm;*inaxpprocmovax,0inaxp0:push axinaxp1:charincmp al, 13 ;判斷輸入的是不是回車jeinaxecmp al, '0'jbinaxp1cmp al, '9'jainaxnext1subal, 48jmp inaxnuminaxnext1:cmp al, '
18、A'jbinaxp1cmp al, 'F'jainaxnext2subal, 55jmp inaxnuminaxnext2:cmp al, 'a'jbinaxp1cmp al, 'z'jainaxp1subal, 87jmp inaxnuminaxnum:mov bh, 0mov bl, alpopaxcmp ax, 0jeinaxaddmul cxinaxadd:add ax, bxjmp inaxp0inaxe:popaxretinaxp endp;*start: mov ax,datamov ds,axmov es,ax lea b
19、p,space mov dx,0b00h mov cx,1000 mov bx,0020h mov ax,1300h int 10h lea bp,str1;顯示welcome mov dx,0600h mov cx,120 mov bx,000eh mov ax,1301h int 10h display: strout menucharincmp al,'a'je bin2_oct8jl errcmp al,'b'je bin2_dec10cmp al,'c'je bin2_hex16cmp al,'d'je oct8_bin
20、2cmp al,'e'je oct8_dec10cmp al,'f'je oct8_hex16cmp al,'g'je dec10_bin2cmp al,'h'je dec10_oct8cmp al,'i'je dec10_hex16cmp al,'j'je hex16_bin2cmp al,'k'je hex16_oct8cmp al,'l'je hex16_dec10cmp al,'m'je exitcmp al,'n'jnl er
21、rclear_screen jmpdisplayerr: strout str0 jmp display;*bin2_hex16: ;二進制轉(zhuǎn)換strout str2inax 2endlstrout str21outax 16jmp displaybin2_dec10:strout str2inax 2endlstrout str22outax 10jmp displaybin2_oct8:strout str2inax 2endlstrout str23outax 8jmp display;*hex16_bin2: ;十六進制轉(zhuǎn)換strout str3inax 16endlstrout st
22、r31outax 2jmp displayhex16_oct8:strout str3inax 16endlstrout str32outax 8jmp displayhex16_dec10:strout str3inax 16endlstrout str33outax 10jmpdisplay;*dec10_bin2: ;十進制轉(zhuǎn)換strout str4inax 10endlstrout str41outax 2jmp displaydec10_oct8:strout str4inax 10endlstrout str42outax 8jmp displaydec10_hex16:strout str4inax 10endlstrout str43outax 16jmp display;*oct8_bin2: ;八進制轉(zhuǎn)換strout str4inax 8endlstrout str41outax 2jmp displayoct8_dec10:strout str4inax 8endlstrout str42outax 10jmp displayoct8_hex16:strout str4inax
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年中國弧形超薄燈箱市場調(diào)查研究報告
- 幼兒園暑假假期安全教育
- 2025年中國埋地燈玻璃蓋市場調(diào)查研究報告
- 2025年中國噴塑簡易手推車市場調(diào)查研究報告
- DB3303T074-2024電梯標志使用規(guī)范
- 2025年中國雙作用千斤頂市場調(diào)查研究報告
- DB3301T 0477.4-2024杭幫菜 第4部分:叫化童雞
- 工具車輛租賃合同協(xié)議
- 社保維修合同協(xié)議書范本
- 砍伐樹林合同協(xié)議書范本
- 汽車產(chǎn)業(yè)智能化升級路徑-深度研究
- 研發(fā)中心工作流程
- 出租羊場合同范例
- 任務5 制作學院網(wǎng)站導航條
- 衛(wèi)星導航定位技術(shù)與應用知到智慧樹章節(jié)測試課后答案2024年秋南京工業(yè)大學
- 開封市第二屆職業(yè)技能大賽無人機裝調(diào)檢修項目技術(shù)文件(國賽項目)
- 開題報告:高等職業(yè)院校雙師型教師評價指標體系構(gòu)建研究
- 醫(yī)療救助政策
- 浙江省寧波市余姚市2024年中考英語模擬試題(含答案)
- 服務質(zhì)量保障措施方案
- 機場能源管理
評論
0/150
提交評論