《微機原理與應(yīng)用教學(xué)資料》第四章(改)_第1頁
《微機原理與應(yīng)用教學(xué)資料》第四章(改)_第2頁
《微機原理與應(yīng)用教學(xué)資料》第四章(改)_第3頁
《微機原理與應(yīng)用教學(xué)資料》第四章(改)_第4頁
《微機原理與應(yīng)用教學(xué)資料》第四章(改)_第5頁
已閱讀5頁,還剩62頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第四章:宏匯編語言程序設(shè)計匯編語言程序格式MASM中的表達式偽指令語句DOS系統(tǒng)功能調(diào)用程序設(shè)計方法程序舉例1編輯ppt§4.1匯編語言程序格式匯編語言機器語言的符號表示,面向機器的語言匯編語言的特點:直接控制目標(biāo)代碼,可對輸入輸出設(shè)備進行控制,實時性好;編程效率高,節(jié)省內(nèi)存,運行速度快。源程序1.asm1.obj1.exe8086常用的匯編程序:宏匯編程序MASM一、指令性語句:生成機器代碼,由CPU來執(zhí)行格式:標(biāo)號:指令助記符操作數(shù),操作數(shù);注釋

↖字母開頭,最長31個字符匯編鏈接2編輯ppt二、偽指令語句:只提供匯編信息功能:變量定義、存儲區(qū)分配、段定義、段分配、指示程序開始、結(jié)束格式:

名字偽指令助記符操作數(shù),操作數(shù);注釋↑變量名、段名、過程名、符號名,名字后不允許有“:”三、數(shù)據(jù)項匯編語言中的操作數(shù):常數(shù)、寄存器、存儲器、變量、標(biāo)號和表達式。3編輯ppt常數(shù)

00110101B026H123D‘howareyou?’,空格(20H)變量

是內(nèi)存中的一個數(shù)據(jù)區(qū)。在程序中作為操作數(shù)使用。變量名又稱符號地址,表示該數(shù)據(jù)項中第一項所在的地址。

和常數(shù)區(qū)別:變量值可以改變。

三個屬性:段地址,段內(nèi)偏移地址,字節(jié)類型BYTE,WORD,DWORD標(biāo)號

可執(zhí)行指令語句的地址的符號表示。可作為轉(zhuǎn)移指令的目的操作數(shù)。三個屬性:段地址,段內(nèi)偏移地址,距離類型(NEAR,FAR)4編輯ppt§4.2表達式匯編的表達式為一個值組成:運算對象+運算符,運算對象與結(jié)果都是整數(shù)運算對象:常數(shù)、變量、標(biāo)號分為數(shù)字表達式和地址表達式兩種一、算術(shù)運算符:+,-,*,/,MOD,SHL,SHR所有算術(shù)運算符都可以對數(shù)據(jù)進行運算例MOVAX,5+3;(AX)=8MOVAX,(9MOD2);(AX)=1MOVAX,9/2;(AX)=42.對地址運算,只能是+,-5編輯ppt例2:ARRAYDB1,2,3,4TRYDB20MOVAX,(TRY-ARRAY);匯編后MOVAX,4例3:FIRSTDB1,2,3MOVAX,OFFSETFIRST+2二、邏輯運算符:AND,OR,NOT,XOR只能用于數(shù)字表達式中例:PORTEQU90HANDDL,PORTANDOFEH

前AND-指令助記符,在程序執(zhí)行時運算;后AND-運算符,在匯編時計算6編輯ppt三、關(guān)系運算符:EQ、NE、GT、LT、GE、LE結(jié)果為真:輸出OFFH、OFFFFH全1結(jié)果為假:全0例:PORTEQU2MOVBX,PORTLT5;MOVBX,0FFFFHMOVCX,((PORTLT5)AND100)OR((PORTGE5)AND200);若PORTLT5PORTLT5=FFFFHFFFFHAND100=100PORTGE5=00000000HAND200=0100OR0=100匯編后MOVCX,1007編輯ppt四、數(shù)值返回運算符:OFFSET、SEG、TYPE、LENGTH、SIZE1.OFFSET返回變量或標(biāo)號的偏移地址值2.SEG返回變量或標(biāo)號的段基地址值例:MOVSI,OFFSETFIRST例4-8MOVAX,SEGFIRSTMOVDS,AX

