匯編十六進制數(shù)與十進制數(shù)_第1頁
匯編十六進制數(shù)與十進制數(shù)_第2頁
匯編十六進制數(shù)與十進制數(shù)_第3頁
匯編十六進制數(shù)與十進制數(shù)_第4頁
匯編十六進制數(shù)與十進制數(shù)_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

北華航天工業(yè)學(xué)院課程設(shè)計報告(論文)設(shè)計課題:代碼轉(zhuǎn)換(十六進制數(shù)向十進制數(shù)之間的轉(zhuǎn)換)專業(yè)班級:電子信息工程學(xué)生姓名:指導(dǎo)教師:設(shè)計時間: 2010年12月19日

北華航天工業(yè)學(xué)院電子工程系微機原理課程設(shè)計任務(wù)書姓名:專業(yè):電子信息工程班級:指導(dǎo)教師:職稱:課程設(shè)計題目:代碼轉(zhuǎn)換(十六進制數(shù)向十進制數(shù)之間的轉(zhuǎn)換)已知技術(shù)參數(shù)和設(shè)計要求:編程實現(xiàn)十六進制數(shù)向十進制數(shù)之間的轉(zhuǎn)換。學(xué)習(xí)數(shù)值和數(shù)值的相互轉(zhuǎn)換方法。按屏幕提示要求輸入,從屏幕上獲得正確結(jié)果。實現(xiàn)循環(huán)運行。所需儀器設(shè)備:計算機成果驗收形式:1.筆試2.屏幕顯示3.設(shè)計報告參考文獻:微機原理與接口技術(shù)8086實驗指導(dǎo)書時間安排第十六周:編輯程序進行調(diào)試第十七周:驗收指導(dǎo)教師: 教研室主任:TOC\o"1-5"\h\z內(nèi)容摘要 1\o"CurrentDocument"一?課設(shè)概述 2\o"CurrentDocument"設(shè)計內(nèi)容 2\o"CurrentDocument"實驗要求 2\o"CurrentDocument"實驗?zāi)康?2\o"CurrentDocument"設(shè)計環(huán)境 2\o"CurrentDocument"Masmforwindow集成實驗環(huán)境介紹 2\o"CurrentDocument"DOS系統(tǒng)功能調(diào)用 2\o"CurrentDocument"匯編語言的上機過程 3\o"CurrentDocument"設(shè)計方案 4\o"CurrentDocument"設(shè)計思想 4\o"CurrentDocument"設(shè)計方案 4\o"CurrentDocument"總原理圖 6\o"CurrentDocument"程序清單 6\o"CurrentDocument"方法一 6\o"CurrentDocument"方法二 9\o"CurrentDocument"運行結(jié)果 12\o"CurrentDocument"實驗體會 12\o"CurrentDocument"參考文獻 13內(nèi)容摘要匯編語言是一種面向計算機的程序設(shè)計語言,和機器語言相比,匯編語言編寫程序可以用助記符來表示指令的操作碼和操作數(shù),也可以用標(biāo)號來替代地址,常量和變量,還引入了新的匯編指令——偽指令和宏指令。高級程序設(shè)計語言使用了更接近人們的自然語言和習(xí)慣的教學(xué)語言來描述具體的算法,使編寫的程序更加直觀和簡練。高級語言通常都包含有各種函數(shù)計算,字符串處理,數(shù)據(jù)I/O等功能。高級語言通常是獨立于具體機器的,程序員可不必了解機器的指令系統(tǒng)和內(nèi)部的具體結(jié)構(gòu),可以把精力集中在正確掌握語言的語法桂策和程序運算上。編寫的程序容易被閱讀和修改。此次課設(shè)內(nèi)容以微軟公司的宏匯編MASM為背景,主要學(xué)習(xí)匯編的語法規(guī)則,同時應(yīng)用一些磁盤操作系統(tǒng)的功能調(diào)用和基本輸入輸出系統(tǒng)的中斷調(diào)用。DOS是用戶和微型計算機之間的接口,用戶依靠DOS來管理微型計算機。DOS向用戶提供了許多命令及系統(tǒng)功能,用戶可以在DOS提示符下鍵入命令來實現(xiàn)對計算機的操作。課設(shè)中多次用到DOS指令。索引關(guān)鍵詞:匯編語言偽指令宏指令DOS中斷課設(shè)概述設(shè)計內(nèi)容:編程實現(xiàn)十六進制數(shù)向十進制數(shù)之間的轉(zhuǎn)換。實驗要求:編程實現(xiàn)十六進制數(shù)向十進制數(shù)之間的轉(zhuǎn)換。實驗?zāi)康模簩W(xué)習(xí)數(shù)值和數(shù)值的相互轉(zhuǎn)換方法,并熟練掌握匯編語言語法的使用,DOS系統(tǒng)功能調(diào)用,并學(xué)習(xí)循環(huán)結(jié)構(gòu)的設(shè)計。設(shè)計環(huán)境Masmforwindow集成實驗環(huán)境介紹MasmforWindows集成實驗環(huán)境是從事一線教學(xué)的大學(xué)教師針對匯編語言初學(xué)者的特點開發(fā)的一個簡單易用的匯編語言的學(xué)習(xí)軟件,它具有錯誤信息自動定位、關(guān)鍵字實時幫助(動畫演示匯編指令執(zhí)行過程)、語法著色、無限的撤消與恢復(fù)、WORD式的查找、替換、定位、支持中文長文件名、軟件可以安裝在任意文件夾等功能。DOS系統(tǒng)功能調(diào)用使用DOS提供的程序控制硬件。優(yōu)點是兼容性好,使用方便。DOS是IBMPC系列微機的操作系統(tǒng)(現(xiàn)在的微機仍能運行DOS,而且新的操作系統(tǒng)也能繼續(xù)提供幾乎所有的DOS功能調(diào)用)負(fù)責(zé)管理系統(tǒng)的所有資源,協(xié)調(diào)微機的操作,其中包括大量可供用戶調(diào)用的服務(wù)程序。DOS的功能調(diào)用不依賴于具體的硬件系統(tǒng)。所有的DOS系統(tǒng)功能調(diào)用都是利用軟件中斷指令I(lǐng)NT21H來實現(xiàn)的。也就是說,在程序中需要調(diào)用DOS功能的時候,只要使用一條INT21H指令即可。INT21H是一個具有90多個子功能的中斷服務(wù)程序,這些子功能大致可以分為四類:設(shè)備管理、目錄管理、文件管理和其他。其功能一覽表可參見附錄。為了方便用戶使用這些子功能,INT21H對每一個子功能都進行了編號——稱為功能號。這樣,用戶就能通過指定功能號來調(diào)用INT21H的不同子功能。DOS系統(tǒng)功能調(diào)用的方法如下:AH->功能號。在其他寄存器中放入該功能所要求的人口參數(shù)。在執(zhí)行INT21H指令。分析出口參數(shù)。匯編語言的上機過程源文件的建立和匯編:1(1)建立源程序文件規(guī)定源程序文件的擴展名為.ASM(2)匯編源程序文件檢查源程序中的語法錯誤并給出出錯信息I產(chǎn)生目標(biāo)文件(OBJ文件),列表文件(LST文件)和對應(yīng)文件(CRF文件)I展開宏指令目標(biāo)文件的鏈接:找到要連接的所有目標(biāo)文件確定所有段地址的地址值(3)確定所有浮動地址和外部符號所對應(yīng)的存儲地址ir(4)生成.EXE可執(zhí)行文件執(zhí)行文件的調(diào)用設(shè)計方案1.設(shè)計思想在計算機系統(tǒng)中有多種數(shù)制和編碼,常用的數(shù)制有二進制、八進制以及十六進制,常用的代碼有BCD碼、ASCII碼和七段顯示碼等。這些數(shù)制和編碼根據(jù)其作用的不同,在存儲形式上也有差異。在實際應(yīng)用中,它們也因使用的要求不同而有所差異。在配備操作系統(tǒng)管理程序的計算機中,有些代碼轉(zhuǎn)換程序已在系統(tǒng)管理軟件中編好。還有些代碼轉(zhuǎn)換需要根據(jù)使用要求通過編程完成。因此,代碼轉(zhuǎn)換是非數(shù)據(jù)處理中最常見的情況。十六進制向十進制的轉(zhuǎn)換分成兩個大的步驟。一是從十六進制向二進制的轉(zhuǎn)換,由于十六進制和二進制的特殊關(guān)系,它們之間的轉(zhuǎn)換非常簡單。二是從二進制轉(zhuǎn)換為十進制,相對而言,這種轉(zhuǎn)換復(fù)雜一些。所以該模塊的核心是實現(xiàn)二進制數(shù)向十進制數(shù)的轉(zhuǎn)換。方法是將要轉(zhuǎn)換的二進制數(shù)預(yù)先放到AX寄存器中,判斷AX中數(shù)的符號,若為負(fù)數(shù),則將負(fù)號送入輸出緩沖區(qū),并求AX的絕對值;若AX中的數(shù)為正數(shù),則不做其他處理,此時AX中即為無符號二進制數(shù)。然后將無符號二進制數(shù)轉(zhuǎn)換成十進制數(shù),可采用將AX除以10,得到第一個商和第一個余數(shù),第一個余數(shù)就是所求十進制數(shù)的個位:將第一個商除以10,得到第二個商和余數(shù),第二個余數(shù)就是所求十進制數(shù)的十位數(shù),重復(fù)以上過程,一直循環(huán)到商為0時,得到的余數(shù)就是所求十進制數(shù)的最高位數(shù)。這就是數(shù)制轉(zhuǎn)換中常用的“除模留余倒排列”法則。2.設(shè)計方案(1)實現(xiàn)十六進制數(shù)向二進制數(shù)的轉(zhuǎn)換第一步:實現(xiàn)十六進制數(shù)的輸入和對應(yīng)二進制數(shù)的轉(zhuǎn)換。利用DOS系統(tǒng)功能中的1號輸入字符的功能,接收輸入的十六進制數(shù),將其轉(zhuǎn)換成對應(yīng)的二進制數(shù)(若是0-9之間的數(shù)直接屏蔽高4位,若是A-F之間的書在屏蔽高4位后還要加9)。BX中存放的是二進制數(shù)的結(jié)果,利用算數(shù)左移指令講BX左移4位,然后與下一次轉(zhuǎn)換后的數(shù)相加。如此循環(huán)4次,得到對應(yīng)的二進制數(shù)。第二步:實現(xiàn)顯示轉(zhuǎn)化后的二進制數(shù)。利用ROL和RCL指令,從最高為起循環(huán)取出每位二進制數(shù),將其轉(zhuǎn)換成對應(yīng)的ASSCII碼,調(diào)用DOS系統(tǒng)功能調(diào)用中2號功能顯示。(2) 實現(xiàn)二進制數(shù)向十六進制數(shù)的轉(zhuǎn)換。用循環(huán)左移指令ROL每次移動4位,取出移到最低的4位,利用十六進制數(shù)所對應(yīng)的ASSCII碼比其本身大30H(0-9)或37H(A-Z)的關(guān)系,將低4位轉(zhuǎn)換成所對應(yīng)的ASSCII碼,在調(diào)用DOS系統(tǒng)功能2號(顯示字符)功能,將轉(zhuǎn)換后的字符顯示出來,如此循環(huán)四次。(3) 本程序的難點是如何把二進制轉(zhuǎn)化為十進制,并將其輸出。我們采用了除以10,把取余數(shù)保存的方法,現(xiàn)在以十進制數(shù)132為例,采用除以10并取余的方法,主要是因為不知道有二進制轉(zhuǎn)化的真值所構(gòu)成的十進制數(shù)有幾位。132/10=13……..2 保存2,又因為13!=0,所以繼續(xù)運算13/10=1 ..3 保存3,又因為1!=0,所以繼續(xù)運算1/10=0 1 保存1,0==0,所以結(jié)束此運算如下圖所示:經(jīng)過相關(guān)處理,把保存的數(shù)據(jù)變成0-9的ASSCII碼。所以保存的數(shù)據(jù)為:2” “3” “1在經(jīng)過轉(zhuǎn)置,把倒序的結(jié)果順序化,得到結(jié)果:1” “3” “2這樣就解決了二進制轉(zhuǎn)化為十進制數(shù)的算法??傇韴D開始顯示菜單信息程序清單1.方法一CODESEGMENTMAINPROCFAR

