用匯編語言編程時(shí)結(jié)果數(shù)據(jù)的顯示_第1頁
用匯編語言編程時(shí)結(jié)果數(shù)據(jù)的顯示_第2頁
用匯編語言編程時(shí)結(jié)果數(shù)據(jù)的顯示_第3頁
全文預(yù)覽已結(jié)束

下載本文檔

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

文檔簡介

用匯編語言編程時(shí)結(jié)果數(shù)據(jù)的顯示

0實(shí)現(xiàn)多種進(jìn)制的通用輸出現(xiàn)在,擁有先進(jìn)計(jì)算機(jī)語言的人的數(shù)量正在增加。在高級(jí)語言中實(shí)現(xiàn)不同數(shù)制數(shù)據(jù)的輸入輸出有專用的輸入輸出函數(shù),如C語言的Scanf()和Printf()函數(shù)能實(shí)現(xiàn)多種進(jìn)制的通用輸入輸出。而在匯編語言中要實(shí)現(xiàn)不同進(jìn)制的輸入輸出就比較麻煩,以往也有很多文章就這方面的問題進(jìn)行過探討,但所用到的方法較繁瑣,程序較長。在匯編語言中對(duì)每個(gè)數(shù)的顯示,一般都需要逐位地進(jìn)行轉(zhuǎn)換成ASCII碼才能調(diào)用系統(tǒng)顯示功能完成顯示,其中,按不同的數(shù)制要求,還要先完成數(shù)制間的轉(zhuǎn)換。下面讓我們探討一下數(shù)是如何編程實(shí)現(xiàn)按二進(jìn)制、十進(jìn)制、十六進(jìn)制的數(shù)制形式在顯示屏上顯示的。1位復(fù)雜社會(huì)分區(qū)字符串通過鍵盤輸入后,應(yīng)該先判斷輸入數(shù)據(jù)的進(jìn)制。為方便說明,以一個(gè)16位二進(jìn)制整數(shù)為例,假設(shè)此數(shù)放在BX寄存器中,則它的二進(jìn)制表示范圍是0至1111111111111111B;十進(jìn)制的范圍是0至65535D;十六進(jìn)制表示范圍是0至0FFFFH。下面介紹按不同進(jìn)制形式顯示的編程思路和算法。1.1逐位判斷cf二進(jìn)制只有“0”和“1”兩個(gè)數(shù)字,它們的ASCII碼分別是30H和31H。此時(shí),只要逐位判斷是“1”還是“0”,然后轉(zhuǎn)換成對(duì)應(yīng)的ASCII碼顯示即可。實(shí)際編程時(shí),對(duì)于BX中的16位二進(jìn)制數(shù),首先設(shè)置一個(gè)循環(huán)次數(shù)為16的循環(huán)體。方法一:利用移位指令,將二進(jìn)制數(shù)逐位放入CF標(biāo)志位,通過判斷CF的值來判斷是“1”還是“0”。首先使用向左的移位指令(ROL)把BX中的數(shù)左移一位,接著判斷標(biāo)志寄存器中的CF標(biāo)志。若CF=1,說明BX左移之前最高位是1,則顯示字符‘1’;反之,顯示字符‘0’。每次都是通過這種方式由高位到低位逐位判斷、逐位取ASCII碼值、逐位顯示。方法二:首先通過CPU標(biāo)志寄存器中的SF標(biāo)志,判斷最高有效位是否為1,若SF=1,則顯示字符‘1’;反之,顯示字符‘0’。然后再使用向左的移位指令(ROL)把BX中的二進(jìn)制數(shù)逐位左移一位放入最高位。每次都是通過這種方式由高位到低位逐位判斷、逐位取ASCII碼值、逐位顯示。1.2按10進(jìn)制形式顯示輸出十進(jìn)制數(shù)把待轉(zhuǎn)換的數(shù)(在BX中)除以10,得到第一個(gè)商和余數(shù),此時(shí)的第一個(gè)余數(shù)就是所要輸出十進(jìn)制數(shù)的個(gè)位;再用第一個(gè)商除以10,得到第二個(gè)商和余數(shù),此時(shí)的第二個(gè)余數(shù)就是所要輸出十進(jìn)制數(shù)的十位;重復(fù)這一過程直至商為0,此時(shí)的余數(shù)就是所要輸出十進(jìn)制數(shù)的最高位。然后在內(nèi)存中分配一緩沖區(qū),用來存放以上分離出來的十進(jìn)制數(shù)的每一位,再逐個(gè)轉(zhuǎn)換成ASCII碼。轉(zhuǎn)換成ASCII碼的過程很簡單,就是給每個(gè)十進(jìn)制位加上30H即可;最后送顯示器輸出。從轉(zhuǎn)換的過程可以看出,先分離出來的是十進(jìn)制數(shù)的低位,要后顯示;后分離出來的是十進(jìn)制數(shù)的高位,應(yīng)該先顯示。因此在編程時(shí),我們可以利用堆棧操作中“先進(jìn)后出、后進(jìn)先出”的特性,當(dāng)分離出各十進(jìn)制位時(shí)依次入棧,當(dāng)需要逐個(gè)轉(zhuǎn)換成ASCII碼并且顯示在屏幕上時(shí)依次出棧。沖區(qū)時(shí)的余數(shù)存儲(chǔ)此方法中,分離每一位的算法同方法一,而分配緩沖區(qū)時(shí),是先定義一個(gè)保存余數(shù)的字符串STRING,每次得到的余數(shù)在字符串中依次倒序存放。完成分離操作后,再調(diào)用系統(tǒng)顯示功能把該字符串顯示出來。被除數(shù)字將每東北部的知識(shí)都是陸上方把待轉(zhuǎn)換的數(shù)(在BX中)相繼除以10000,1000,100,10,1,所得到的商就是十進(jìn)制數(shù)的每一位。為了便于操作,把這5個(gè)數(shù)組成一個(gè)除數(shù)的字?jǐn)?shù)組DIVARRAY,采用被除數(shù)(32位2進(jìn)制數(shù),保存在DXAX中)除以除數(shù)(16位2進(jìn)制數(shù),保存在SI中)的方法實(shí)現(xiàn)。這樣,每完成一次除法操作后,就把得到的數(shù)值轉(zhuǎn)換成相應(yīng)的ASCII碼值并且顯示出來。1.3勘探bx中2位十六進(jìn)制十六進(jìn)制與二進(jìn)制有很好的對(duì)應(yīng)關(guān)系(每4位二進(jìn)制數(shù)一一對(duì)應(yīng)1位十六進(jìn)制數(shù)),顯示時(shí)只需將原二進(jìn)制數(shù)(在BX中)的每4位劃成一組,按組求對(duì)應(yīng)的ASCII碼送顯示器即可。ASCII碼與十六進(jìn)制數(shù)字的對(duì)應(yīng)關(guān)系為:30H~39H對(duì)應(yīng)數(shù)字0~9,41H~46H對(duì)應(yīng)數(shù)字A~F。需要注意的一點(diǎn),從數(shù)字9到A,其ASCII碼間隔了7H。為使一個(gè)十六進(jìn)制數(shù)能按高位到低位依次顯示,實(shí)際編程中,我們對(duì)BX中的數(shù)每次循環(huán)左移一組(4位二進(jìn)制),然后AND指令屏蔽掉當(dāng)前高12位,對(duì)當(dāng)前余下的4位(即1位十六進(jìn)制數(shù))求其ASCII碼,要判斷它是0~9還是A~F,是前者則加30H得對(duì)應(yīng)的ASCII碼,后者則要加37H才行,最后送顯示器輸出。以上步驟重復(fù)4次,就可以完成BX中數(shù)以4位十六進(jìn)制的形式顯示出來。當(dāng)然,我們還可以對(duì)BX中數(shù)的低4位判斷輸出,然后再循環(huán)右移一組(4位二進(jìn)制)。2語言源程序的例子假設(shè)要將BX寄存器中的數(shù)分別按無符號(hào)二進(jìn)制、十進(jìn)制和十六進(jìn)制顯示在屏幕上,下面給出實(shí)現(xiàn)的匯編源程序,均為子程序方式。2.1數(shù)據(jù)格式錯(cuò)誤假如(BX)=3FFFH,則輸出的數(shù)據(jù)格式為0011111111111111B,最后一位輸出大寫字母B表示二進(jìn)制形式,顯示結(jié)果固定為16位。2.2顯示結(jié)果的個(gè)數(shù)由于無符號(hào)十進(jìn)制數(shù)用16位二進(jìn)制數(shù)表示的范圍是0~65535,此程序在轉(zhuǎn)換和顯示時(shí)的循環(huán)控制方式和二進(jìn)制形式的例子不一樣,顯示結(jié)果的位數(shù)是不固定的。假如(BX)=3FFFH=16383,則顯示結(jié)果為5位:16383;若(BX)=00FFH=255,則顯示結(jié)果為3位:255。與十進(jìn)制的有效位數(shù)相同。2.3顯示格式:十六進(jìn)制由于BX寄存器是16位的,只能保存4位十六進(jìn)制數(shù),故此程序的顯示格式固定為4位.最后加上字母“H”表示為十六進(jìn)制形式。設(shè)(BX)=7FFFH,則顯示(BX)=00FFH,則顯示結(jié)果為:00FFH。4擴(kuò)展應(yīng)用程序以顯示符號(hào)數(shù)十進(jìn)制數(shù)還分為有符號(hào)數(shù)和無符號(hào)數(shù),為了在顯示是能顯示出有符號(hào)數(shù)的負(fù)號(hào)“-”,可以在程序的開始加入下段程序。5顯示功能調(diào)用指令以上介紹了在匯編語言程序設(shè)計(jì)中,根據(jù)不同的需要,如何把機(jī)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論