MOVDS,SEGFIRST×3.TYPE變量:返回類型屬性①DB1②DW2③DD4(字節(jié)數(shù))TYPE標(biāo)號:返回距離屬性①NEAR-1②FAR-2例4-98編輯ppt4.LENGTH變量變量中有DUP時,返回變量所包含的單元數(shù)

例nDUP():返回n

其它:返回15.SIZE=LENGTH*TYPE例:FIRSTDW1,2,3,4MDW100DUP(?)MOVAL,TYPEFIRST;MOVAL,2MOVAL,LENGTHFIRST;MOVAL,1MOVAL,SIZEFIRST;MOVAL,2MOVAL,TYPEM;MOVAL,2MOVAL,LENGTHM;MOVAL,100MOVAL,SIZEFIRST;MOVAL,2009編輯ppt五、修改屬性運算符:段操作符、PTR、THIS、HIGH、LOW、SHORT1、段操作符:例:MOVAX,ES:[BX]ES--段超越前綴2、PTR:格式:類型/距離PTR變量/標(biāo)號變量:BYTE,WORD標(biāo)號:NEAR,FAR例1:AREA1DB15H,23HAREA2DW1234HMOVAL,AREA1;√AL=15HMOVAX,AREA1;×應(yīng)為:MOVAX,WORDPTRAREA1MOVBL,BYTEPTRAREA2;BL=34H10編輯ppt例2:MOVBYTEPTR[BX],10H;[BX]←10HMOVWORDPTR[BX],10H;[BX]←0010H例3:JMPFARPTRAGAIN;實現(xiàn)段間轉(zhuǎn)移.AGAIN-標(biāo)號3、THIS

格式:變量/標(biāo)號EQUTHIS類型/距離功能:將類型/距離屬性賦予變量/標(biāo)號,且該變量/標(biāo)號的地址與下一個存儲單元相同。例1:FIRSTEQUTHISBYTETABLEDW200DUP(?);使變量FIRST與TABLE的偏移地址相同,但FIRST為字節(jié)類型,TABLE為字類型例2:SPPEQUTHISFARMOVAX,100;即SPP:MOVAX,10011編輯ppt4、SHORTSHORT標(biāo)號例:JMPSHORTL1;限制跳轉(zhuǎn)的距離在-128~+127之間5、HIGH和LOW字節(jié)分離符

HIGH/LOW變量或標(biāo)號HIGH分離出高位字節(jié)LOW分離出低位字節(jié)例:K1EQU1234HMOVAH,HIGHK1;MOVAH,34HMOVAL,LOWK1;MOVAL,12HMOVAH,HIGH1234H;×不能+立即數(shù)12編輯ppt六、其他運算符

1、()改變優(yōu)先級次序表4-32、[]①用[]表達地址表達式例:MOVCL,[BX]MOVAX,[BX+2]②用[]表示多重變量的下標(biāo)值例:M1DB10H,20H,30H,40HMOVAL,M1[3];MOVAL,40H13編輯ppt§4-3偽指令語句一、數(shù)據(jù)定義語句DBDW格式:變量名助記符操作數(shù),操作數(shù),……;注釋變量名助記符nDUP(操作數(shù),操作數(shù)……);注釋功能:將操作數(shù)存入變量名指定的存儲單元中,或者只分配存儲空間不存入數(shù)據(jù)例1:A1DB0DHA2DW?

A3DB00H,01H,03HA5DB9DUP(?)A6DB8DUP(1,2,3);共3x8=24個單元A7DB‘Howareyou?’A8DW‘OK’;

