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

下載本文檔

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

文檔簡介

1、課程設(shè)計報告(論文)設(shè)計課題:代碼轉(zhuǎn)換(十六進制數(shù)向十進制數(shù)之間課程設(shè)計報告(論文)設(shè)計課題:代碼轉(zhuǎn)換(十六進制數(shù)向十進制數(shù)之間內(nèi)容摘要匯編語言是一種面向計算機的程序設(shè)計語言,和機器語言相比,匯編語言編寫程序可以用助記符來表示指令的操作碼和操作數(shù),也可以用標(biāo)號來替代地址,常量和變量,還引入了新的匯編指令偽指令和宏指令。高級程序設(shè)計語言使用了更接近人們的自然語言和習(xí)慣的教學(xué)語言來描述具體的算法,使編寫的程序更加直觀和簡練。高級語言通常都包含有各種函數(shù)計算,字符串處理,數(shù)據(jù)I/O等功能。高級語言通常是獨立于具體機器的,程序員可不必了解機器的指令系統(tǒng)和內(nèi)部的具體結(jié)構(gòu),可以把精力集中在正確掌握語言的語

2、法桂策和程序運算上。編寫的程序容易被閱讀和修改。此次課設(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è)概述1.設(shè)計內(nèi)容:編程實現(xiàn)十六進制數(shù)向十進制數(shù)之間的轉(zhuǎn)換。2.實驗要求:編程實現(xiàn)十六進制數(shù)向十進制數(shù)之間的轉(zhuǎn)換。3.實驗?zāi)康模簩W(xué)習(xí)數(shù)值和數(shù)值的相互轉(zhuǎn)換方法,并熟練掌握匯編語言語法的使

3、用,DOS系統(tǒng)功能調(diào)用,并學(xué)習(xí)循環(huán)結(jié)構(gòu)的設(shè)計。二設(shè)計環(huán)境1.Masm for window集成實驗環(huán)境介紹Masm for Windows 集成實驗環(huán)境是從事一線教學(xué)的大學(xué)教師針對匯編語言初學(xué)者的特點開發(fā)的一個簡單易用的匯編語言的學(xué)習(xí)軟件,它具有錯誤信息自動定位、關(guān)鍵字實時幫助(動畫演示匯編指令執(zhí)行過程)、語法著色、無限的撤消與恢復(fù)、WORD式的查找、替換、定位、支持中文長文件名、軟件可以安裝在任意文件夾等功能。2.DOS系統(tǒng)功能調(diào)用使用DOS提供的程序控制硬件。優(yōu)點是兼容性好,使用方便。DOS是IBM PC系列微機的操作系統(tǒng)(現(xiàn)在的微機仍能運行DOS,而且新的操作系統(tǒng)也能繼續(xù)提供幾乎所有的D

4、OS功能調(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)NT 21H來實現(xiàn)的。也就是說,在程序中需要調(diào)用DOS功能的時候,只要使用一條INT 21H指令即可。INT 21H是一個具有90多個子功能的中斷服務(wù)程序,這些子功能大致可以分為四類:設(shè)備管理、目錄管理、文件管理和其他。其功能一覽表可參見附錄。為了方便用戶使用這些子功能,INT 21H對每一個子功能都進行了編號稱為功能號。這樣,用戶就能通過指定功能號來調(diào)用INT 21H的不同子功能。DOS系統(tǒng)功能調(diào)用的方法如下:(1)-

5、>功能號。(2)在其他寄存器中放入該功能所要求的人口參數(shù)。(3)在執(zhí)行INT 21H指令。(4)分析出口參數(shù)。3.匯編語言的上機過程 源文件的建立和匯編:(1)建立源程序文件 規(guī)定源程序文件的擴展名為.ASM(2)匯編源程序文件 檢查源程序中的語法錯誤并給出出錯信息產(chǎn)生目標(biāo)文件(OBJ文件),列表文件(LST文件)和對應(yīng)文件(CRF文件)展開宏指令目標(biāo)文件的鏈接:(1) 找到要連接的所有目標(biāo)文件(2) 確定所有段地址的地址值(3) 確定所有浮動地址和外部符號所對應(yīng)的存儲地址(4) 生成.EXE可執(zhí)行文件執(zhí)行文件的調(diào)用三設(shè)計方案1.設(shè)計思想在計算機系統(tǒng)中有多種數(shù)制和編碼,常用的數(shù)制有二進制

6、、八進制以及十六進制,常用的代碼有BCD碼、ASCll碼和七段顯示碼等。這些數(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寄

7、存器中,判斷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號輸入字符的功能,

8、接收輸入的十六進制數(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)

9、換成所對應(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=01 保存1,0=0,所以結(jié)束此運算如下圖所示:經(jīng)過相關(guān)處理,把保存的數(shù)據(jù)變成0-9的ASSCII碼。所以保存的數(shù)據(jù)為:“2”“3”“1”在經(jīng)過轉(zhuǎn)置,把倒序

10、的結(jié)果順序化,得到結(jié)果:“1”“3”“2”這樣就解決了二進制轉(zhuǎn)化為十進制數(shù)的算法。四總原理圖開始顯示菜單信息調(diào)入鍵盤輸入判斷輸入Y or N調(diào)用BINIDEC子程序轉(zhuǎn)換結(jié)束為N調(diào)用HEXIBIN子程序為Y五程序清單CODE SEGMENT MAIN PROC FAR ASSUME CS:CODE START: CALL HEXIBIN ;16-2 CALL CRLF ;換行CALL BINIDEC ;2-10 CALL CRLF JMP MAIN ;get next input RET MAIN ENDP HEXIBIN PROC NEAR MOV BX,0 ;clear BX for num

11、ber NEWCHAR: MOV AH,01H ;keyboard input INT 21H ;call DOS SUB AL,30H ;ASCII to binary JL EXIT ;jump if<0 CMP AL,10D ;is it > 9d JL ADD_TO ;yes,so it's digit ;not digit(0-9),may be letter(a to f) SUB AL,27H ;convert ASCII to binary CMP AL,0AH ;is it <0a hex? JL EXIT ;yes,not letter CMP A

12、L,10H ;is it > 0f hex? JGE EXIT ;yes,not letter ;is hex digit,add to number in BX ADD_TO: MOV CL,4 SHL BX,CL MOV AH,0 ADD BX,AX JMP NEWCHAR EXIT: RET HEXIBIN ENDP BINIDEC PROC NEAR MOV CX,10000D CALL DEC_DIV MOV CX,1000D CALL DEC_DIV MOV CX,100D CALL DEC_DIV MOV CX,10D CALL DEC_DIV MOV CX,1D CALL

13、 DEC_DIV RET DEC_DIV PROC NEAR MOV AX,BX ;number low half MOV DX,0 ;zero out high half DIV CX MOV BX,DX ;remainder into BX MOV DL,AL ;quotient into DL ;print the contents of DL on screen ADD DL,30H ;convert to ASCII MOV AH,02H INT 21H RET DEC_DIV ENDP BINIDEC ENDP CRLF PROC NEAR MOV DL,0AH MOV AH,02

14、H INT 21H MOV DL,0DH MOV AH,02H INT 21H RET CRLF ENDP CODE ENDS END START六運行結(jié)果通過設(shè)計和編寫程序代碼,運行程序后,其結(jié)果先為顯示開始界面幾位菜單界面,而后隨意輸入一個十六進制數(shù),打完字敲回車,馬上出現(xiàn)所對應(yīng)的十進制數(shù)。同時,再打回車,可以再輸入十六進制數(shù),并且可以循環(huán)運行。七實驗體會通過這次的課程設(shè)計,讓我們對匯編語言有了更進一步的認(rèn)識,加強了我們用匯編語言的能力。并經(jīng)過修改,完成了簡單的設(shè)計。匯編語言程序設(shè)計是一門很抽象的科學(xué),學(xué)起來也比較難,但隨著學(xué)習(xí)的推進,以及上機編程,逐漸感到輕松,在這次課程設(shè)計中,讓我更加熟悉了匯編語言的一些基本的指令;掌握了匯編語言的一些基本的中斷調(diào)用功能,可以用匯編語言調(diào)用各種中斷調(diào)用功能,并由此實現(xiàn)對硬件的控制;熟練的利用子程序和宏進行編程。在設(shè)計過程中,不斷對程序進行修改,改進,增強了自己分析問題解決問題的能力:在不斷的調(diào)試中,也讓自己發(fā)現(xiàn)了自己存在的一些錯誤以及一些調(diào)試時應(yīng)注意的問題,同時也更深的理解了寄存器,存儲器等工作原理以及一些指令執(zhí)行后對它們的改變,例如,int指令會改變al的值,在編程時應(yīng)注意這方面的問題。在編寫過程中,讓我深刻的體會到了科學(xué)的嚴(yán)謹(jǐn)性。有時一個逗號或者寫錯一個字母這樣一點點小錯誤,就會產(chǎn)生很大的錯誤,導(dǎo)致調(diào)試的失敗。當(dāng)設(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

提交評論