ASSUMECS:CODESTART:CALLHEXIBIN;16-2CALLCRLF;換行CALLBINIDEC;2-10CALLCRLFJMPMAIN;getnextinputRETMAINENDPHEXIBINPROCNEARMOVBX,0;clearBXfornumberNEWCHAR:MOVAH,01H;keyboardinputINT21H;callDOSSUBAL,30H;ASCIItobinaryJLEXIT;jumpif<0CMPAL,10D;isit>9dJLADD_TO;yes,soit,sdigit;notdigit(0-9),maybeletter(atof)SUBAL,27H;convertASCIItobinaryCMPAL,0AH;isit<0ahex?JLEXIT;yes,notletterCMPAL,10H;isit>0fhex?JGEEXIT;yes,notletterishexdigit,addtonumberinBXADD_TO:MOVCL,4SHLBX,CLMOVAH,0

ADD BX,AXJMP NEWCHAREXIT:RETHEXIBINENDPBINIDECPROCNEARMOVCX,10000DCALLDEC_DIVMOVCX,1000DCALLDEC_DIVMOVCX,100DCALLDEC_DIVMOVCX,10DCALLDEC_DIVMOVCX,1DCALLDEC_DIVRETDEC_DIVPROCNEARMOVAX,BX;numberlowhalfMOVDX,0;zeroouthighhalfDIVCXMOVBX,DX;remainderintoBXMOVDL,AL;quotientintoDL;printthe,contentsofDLonscreenADDDL,30H;converttoASCIIMOVAH,02HINT21HRETDEC_DIV ENDPBINIDEC ENDPCRLF PROC NEARMOV DL,0AHMOV AH,02HINT 21HMOV DL,0DHMOV AH,02HINT 21HRETCRLF ENDPCODE ENDSEND START2.方法二datasegmentmdw10dup(?)recdb5dup(?);記錄因子MESSAGE5DB,Welcometothesystem!',13,10,13,10DB'ThefunctionoftheprogramischangingH(16)numbersintoD(10)numbers.',13,10DB,Pleaseenterthenumber....',13,10,13,10,'$'dataendscodesegmentmainprocfarassumecs:code,ds:datastart:pushdsmovax,datamovds,axmovbx,0LEADX,MESSAGE5MOVAH,09HINT21H ;輸出提示語newchar:movah,1;鍵盤輸入int21hsubal,30hjlini;<0輸出cmpal,10jladd_tosubal,27h; ‘a(chǎn)’~‘f’cmpal,0ahjlini;<‘a(chǎn)’輸出cmpal,10hjgeini;>’f’輸出add_to:movcl,4shlbx,clmovah,0addbx,axmovm,bxjmpnewcharini:movax,mmovbx,10movsi,4change:movdx,0divbxmov[rec+si],dldecsicmpax,0jachangeoutput:incsimovdl,[rec+si]adddl,30hmovah,02hint21hcmpsi,4jboutputmovdl,20hmovah,02hint21hexit:movah,4chint21hmainendpcodeendsendstart

運行結(jié)果通過設(shè)計和編寫程序代碼,運行程序后,其結(jié)果先為顯示開始界面幾位菜單界面,而后隨意輸入一個十六進制數(shù),打完字敲回車,馬上出現(xiàn)所對應(yīng)的十進制數(shù)。同時,再打回車,可以再輸入十六進制數(shù),并且可以循環(huán)運行。輕松匯編-F:\學(xué)習(xí)\微機課設(shè)'新建文件夾環(huán).asm o向)咨|文件舊端輯(E)宣坦F)苗(R)設(shè)置(S)?OlWl幫助(H)口口口口口-.....s-'..s-'..s-'...s-'加[Inactive口口口口口-.....s-'..s-'..s-'...s-'加[Inactiveword3.Ex司W(wǎng)elcometothesysten?ThefunctionoftheprogramischangingH<16>numbersintoD<10>nunbers.Pleaseenterthenumber....13092lhersintoD(10)numbers.*,13r10交叉文件 映象文件 匯編程序華送行成功!實驗體會通過這次的課程設(shè)計,讓我們對匯編語言有了更

溫馨提示

  • 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)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論