8086系統(tǒng)匯編語言壓縮BCD碼與二進(jìn)制相互轉(zhuǎn)換_第1頁
8086系統(tǒng)匯編語言壓縮BCD碼與二進(jìn)制相互轉(zhuǎn)換_第2頁
8086系統(tǒng)匯編語言壓縮BCD碼與二進(jìn)制相互轉(zhuǎn)換_第3頁
8086系統(tǒng)匯編語言壓縮BCD碼與二進(jìn)制相互轉(zhuǎn)換_第4頁
8086系統(tǒng)匯編語言壓縮BCD碼與二進(jìn)制相互轉(zhuǎn)換_第5頁
已閱讀5頁,還剩8頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、微機(jī)原理與接口技術(shù)小班課主講人:XXX學(xué)號(hào)201207010618WARM UP寫入信息:法一:IN AL , 88H法二:MOV DX , 0088H IN AX , DX教材4.7:用兩種方法寫出從88H端口讀入信息的指令,在用兩種方法寫出從44H端口輸入數(shù)據(jù)56H的指令讀入信息:法一:MOV AL , 56H OUT 44H , AL法二:MOV AL , 56H MOV DX , 0044H OUT DX , AL MOV BX , DI LEA BX , DI DIBXMAIN QUESTION1、逐位調(diào)整法2、DAA指令法3、除十求余法4、按權(quán)展開法補(bǔ)充內(nèi)容:分析將16位二進(jìn)制數(shù)轉(zhuǎn)

2、換為十進(jìn)制數(shù)(BCD碼)的可用算法1、逐位調(diào)整法將 4 位二進(jìn)制數(shù)看作一個(gè)十六進(jìn)制位,再利用十六進(jìn)制和壓縮BCD 碼的關(guān)系進(jìn)行轉(zhuǎn)換。具體邏輯為:如果該位大于 9,則該位加 6,同時(shí)進(jìn)位。該方法雖然原理簡單,但是由于涉及到進(jìn)位操作,數(shù)據(jù)長度增加時(shí),會(huì)變得繁瑣和復(fù)雜。1、DAA指令法DAA指令法是利用二進(jìn)制加法的十進(jìn)制調(diào)整指令 DAA,直接集成了逐位調(diào)整法,對在 AL 中的由兩個(gè)壓縮的BCD 碼相加的結(jié)果進(jìn)行校正, 產(chǎn)生一個(gè)正確的BCD碼的和。因此,相對于逐位比較法,使用它可以更好的利用現(xiàn)成的匯編語言邏輯,直接實(shí)現(xiàn)將AL中的8位二進(jìn)制數(shù)轉(zhuǎn)換為2位壓縮BCD碼,邏輯最為簡單,語句也最少。但是,應(yīng)當(dāng)注

3、意的是,AL本身為 8 位寄存器,而每 4 個(gè)二進(jìn)制位表示一位壓縮 BCD 碼。因此 AL 的最大值為 99D,該方法只適合于1100100B以下的二進(jìn)制數(shù)對壓縮 BCD 碼的轉(zhuǎn)換。對于較長數(shù)據(jù),可以將其拆成以字節(jié)為單位的數(shù)據(jù)段,再使用DAA 指令法調(diào)整。EXAMPLE:START:MOV AX , DATAMOV DS , AXXOR AL , AL;AL;置零,用來存放累加結(jié)果并進(jìn)行十進(jìn)制調(diào)整BINBCD:ADD AL , 1;二進(jìn)制數(shù)多大就加幾次1,保證AL與二進(jìn)制數(shù)等值 DAA;對AL進(jìn)行壓縮BCD碼調(diào)整 DEC BINDATA;每執(zhí)行一次,二進(jìn)制數(shù)BCDDATA減一計(jì)數(shù) JNZ BI