A8DW`OVER`×14編輯ppt2、等號語句=功能:同EQU,但允許重復(fù)定義例:X1=100X1EQU100X1=X1+100;X1=200X1EQU200;×15編輯ppt三、段定義語句

1、段定義語句SEGMENT…ENDS格式:段名SEGMENT

;內(nèi)容段名ENDS(上下段名必須相同)功能:將一個邏輯段定義成一個整體段名:邏輯段的標(biāo)識符,不可省略,確定了邏輯段在存儲器中的地址。

段基地址例:MOVAX,DATAMOVDS,AX

堆棧段定義:段名SEGMENT‘STACK’(不可省略)

段名ENDS說明:16編輯ppt定位類型、組合類型、分類名一般情況下可省略Data,stack,es段中,只能有偽指令Code段中,可有指令和與指令相關(guān)的偽指令17編輯ppt2、段分配語句:ASSUME

格式:ASSUMECS:段名,DS:段名,SS:段名,ES:段名功能;將存儲器中的某幾個邏輯段分別定義成代碼段、數(shù)據(jù)段、堆棧段、附加段。(指定某程序運行時,哪幾個邏輯段有效。CS、DS段是必須的,SS、ES段看情況)注意:assume指令只指定某個段分配給哪幾個段寄存器,并將代碼段的段基址自動裝入cs中,而不能把其它段基址自動裝入相應(yīng)的段寄存器中,所以,在代碼段的開始,要有一段初始化程序完成這一工作18編輯ppt四、過程定義語句

段內(nèi)調(diào)用段間格式:過程名PROC屬性(距離屬性(NEARFAR))

┇;過程內(nèi)容

RETN過程名ENDP說明:RETN中N為正偶數(shù),表示從過程返回后,堆棧指針再加上SP過程內(nèi)部至少有一條RET指令,也可以有多個,表示此過程具有多個返回出口。過程調(diào)用允許嵌套調(diào)用,遞歸調(diào)用。嵌套調(diào)用:一個被調(diào)用的過程中又調(diào)用另一個過程。遞歸調(diào)用:一個被調(diào)用的過程又調(diào)用自己

19編輯ppt五、程序開始、結(jié)束語句

1、ORG:設(shè)置位置指針,指定下面語句的起始偏移地址例:DATASEGMENTORG100HA1DB10H,20H,30H;A1的偏移地址為0100HORG200HA2DW3031H,3233HDATAENDS2、END格式:END標(biāo)號名是該程序中第一條可執(zhí)行語句的標(biāo)號名,可以缺省若一個程序中,包含多個模塊,則為主程序模塊中的標(biāo)號名稱。20編輯ppt完整的匯編語言編寫的格式DATASEGMENTDA1DB‘thisisasampleprogram’DATAENDSSTACKSEGMENT‘STACK’ST1DB100DUP(?)TOPEQULENGHTHST1

STACKENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACKSTART:MOVAX,DATA;初始化MOVDS,AX21編輯ppt

MOVAX,STACKMOVSS,AXMOVSP,TOP;設(shè)棧底………MOVAX,4C00H;返回DOSINT21HCODEENDSENDSTART例4-2922編輯ppt好的程序特點:程序結(jié)構(gòu)模塊化,易讀,易調(diào)試和維護執(zhí)行速度快占用內(nèi)存小編程基本步驟:分析問題繪制程序流程圖分配存儲空間及工作單元編程調(diào)試實際運行§4.4程序設(shè)計方法23編輯ppt1、順序程序設(shè)計

例:設(shè)計一個順序程序?qū)崿F(xiàn)兩個雙字?jǐn)?shù)的加法,結(jié)果放在加數(shù)單元中被加數(shù):變量first,四單元加數(shù):變量second,四單元和:變量second寄存器間接尋址:SI,DI累加器AX

