版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第四章:宏匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序格式MASM中的表達(dá)式偽指令語(yǔ)句DOS系統(tǒng)功能調(diào)用程序設(shè)計(jì)方法程序舉例1編輯ppt§4.1匯編語(yǔ)言程序格式匯編語(yǔ)言機(jī)器語(yǔ)言的符號(hào)表示,面向機(jī)器的語(yǔ)言匯編語(yǔ)言的特點(diǎn):直接控制目標(biāo)代碼,可對(duì)輸入輸出設(shè)備進(jìn)行控制,實(shí)時(shí)性好;編程效率高,節(jié)省內(nèi)存,運(yùn)行速度快。源程序1.asm1.obj1.exe8086常用的匯編程序:宏匯編程序MASM一、指令性語(yǔ)句:生成機(jī)器代碼,由CPU來(lái)執(zhí)行格式:標(biāo)號(hào):指令助記符操作數(shù),操作數(shù);注釋
↖字母開(kāi)頭,最長(zhǎng)31個(gè)字符匯編鏈接2編輯ppt二、偽指令語(yǔ)句:只提供匯編信息功能:變量定義、存儲(chǔ)區(qū)分配、段定義、段分配、指示程序開(kāi)始、結(jié)束格式:
名字偽指令助記符操作數(shù),操作數(shù);注釋↑變量名、段名、過(guò)程名、符號(hào)名,名字后不允許有“:”三、數(shù)據(jù)項(xiàng)匯編語(yǔ)言中的操作數(shù):常數(shù)、寄存器、存儲(chǔ)器、變量、標(biāo)號(hào)和表達(dá)式。3編輯ppt常數(shù)
00110101B026H123D‘howareyou?’,空格(20H)變量
是內(nèi)存中的一個(gè)數(shù)據(jù)區(qū)。在程序中作為操作數(shù)使用。變量名又稱(chēng)符號(hào)地址,表示該數(shù)據(jù)項(xiàng)中第一項(xiàng)所在的地址。
和常數(shù)區(qū)別:變量值可以改變。
三個(gè)屬性:段地址,段內(nèi)偏移地址,字節(jié)類(lèi)型BYTE,WORD,DWORD標(biāo)號(hào)
可執(zhí)行指令語(yǔ)句的地址的符號(hào)表示。可作為轉(zhuǎn)移指令的目的操作數(shù)。三個(gè)屬性:段地址,段內(nèi)偏移地址,距離類(lèi)型(NEAR,FAR)4編輯ppt§4.2表達(dá)式匯編的表達(dá)式為一個(gè)值組成:運(yùn)算對(duì)象+運(yùn)算符,運(yùn)算對(duì)象與結(jié)果都是整數(shù)運(yùn)算對(duì)象:常數(shù)、變量、標(biāo)號(hào)分為數(shù)字表達(dá)式和地址表達(dá)式兩種一、算術(shù)運(yùn)算符:+,-,*,/,MOD,SHL,SHR所有算術(shù)運(yùn)算符都可以對(duì)數(shù)據(jù)進(jìn)行運(yùn)算例MOVAX,5+3;(AX)=8MOVAX,(9MOD2);(AX)=1MOVAX,9/2;(AX)=42.對(duì)地址運(yùn)算,只能是+,-5編輯ppt例2:ARRAYDB1,2,3,4TRYDB20MOVAX,(TRY-ARRAY);匯編后MOVAX,4例3:FIRSTDB1,2,3MOVAX,OFFSETFIRST+2二、邏輯運(yùn)算符:AND,OR,NOT,XOR只能用于數(shù)字表達(dá)式中例:PORTEQU90HANDDL,PORTANDOFEH
前AND-指令助記符,在程序執(zhí)行時(shí)運(yùn)算;后AND-運(yùn)算符,在匯編時(shí)計(jì)算6編輯ppt三、關(guān)系運(yù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ù)值返回運(yùn)算符:OFFSET、SEG、TYPE、LENGTH、SIZE1.OFFSET返回變量或標(biāo)號(hào)的偏移地址值2.SEG返回變量或標(biāo)號(hào)的段基地址值例:MOVSI,OFFSETFIRST例4-8MOVAX,SEGFIRSTMOVDS,AX
MOVDS,SEGFIRST×3.TYPE變量:返回類(lèi)型屬性①DB1②DW2③DD4(字節(jié)數(shù))TYPE標(biāo)號(hào):返回距離屬性①NEAR-1②FAR-2例4-98編輯ppt4.LENGTH變量變量中有DUP時(shí),返回變量所包含的單元數(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五、修改屬性運(yùn)算符:段操作符、PTR、THIS、HIGH、LOW、SHORT1、段操作符:例:MOVAX,ES:[BX]ES--段超越前綴2、PTR:格式:類(lèi)型/距離PTR變量/標(biāo)號(hào)變量:BYTE,WORD標(biāo)號(hà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;實(shí)現(xiàn)段間轉(zhuǎn)移.AGAIN-標(biāo)號(hào)3、THIS
格式:變量/標(biāo)號(hào)EQUTHIS類(lèi)型/距離功能:將類(lèi)型/距離屬性賦予變量/標(biāo)號(hào),且該變量/標(biāo)號(hào)的地址與下一個(gè)存儲(chǔ)單元相同。例1:FIRSTEQUTHISBYTETABLEDW200DUP(?);使變量FIRST與TABLE的偏移地址相同,但FIRST為字節(jié)類(lèi)型,TABLE為字類(lèi)型例2:SPPEQUTHISFARMOVAX,100;即SPP:MOVAX,10011編輯ppt4、SHORTSHORT標(biāo)號(hào)例:JMPSHORTL1;限制跳轉(zhuǎn)的距離在-128~+127之間5、HIGH和LOW字節(jié)分離符
HIGH/LOW變量或標(biāo)號(hào)HIGH分離出高位字節(jié)LOW分離出低位字節(jié)例:K1EQU1234HMOVAH,HIGHK1;MOVAH,34HMOVAL,LOWK1;MOVAL,12HMOVAH,HIGH1234H;×不能+立即數(shù)12編輯ppt六、其他運(yùn)算符
1、()改變優(yōu)先級(jí)次序表4-32、[]①用[]表達(dá)地址表達(dá)式例:MOVCL,[BX]MOVAX,[BX+2]②用[]表示多重變量的下標(biāo)值例:M1DB10H,20H,30H,40HMOVAL,M1[3];MOVAL,40H13編輯ppt§4-3偽指令語(yǔ)句一、數(shù)據(jù)定義語(yǔ)句DBDW格式:變量名助記符操作數(shù),操作數(shù),……;注釋變量名助記符nDUP(操作數(shù),操作數(shù)……);注釋功能:將操作數(shù)存入變量名指定的存儲(chǔ)單元中,或者只分配存儲(chǔ)空間不存入數(shù)據(jù)例1:A1DB0DHA2DW?
A3DB00H,01H,03HA5DB9DUP(?)A6DB8DUP(1,2,3);共3x8=24個(gè)單元A7DB‘Howareyou?’A8DW‘OK’;
A8DW`OVER`×14編輯ppt2、等號(hào)語(yǔ)句=功能:同EQU,但允許重復(fù)定義例:X1=100X1EQU100X1=X1+100;X1=200X1EQU200;×15編輯ppt三、段定義語(yǔ)句
1、段定義語(yǔ)句SEGMENT…ENDS格式:段名SEGMENT
;內(nèi)容段名ENDS(上下段名必須相同)功能:將一個(gè)邏輯段定義成一個(gè)整體段名:邏輯段的標(biāo)識(shí)符,不可省略,確定了邏輯段在存儲(chǔ)器中的地址。
段基地址例:MOVAX,DATAMOVDS,AX
堆棧段定義:段名SEGMENT‘STACK’(不可省略)
┇
段名ENDS說(shuō)明:16編輯ppt定位類(lèi)型、組合類(lèi)型、分類(lèi)名一般情況下可省略Data,stack,es段中,只能有偽指令Code段中,可有指令和與指令相關(guān)的偽指令17編輯ppt2、段分配語(yǔ)句:ASSUME
格式:ASSUMECS:段名,DS:段名,SS:段名,ES:段名功能;將存儲(chǔ)器中的某幾個(gè)邏輯段分別定義成代碼段、數(shù)據(jù)段、堆棧段、附加段。(指定某程序運(yùn)行時(shí),哪幾個(gè)邏輯段有效。CS、DS段是必須的,SS、ES段看情況)注意:assume指令只指定某個(gè)段分配給哪幾個(gè)段寄存器,并將代碼段的段基址自動(dòng)裝入cs中,而不能把其它段基址自動(dòng)裝入相應(yīng)的段寄存器中,所以,在代碼段的開(kāi)始,要有一段初始化程序完成這一工作18編輯ppt四、過(guò)程定義語(yǔ)句
段內(nèi)調(diào)用段間格式:過(guò)程名PROC屬性(距離屬性(NEARFAR))
┇;過(guò)程內(nèi)容
RETN過(guò)程名ENDP說(shuō)明:RETN中N為正偶數(shù),表示從過(guò)程返回后,堆棧指針再加上SP過(guò)程內(nèi)部至少有一條RET指令,也可以有多個(gè),表示此過(guò)程具有多個(gè)返回出口。過(guò)程調(diào)用允許嵌套調(diào)用,遞歸調(diào)用。嵌套調(diào)用:一個(gè)被調(diào)用的過(guò)程中又調(diào)用另一個(gè)過(guò)程。遞歸調(diào)用:一個(gè)被調(diào)用的過(guò)程又調(diào)用自己
19編輯ppt五、程序開(kāi)始、結(jié)束語(yǔ)句
1、ORG:設(shè)置位置指針,指定下面語(yǔ)句的起始偏移地址例:DATASEGMENTORG100HA1DB10H,20H,30H;A1的偏移地址為0100HORG200HA2DW3031H,3233HDATAENDS2、END格式:END標(biāo)號(hào)名是該程序中第一條可執(zhí)行語(yǔ)句的標(biāo)號(hào)名,可以缺省若一個(gè)程序中,包含多個(gè)模塊,則為主程序模塊中的標(biāo)號(hào)名稱(chēng)。20編輯ppt完整的匯編語(yǔ)言編寫(xiě)的格式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好的程序特點(diǎn):程序結(jié)構(gòu)模塊化,易讀,易調(diào)試和維護(hù)執(zhí)行速度快占用內(nèi)存小編程基本步驟:分析問(wèn)題繪制程序流程圖分配存儲(chǔ)空間及工作單元編程調(diào)試實(shí)際運(yùn)行§4.4程序設(shè)計(jì)方法23編輯ppt1、順序程序設(shè)計(jì)
例:設(shè)計(jì)一個(gè)順序程序?qū)崿F(xiàn)兩個(gè)雙字?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è)計(jì)
①多分支例: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)表實(shí)現(xiàn)多分支根據(jù)表內(nèi)地址分支表地址=跳轉(zhuǎn)表首地址+偏移地址P1低位P1高位P2低位P2高位…….BASEBASE+2P1P2開(kāi)始取編號(hào)求偏移量求表地址分支到相應(yīng)的分支程序27編輯ppt例4-67有8個(gè)加工子程序,入口地址分別為P1,P2,…,P8,編程實(shí)現(xiàn)檢測(cè)鍵盤(pán)輸入命令,使系統(tǒng)分別轉(zhuǎn)向8個(gè)加工子程序。用跳轉(zhuǎn)表實(shí)現(xiàn)。BASEDWP1,P2,P3,P4DECALDWP5,P6,P7,P8MOVBX,OFFSETBASEKEYDB?MOVAH,0MOVAH,1;從鍵盤(pán)輸入字符ADDAL,AL;X2INT21H;至ALADDBX,AXANDAL,0FH;ASCII→BINJMPWORDPTR[BX]例:p3子程序地址在cs:7800H開(kāi)始,則BASE中第3個(gè)數(shù)據(jù)為7800H,地址DS:0004H,當(dāng)鍵盤(pán)輸入字符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è)計(jì)
循環(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è)計(jì)
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位二進(jìn)制數(shù),編程統(tǒng)計(jì)其中1的個(gè)數(shù),結(jié)果放到BL中
MOVBL,0;計(jì)數(shù)值清0L1:ANDAX,AX;先判斷,后執(zhí)行JZSTOP;若AX=0,則不進(jìn)入循環(huán)MOVCX,16SHLAX,1JNCL2INCBLL2:JMPL1STOP:……31編輯ppt多重循環(huán)3點(diǎn)注意多重循環(huán)的初始控制條件內(nèi)循環(huán)可嵌套在外循環(huán)中,內(nèi)可跳到外,外不得進(jìn)入內(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氣泡排序。使一個(gè)數(shù)組中的數(shù)據(jù)從小到大排列。分析:內(nèi)循環(huán)N-1次單元號(hào)012345初始538791一3
58791二3587
91
三357
891四357891五35781932編輯ppt修改地址(BX+2)數(shù)i≤數(shù)i+1??jī)蓴?shù)位置交換修改地址BX+2→BXCX-1內(nèi)循環(huán)CX=0?初始化:數(shù)組起始地址→BX外循環(huán)次數(shù)→DX內(nèi)循環(huán)次數(shù)→CX置檢測(cè)起點(diǎn)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,重新開(kāi)始比較LOOPL1;CX-1:①內(nèi)循環(huán)次數(shù)N-1,N-2;②外循環(huán)次數(shù)-1MOVAX,4C00HINT21HCODEENDSENDSTART
35編輯ppt四、子程序結(jié)構(gòu)子程序說(shuō)明名稱(chēng)、功能存儲(chǔ)單元和寄存器入口和出口有否調(diào)用其它子程序主程序調(diào)用子程序注意:堆棧保護(hù)現(xiàn)場(chǎng)參數(shù)傳遞寄存器存儲(chǔ)器堆棧36編輯ppt例4-30:編程實(shí)現(xiàn)兩個(gè)BCD碼字?jǐn)?shù)據(jù)相加(完整程序)
DATASEGMENT
FIRSTDB22H,33H,44H,55H;加數(shù)1
SECONDDB55H,66H,77H,88H;加數(shù)2
SUMDB20DUP(?);定義存放結(jié)果單元
DATAENDSSTACKSEGMENT‘STACK’
STADB20DUP(?);設(shè)置堆棧長(zhǎng)度為20個(gè)字節(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ù)傳遞:存儲(chǔ)器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磁盤(pán)操作系統(tǒng)
一、DOS常用的軟中斷命令DOS具有對(duì)I/O設(shè)備管理及磁盤(pán)與文件管理功能,一部份固化在系統(tǒng)的ROM中一部份在系統(tǒng)啟動(dòng)時(shí)調(diào)入內(nèi)存,通過(guò)軟件中斷來(lái)調(diào)用中斷指令:INTn表4-6DOS常用的軟中斷命令入口、出口參數(shù)41編輯ppt二、DOS系統(tǒng)功能調(diào)用
INT21H附錄FAH=功能號(hào)每個(gè)子程序?qū)?yīng)一個(gè)功能號(hào)(相應(yīng)的入口號(hào)),格式如下①功能號(hào)→AH②入口參數(shù)→指定寄存器③INT21H④根據(jù)出口參數(shù)分析功能調(diào)用執(zhí)行情況1.DOS鍵盤(pán)功能調(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?’字符串,且回車(chē)、換行。
DATASEGMENTMESDB‘HOWDOYOUDO?’,0DH,0AH,‘$’;0DH(回車(chē)),0AH(換行)
DATAENDS44編輯pptCODESEGMENTASSUMECS:CODE,DS:DATAMAIN:PUSHDSXORAX,AXPUSHAXMOVAX,DATAMOVDS,AXMOVAH,9MOVDX,OFFSETMESINT21HRETCODEENDSENDSTART字符碼功能08HOAHOCHODH退格換行換頁(yè)回車(chē)45編輯ppt
3、返回操作系統(tǒng)
4CH功能調(diào)用:能夠結(jié)束當(dāng)前正在執(zhí)行的程序,返回DOS系統(tǒng)
MOVAH,4CHINT21H46編輯ppt§4.6上機(jī)實(shí)驗(yàn)參見(jiàn)課本及實(shí)驗(yàn)指導(dǎo)書(shū)實(shí)驗(yàn)一:兩個(gè)多位十進(jìn)制數(shù)相減的實(shí)驗(yàn)參見(jiàn)課本P187程序?qū)嶒?yàn)二:排序?qū)嶒?yàn)要求:從首地址為1000H的內(nèi)存區(qū)域開(kāi)始存放10個(gè)無(wú)符號(hào)字?jǐn)?shù)據(jù)數(shù),設(shè)計(jì)程序?qū)⑦@些數(shù)從小到大排序,并將排序前后次序的顯示在屏幕上。參見(jiàn)課本P181及實(shí)驗(yàn)指導(dǎo)書(shū)實(shí)驗(yàn)十三
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)用顯示子程序,參見(jiàn)P177 LOOPL147編輯ppt§4.7程序舉例:一、查表例4-64二、代碼轉(zhuǎn)換類(lèi)16位二進(jìn)制→ASCⅡ碼二進(jìn)制←→組合BCD碼非組合BCD碼
ASCⅡ碼顯示三、算術(shù)運(yùn)算類(lèi)加減乘除(二進(jìn)制,BCD碼)48編輯ppt例4-64內(nèi)存中TABLE開(kāi)始存放0~9的平方值,通過(guò)人機(jī)對(duì)話(huà),當(dāng)任給定一個(gè)數(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進(jìn)制數(shù)轉(zhuǎn)換為ASCII碼,存放到BUF開(kāi)始的內(nèi)存單元中去,并在屏幕顯示數(shù)值轉(zhuǎn)換表:入口參數(shù):BX出口參數(shù):BUF開(kāi)始的內(nèi)存單元中,SI指示。16進(jìn)制數(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:將一個(gè)無(wú)符號(hào)16位二進(jìn)制數(shù)轉(zhuǎn)換為4位壓縮型BCD碼
算法一:千位數(shù):無(wú)符號(hào)16位二進(jìn)制數(shù)/1000的商,得余數(shù)1百位數(shù):余數(shù)1/100的商,得余數(shù)2十位數(shù):余數(shù)2/10的商,得余數(shù)3個(gè)位數(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ù))若計(jì)算16位/16位,8位/8位,需將被除數(shù)擴(kuò)展程序:入口參數(shù):AX=16位二進(jìn)制數(shù)出口參數(shù):AX=4位壓縮型BCD碼(CF=0時(shí))
占用資源:CX,DX千位百位
千位百位十位
千位百位十位個(gè)位
千位每次所得商,依次移入DXDX①DX②DX③DX④54編輯ppt
B2TOBCDPROCFARCMPAX,9999;AX〉9999,則CF=1,JBETRAN;不轉(zhuǎn)換 STC JMPEXITTRAN:PUSHCX;保護(hù)現(xiàn)場(chǎng) 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;四個(gè)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í)減的次數(shù)即是相應(yīng)的位57編輯ppt例4-79將十進(jìn)制數(shù)的ASCII碼轉(zhuǎn)換成有符號(hào)二進(jìn)制數(shù)。算法:符號(hào)字符串→標(biāo)識(shí)符MINU。若為負(fù),MINU=1;數(shù)字字符(31H~39H)→一位十進(jìn)制數(shù)(0~9)a0,a1,a2…十進(jìn)制數(shù)轉(zhuǎn)換成十六進(jìn)制數(shù):十六進(jìn)制數(shù)=a2x100+a1x10+a0=(a2x10+a1)x10+a058編輯ppt入口:DX—字符串地址偏移量,CX—字符個(gè)數(shù)用存儲(chǔ)器傳遞參數(shù)。出口:AXAX為16位,216=65536∴字符串字符個(gè)數(shù)<6,(5位十進(jìn)制數(shù)加1個(gè)符號(hào)位)
嵌套的子程序:CHE用于乘10
入口:DX
出口:DX,CF
使用的寄存器:BX,SI59編輯ppt查符號(hào)X10CHE置標(biāo)志位DX清零是負(fù)數(shù)?修改地址字符串首地址給SI
Y讀下一位數(shù)修改地址累加到DX字符串轉(zhuǎn)換完?是負(fù)數(shù)?取補(bǔ)Y60編輯ppt例:兩個(gè)多字節(jié)無(wú)符號(hào)數(shù)乘法子程序(參考例4-29,P142)
高1
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 事業(yè)單位保密教育培訓(xùn)
- 人教版三年級(jí)語(yǔ)文下冊(cè)教案全集
- 【初中物理】物態(tài)變化單元練習(xí)2024-2025學(xué)年人教版物理八年級(jí)上冊(cè)
- 成品油零售經(jīng)營(yíng)批準(zhǔn)證書(shū)變更、補(bǔ)辦、到期換證申請(qǐng)表
- 職業(yè)學(xué)院游艇設(shè)計(jì)與制造專(zhuān)業(yè)人才培養(yǎng)方案
- 升降機(jī)操作裝置產(chǎn)業(yè)深度調(diào)研及未來(lái)發(fā)展現(xiàn)狀趨勢(shì)
- 保險(xiǎn)信息行業(yè)市場(chǎng)調(diào)研分析報(bào)告
- 嬰兒用驅(qū)蚊貼市場(chǎng)發(fā)展預(yù)測(cè)和趨勢(shì)分析
- 單板滑雪服市場(chǎng)發(fā)展預(yù)測(cè)和趨勢(shì)分析
- 振動(dòng)按摩器產(chǎn)業(yè)鏈招商引資的調(diào)研報(bào)告
- 新中小學(xué)生班主任基本功大賽筆試試卷及參考答案
- 高中通用技術(shù)-模擬綜合練習(xí)卷-粵教版必修
- 傳統(tǒng)文化創(chuàng)新:以新視角看世界文化
- 英文醫(yī)學(xué)論文寫(xiě)作知到章節(jié)答案智慧樹(shù)2023年山東中醫(yī)藥大學(xué)
- 醫(yī)學(xué)統(tǒng)計(jì)學(xué)(南昌大學(xué))智慧樹(shù)知到答案章節(jié)測(cè)試2023年
- 光電子技術(shù)課件第四章 光探測(cè)(下)
- 木屋工程施工組織設(shè)計(jì)(完整版)資料
- 專(zhuān)業(yè)技術(shù)職務(wù)聘任表(2017年版)
- 2022年10月西藏昌都市招考大學(xué)生村(居)鄉(xiāng)村振興專(zhuān)干、科技專(zhuān)干、醫(yī)務(wù)人員、農(nóng)業(yè)農(nóng)村工作專(zhuān)員和鄉(xiāng)村幼教人員筆試參考題庫(kù)含答案解析
- ISO20000認(rèn)證-ISO20000差距分析報(bào)告
- GB/T 42195-2022老年人能力評(píng)估規(guī)范
評(píng)論
0/150
提交評(píng)論