4、NBCD;不等于就跳轉(zhuǎn)到BINBCD RET START ENDS3、除十求余法(以題4.22為例)對于待轉(zhuǎn)換二進(jìn)制數(shù),由于 BCD 轉(zhuǎn)換后大小不變,因此可假設(shè)該數(shù)本身就是以十進(jìn)制在計(jì)算機(jī)中儲(chǔ)存的,這樣就將二進(jìn)制數(shù)向 BCD 碼的轉(zhuǎn)換轉(zhuǎn)化成十進(jìn)制向 BCD 碼的轉(zhuǎn)換。于是,該數(shù)除十后得到的余數(shù)即為壓縮 BCD 碼的個(gè)位,再對商求余,得到十位,以此類推。求余的次數(shù)取決于轉(zhuǎn)換后壓縮 BCD碼的位數(shù)。但是,取出的余數(shù)為非壓縮 BCD 碼,仍需進(jìn)行相應(yīng)調(diào)整。而且,求商和余數(shù)的操作要依靠二進(jìn)中商和余數(shù)最長為 16 位,因此除十求余法只適用于16位和 16 位以下二進(jìn)制數(shù)向壓縮 BCD 碼的轉(zhuǎn)換。4、按權(quán)

5、展開法按權(quán)展開法原理簡單,是將任何數(shù)制轉(zhuǎn)換為十進(jìn)制表示方式的通用方法,也可將壓縮 BCD 碼轉(zhuǎn)換為二進(jìn)制數(shù)的方法。但是在二進(jìn)制向壓縮 BCD 碼的轉(zhuǎn)換中,要與 DAA 指令法配合操作。而且其涉及大量移位和乘法操作,語句相對復(fù)雜。4.22題:編寫一個(gè)將16位二進(jìn)制數(shù)轉(zhuǎn)換成BCD碼數(shù)的程序(除十求余法)NAME WANGYANGDATA SEGMENGT BIN DW FFFFH;定義要轉(zhuǎn)化的數(shù)為65535 BCDDAT DB 3DUP(?);轉(zhuǎn)化后的BCD碼共5位需要三字節(jié)的存放空間DATA ENDS;數(shù)據(jù)段定義結(jié)束STACK SEGMENT DB 256DUP(?);分配256字節(jié)的堆??臻gS

6、TACK ENDSCOOD SEGMENT ASSUME CS:COOD, DS:DATA, SS:STACK;代碼段定義START: PUSH DS;DS數(shù)據(jù)段入棧保護(hù) MOV AX, DATA;將本程序中的數(shù)據(jù)段首地址轉(zhuǎn)移到AX MOV DS, AX;將地址轉(zhuǎn)移到數(shù)據(jù)寄存器 MOV SI, 10;定于被除數(shù)10 LEA BX, BCDDATA+2;BX指向轉(zhuǎn)化后的BCD碼最低位 MOV CX, 3;定義循環(huán)次數(shù)為3BINTOBCD:XOR DX, DX;DX清零,用來存儲(chǔ)余數(shù) DIV SI;執(zhí)行除法運(yùn)算 MOV BX, DL; 將余數(shù)存入BX指向單元的低位 MOV DX, 0;DX再次清零

7、 DIV SI;執(zhí)行第二次除法 PUSH CX;CX入棧保護(hù) MOV CL, 4 SHL DL, CL;第二個(gè)余數(shù)左移4位作為次低位 ADD BX, DL;與最低位相加作為最低字節(jié)DEC BX;BX指向次低字節(jié)POP CX;CX出棧,仍當(dāng)做計(jì)數(shù)器,執(zhí)行完一次操作自動(dòng)減一LOOP BINTOBCD;CX不等于0就返回BINTOBCD繼續(xù)執(zhí)行 RETCOOD ENDSEND START二進(jìn)制轉(zhuǎn)化為BCD碼方法選取1)小于 100D 的二進(jìn)制數(shù)轉(zhuǎn)換為壓縮 BCD 碼四種方法都適用,但是 DAA 指令法邏輯最為簡單,指令也最少,因此為最佳選擇。2)16 位二進(jìn)制數(shù)轉(zhuǎn)換為壓縮 BCD 碼由于16 位二進(jìn)制數(shù)超出 DAA 指令范圍,只能應(yīng)用除十求余法和按權(quán)展開法。其中除十求余法比較簡單。3)位二進(jìn)制數(shù)轉(zhuǎn)換為

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論