送被加數(shù)、加數(shù)地址低位字加高位字加送低位和送高位和24編輯pptFIRSTDW1234H,5678HSECONDDW2233H,4455HMOVSI,OFFSETFIRST;MOVDI,OFFSETSECONDMOVAX,[SI]ADDAX,[DI]MOV[DI],AXMOVAX,[SI+2]ADCAX,[DI+2]MOV[DI+2],AX25編輯ppt2、分支程序設(shè)計

①多分支例:x+1x≥1y=x+21>x≥0x+3x<0假設(shè)x放在AX里

CMPAX,1JGEP1CMPAX,0JGEP2ADDAX,3

JMPP3P1:ADDAX,1

JMPP3P2:ADDAX,2P3:MOV[2000H],AXP2AX≥1?NAX≥0?NAX+1AX+3AX+2YYP1AX→[2000H]P326編輯ppt②跳轉(zhuǎn)表實現(xiàn)多分支根據(jù)表內(nèi)地址分支表地址=跳轉(zhuǎn)表首地址+偏移地址P1低位P1高位P2低位P2高位…….BASEBASE+2P1P2開始取編號求偏移量求表地址分支到相應(yīng)的分支程序27編輯ppt例4-67有8個加工子程序,入口地址分別為P1,P2,…,P8,編程實現(xiàn)檢測鍵盤輸入命令,使系統(tǒng)分別轉(zhuǎn)向8個加工子程序。用跳轉(zhuǎn)表實現(xiàn)。BASEDWP1,P2,P3,P4DECALDWP5,P6,P7,P8MOVBX,OFFSETBASEKEYDB?MOVAH,0MOVAH,1;從鍵盤輸入字符ADDAL,AL;X2INT21H;至ALADDBX,AXANDAL,0FH;ASCII→BINJMPWORDPTR[BX]例:p3子程序地址在cs:7800H開始,則BASE中第3個數(shù)據(jù)為7800H,地址DS:0004H,當(dāng)鍵盤輸入字符3→

AL=33H→AL=03H→AL=2→BX=0→AH=0→AL=2X2=4→BX=0+4=4→[BX]=[0004H]=7800H.程序轉(zhuǎn)移至CS:7800H28編輯ppt2、循環(huán)程序設(shè)計

循環(huán)初始狀態(tài)

循環(huán)體循環(huán)控制條件

Y循環(huán)初始狀態(tài)

循環(huán)控制條件

循環(huán)體NY修改參數(shù)修改參數(shù)出口循環(huán)次數(shù)固定N循環(huán)次數(shù)不固定29編輯ppt例1:題目同上,利用循環(huán)程序設(shè)計

MOVSI,OFFSETFIRSTMOVDI,OFFSETSECONDCLCCLDMOVCX,02HLI:LODSW;DS:SI→AX,SI+2→SIADCAX,[DI]STOSW;AX→ES:DI,DI+2→DILOOPLI;先執(zhí)行,后判斷30編輯ppt

例2:AX寄存器中有16位二進制數(shù),編程統(tǒng)計其中1的個數(shù),結(jié)果放到BL中

MOVBL,0;計數(shù)值清0L1:ANDAX,AX;先判斷,后執(zhí)行JZSTOP;若AX=0,則不進入循環(huán)MOVCX,16SHLAX,1JNCL2INCBLL2:JMPL1STOP:……31編輯ppt多重循環(huán)3點注意多重循環(huán)的初始控制條件內(nèi)循環(huán)可嵌套在外循環(huán)中,內(nèi)可跳到外,外不得進入內(nèi)循環(huán)不要回到初始條件,造成死循環(huán)最大數(shù)像氣泡一樣升至數(shù)組尾第二次內(nèi)循環(huán)只要N-2次

357819357189351789315789135789內(nèi)循環(huán)N-1次外循環(huán)N-1次例4-72氣泡排序。使一個數(shù)組中的數(shù)據(jù)從小到大排列。分析:內(nèi)循環(huán)N-1次單元號012345初始538791一3

58791二3587

91

三357

891四357891五35781932編輯ppt修改地址(BX+2)數(shù)i≤數(shù)i+1?兩數(shù)位置交換修改地址BX+2→BXCX-1內(nèi)循環(huán)CX=0?初始化:數(shù)組起始地址→BX外循環(huán)次數(shù)→DX內(nèi)循環(huán)次數(shù)→CX置檢測起點i=0(BX)Dx-1外循環(huán)DX=0?NNL2L1N33編輯pptDATASEGMENTBUFDWN,15,37,8600,A768H,3412H,1256H,DW76HDATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVBX,0;i=0MOVCX,BUF[BX];N→CXDECCX;N-1,內(nèi)循環(huán)次數(shù)L1:MOVDX,CX;外循環(huán)次數(shù)L2:ADDBX,234編輯ppt

MOVAX,BUF[BX]CMPAX,BUF[BX+2]JBECONTIXCHGAX,BUF[BX+2]MOVBUF[BX],AXCONTI:LOOPL2MOVCX,DXMOVBX,0;回到i=0,重新開始比較LOOPL1;CX-1:①內(nèi)循環(huán)次數(shù)N-1,N-2;②外循環(huán)次數(shù)-1MOVAX,4C00HINT21HCODEENDSENDSTART

35編輯ppt四、子程序結(jié)構(gòu)子程序說明名稱、功能存儲單元和寄存器入口和出口有否調(diào)用其它子程序主程序調(diào)用子程序注意:堆棧保護現(xiàn)場參數(shù)傳遞寄存器存儲器堆棧36編輯ppt例4-30:編程實現(xiàn)兩個BCD碼字?jǐn)?shù)據(jù)相加(完整程序)

DATASEGMENT

FIRSTDB22H,33H,44H,55H;加數(shù)1

SECONDDB55H,66H,77H,88H;加數(shù)2

SUMDB20DUP(?);定義存放結(jié)果單元

DATAENDSSTACKSEGMENT‘STACK’

STADB20DUP(?);設(shè)置堆棧長度為20個字節(jié)

TOPEQULENGTHSTASTACKENDS37編輯pptCODESEGMENTMAINPROCFARASSUMECS:CODE,DS:DATA,SS:STACK,ES:DATASTART:MOVAX,STACK;將堆棧段段地址→SSMOVSS,AX

MOVAX,TOP;將堆棧指針指向棧底MOVSP,AXPUSHDS;使得程序執(zhí)行完了,能返回DOSXORAX,AXPUSHAXMOVAX,DATA

MOVDS,AX

;MOVDS,DATA×,初始化MOVES,AX;將數(shù)據(jù)段段地址→DS、ES

MOVSI,OFFSETFIRSTMOVBX,OFFSETSECONDMOVDI,OFFSETSUM

38編輯ppt

MOVCX,04CLDCLCADBCD:CALLAAMLOOPADBCDRET;返回DOSMAINENDP;子程序入口:SI,BX出口:DI參數(shù)傳遞:存儲器AAMPROCNEAR

LODSB;DS:SI→ALSI+1→SI

ADCAL,[BX]

DAASTOSB;AL→ES:DIDI+1→DIINCBX

39編輯pptRETAAMENDPCODEENDSENDSTART40編輯ppt§4.5DOS系統(tǒng)功能調(diào)用DiskOperationSystem磁盤操作系統(tǒng)

一、DOS常用的軟中斷命令DOS具有對I/O設(shè)備管理及磁盤與文件管理功能,一部份固化在系統(tǒng)的ROM中一部份在系統(tǒng)啟動時調(diào)入內(nèi)存,通過軟件中斷來調(diào)用中斷指令:INTn表4-6DOS常用的軟中斷命令入口、出口參數(shù)41編輯ppt二、DOS系統(tǒng)功能調(diào)用

INT21H附錄FAH=功能號每個子程序?qū)?yīng)一個功能號(相應(yīng)的入口號),格式如下①功能號→AH②入口參數(shù)→指定寄存器③INT21H④根據(jù)出口參數(shù)分析功能調(diào)用執(zhí)行情況1.DOS鍵盤功能調(diào)用表4-7①鍵入單字符AH=142編輯pptMOVAH,1INT21H出口:AL=字符②鍵入字符串AH=0AH43編輯ppt2、DOS顯示功能調(diào)用表4-6①單字符操作例:MOVDL,‘$’

MOVAH,2INT21H;調(diào)用結(jié)果,屏幕上在光標(biāo)處顯示‘$’②字符串操作

AH=9的INT21H,注意串必須以‘$’結(jié)束例4-55:在屏幕上顯示‘HOWDOYOUDO?’字符串,且回車、換行。

DATASEGMENTMESDB‘HOWDOYOUDO?’,0DH,0AH,‘$’;0DH(回車),0AH(換行)

DATAENDS44編輯pptCODESEGMENTASSUMECS:CODE,DS:DATAMAIN:PUSHDSXORAX,AXPUSHAXMOVAX,DATAMOVDS,AXMOVAH,9MOVDX,OFFSETMESINT21HRETCODEENDSENDSTART字符碼功能08HOAHOCHODH退格換行換頁回車45編輯ppt

3、返回操作系統(tǒng)

4CH功能調(diào)用:能夠結(jié)束當(dāng)前正在執(zhí)行的程序,返回DOS系統(tǒng)

MOVAH,4CHINT21H46編輯ppt§4.6上機實驗參見課本及實驗指導(dǎo)書實驗一:兩個多位十進制數(shù)相減的實驗參見課本P187程序?qū)嶒灦号判驅(qū)嶒炓螅簭氖椎刂窞?000H的內(nèi)存區(qū)域開始存放10個無符號字?jǐn)?shù)據(jù)數(shù),設(shè)計程序?qū)⑦@些數(shù)從小到大排序,并將排序前后次序的顯示在屏幕上。參見課本P181及實驗指導(dǎo)書實驗十三

MOVBX,0 MOVCX,N-1 L1:MOVDX,CX L2:MOVAX,BUF[BX] CMPAX,BUF[BX+2] JBECONTI XCHGAX,BUF[BX+2] MOVBUF[BX],AXCONTI:LOOPL2 MOVCX,DX MOVBX,0

調(diào)用顯示子程序,參見P177 LOOPL147編輯ppt§4.7程序舉例:一、查表例4-64二、代碼轉(zhuǎn)換類16位二進制→ASCⅡ碼二進制←→組合BCD碼非組合BCD碼

ASCⅡ碼顯示三、算術(shù)運算類加減乘除(二進制,BCD碼)48編輯ppt例4-64內(nèi)存中TABLE開始存放0~9的平方值,通過人機對話,當(dāng)任給定一個數(shù)X(0~9),查表得X的平方值,放在AL中。TABLEDB0,1,4,9,16,25,36,49,64,81BUFDB‘Pleaseinputonenumber(0~9):’,0DH,0AH,‘$’MOVDX,OFFSETBUFMOVAH,9INT21H;顯示字符串MOVAH,1INT21H;輸入字符ANDAL,0FH;ASCII→BINMOVBX,OFFSETTABLE;查表XLATHLAT49編輯ppt例4-69將BX中的16進制數(shù)轉(zhuǎn)換為ASCII碼,存放到BUF開始的內(nèi)存單元中去,并在屏幕顯示數(shù)值轉(zhuǎn)換表:入口參數(shù):BX出口參數(shù):BUF開始的內(nèi)存單元中,SI指示。16進制數(shù)ASCII131H232H333H434H…939H…A41HB42H…50編輯pptLEASI,BUFMOVCH,4;處理4位HEXNEXT:MOVCL,4

ROLBX,CL;左移4位BINMOVAL,BLANDAL,0FHADDAL,30HCMPAL,3AHJLSTOREADDAL,7STORE:MOV[SI],ALMOVAH,2MOVDL,ALINT21H;顯示325F25F3F30333INCSIDECCHJNZNEXTHLT51編輯ppt例4-78:將一個無符號16位二進制數(shù)轉(zhuǎn)換為4位壓縮型BCD碼

算法一:千位數(shù):無符號16位二進制數(shù)/1000的商,得余數(shù)1百位數(shù):余數(shù)1/100的商,得余數(shù)2十位數(shù):余數(shù)2/10的商,得余數(shù)3個位數(shù):余數(shù)352編輯ppt7865700010007865-余數(shù)186510080065-余數(shù)2865601065-余數(shù)3程序中,7865D=1EB9H1000D=3E8H865D=361H1EB9H/3E8H=7H….361H361H/64H=8H…41H41H/0AH=6H…5H53編輯ppt復(fù)習(xí)除法:

16位/8位→商AL,余AH(AX)(源操作數(shù))

32位/16位→商AX,余DX(DX,AX)(源操作數(shù))若計算16位/16位,8位/8位,需將被除數(shù)擴展程序:入口參數(shù):AX=16位二進制數(shù)出口參數(shù):AX=4位壓縮型BCD碼(CF=0時)

占用資源:CX,DX千位百位

千位百位十位

千位百位十位個位

千位每次所得商,依次移入DXDX①DX②DX③DX④54編輯ppt

B2TOBCDPROCFARCMPAX,9999;AX〉9999,則CF=1,JBETRAN;不轉(zhuǎn)換 STC JMPEXITTRAN:PUSHCX;保護現(xiàn)場 PUSHDX XORDX,DX;∵32位/16位,需DXMOVCX,1000;求千位數(shù)

DIVCX;商在AX,余數(shù)1在DX XCHGAX,DX

;余數(shù)1在AX,千位數(shù)(商)在DX最低4位,DX=0007H55編輯ppt MOVCL,4;DX左移4位,低位添 SHLDX,CL;四個0,DX=0070H MOVCL,100;求百位數(shù)

DIVCL;商在AL,余數(shù)2在AH ADDDL,AL;百位數(shù)入DX,DX=0078H

MOVCL,4;DX左移4位,DX=0780H SHLDX,CL XCHGAH,AL;余數(shù)2在ALANDAX,00FFH;AH=0 MOVCL,10;求十位數(shù)

DIVCL;商在AL,余數(shù)3在AH

56編輯ppt

ADDDL,AL;DL=86H MOVCL,4 SHLDX,CL;DX=7860H ADDDL,AH;DX=7865H MOVAX,DX;轉(zhuǎn)換后的數(shù)入AX POPDX POPCX EXIT:RETBINTOBCDENDP算法二:把要轉(zhuǎn)換的數(shù)分別減去相應(yīng)的最高次冪,直至不夠減,此時減的次數(shù)即是相應(yīng)的位57編輯ppt例4-79將十進制數(shù)的ASCII碼轉(zhuǎn)換成有符號二進制數(shù)。算法:符號字符串→標(biāo)識符MINU。若為負(fù),MINU=1;數(shù)字字符(31H~39H)→一位十進制數(shù)(0~9)a0,a1,a2…十進制數(shù)轉(zhuǎn)換成十六進制數(shù):十六進制數(shù)=a2x100+a1x10+a0=(a2x10+a1)x10+a058編輯ppt入口:DX—字符串地址偏移量,CX—字符個數(shù)用存儲器傳遞參數(shù)。出口:AXAX為16位,216=65536∴字符串字符個數(shù)<6,(5位十進制數(shù)加1個符號位)

嵌套的子程序:CHE用于乘10

入口:DX

出口:DX,CF

使用的寄存器:BX,SI59編輯ppt查符號X10CHE置標(biāo)志位DX清零是負(fù)數(shù)?修改地址字符串首地址給SI

Y讀下一位數(shù)修改地址累加到DX字符串轉(zhuǎn)換完?是負(fù)數(shù)?取補Y60編輯ppt例:兩個多字節(jié)無符號數(shù)乘法子程序(參考例4-29,P142)

高1

溫馨提示

  • 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

提交評論