主要內(nèi)容:宏匯編語(yǔ)言的語(yǔ)法匯編程序與上機(jī)過程表達(dá)式語(yǔ)句偽指令市公開課特等獎(jiǎng)市賽課微課一等獎(jiǎng)?wù)n件_第1頁(yè)
主要內(nèi)容:宏匯編語(yǔ)言的語(yǔ)法匯編程序與上機(jī)過程表達(dá)式語(yǔ)句偽指令市公開課特等獎(jiǎng)市賽課微課一等獎(jiǎng)?wù)n件_第2頁(yè)
主要內(nèi)容:宏匯編語(yǔ)言的語(yǔ)法匯編程序與上機(jī)過程表達(dá)式語(yǔ)句偽指令市公開課特等獎(jiǎng)市賽課微課一等獎(jiǎng)?wù)n件_第3頁(yè)
主要內(nèi)容:宏匯編語(yǔ)言的語(yǔ)法匯編程序與上機(jī)過程表達(dá)式語(yǔ)句偽指令市公開課特等獎(jiǎng)市賽課微課一等獎(jiǎng)?wù)n件_第4頁(yè)
主要內(nèi)容:宏匯編語(yǔ)言的語(yǔ)法匯編程序與上機(jī)過程表達(dá)式語(yǔ)句偽指令市公開課特等獎(jiǎng)市賽課微課一等獎(jiǎng)?wù)n件_第5頁(yè)
已閱讀5頁(yè),還剩62頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

主要內(nèi)容:宏匯編語(yǔ)言語(yǔ)法匯編程序與上機(jī)過程表示式語(yǔ)句偽指令第五章匯編語(yǔ)言及

匯編程序第1頁(yè)重點(diǎn)1.介紹宏匯編語(yǔ)言語(yǔ)法2.介紹系統(tǒng)功效調(diào)用3.匯編過程

難點(diǎn)偽指令格式與應(yīng)用

第2頁(yè)

第一節(jié)宏匯編語(yǔ)言語(yǔ)法機(jī)器語(yǔ)言:機(jī)器能識(shí)別并執(zhí)行,稱目標(biāo)程序,是二進(jìn)制碼。匯編語(yǔ)言:用指令助記符、符號(hào)地址、標(biāo)號(hào)等書寫語(yǔ)言。匯編語(yǔ)言源程序:用匯編語(yǔ)言編寫程序。匯編:匯編語(yǔ)言源程序

目標(biāo)程序第3頁(yè)一.偽指令格式偽指令:指示性語(yǔ)句.不產(chǎn)生機(jī)器目標(biāo)代碼.1)標(biāo)號(hào)字段:

任選字段,標(biāo)號(hào)名后不能用冒號(hào)“:”,這是與指令性語(yǔ)句突出區(qū)分.2)偽指令字段

數(shù)據(jù)定義偽指令:DB,DW段定義偽指令:SEGMENT,ENDS3)操作數(shù)字段:4)注釋字段第4頁(yè)二.常數(shù)、變量和標(biāo)號(hào)1.常數(shù):(1)數(shù)字常量:(2)字符串常量:ASCII碼2.變量變量是代表存放在存放單元數(shù)據(jù)。變量名,可認(rèn)為是存放數(shù)據(jù)存放單元符號(hào)地址變量屬性:段值、偏移量、類型(BYTE,WORD,DWORD)第5頁(yè)定義變量偽指令

符號(hào)DB/DW/DD/DQ(8)/DT(10)表示式例1:DAT1DB12HDAT2DB34HDAT3DW5678H例2:DA—BDB?,?DA—WDW?,?第6頁(yè)42H41H000044H43H...00H00HSTRINGS341H42H43H44H45H46HSTRINGS1STRINGS242H41H44H43H例3:STRING1DB‘ABCDEF’STRING2DW‘AB’,’CD’STRING3DD‘AB’,’CD’第7頁(yè)例4:帶DUP表示式D—B1DB?,?,?,?,?,?D—B2DB6DUP(?)D—B3DB10DUP(4)3.標(biāo)號(hào)標(biāo)號(hào)是一條指令目標(biāo)代碼符號(hào)地址。屬性有:段值(SEG)偏移量(OFFSET)距離屬性:NEAR(近),只能被本段內(nèi)訪問。FAR(遠(yuǎn)),能夠被其它段訪問。第8頁(yè)三、表示式與運(yùn)算符

表示式由操作數(shù)和運(yùn)算符組成,匯編時(shí)產(chǎn)生一個(gè)值。1.算數(shù)運(yùn)算符:+-*\

MOD,取余運(yùn)算符SHL,左移運(yùn)算符SHR,右移運(yùn)算符例:32MOD5;匯編時(shí),得到值=22.邏輯運(yùn)算符:AND、OR、NOT、XOR

例:24HOR0FH;匯編時(shí),得到值=2FH第9頁(yè)3.關(guān)系運(yùn)算符:關(guān)系運(yùn)算符是邏輯判斷式,為真時(shí),結(jié)果取0FFFFH,為假時(shí),結(jié)果取0。EQ(等于)、NE(不等于)、LT(小于)、GT(大于)、LE(小于等于)、GE例:25LT26;其值=0FFFFH26GT25;其值=0FFFFH24GEPP;其值=0第10頁(yè)4.分析運(yùn)算符SEG\OFFSET\TYPE\LENGTH\SIZE(1)SEG:操作數(shù)段地址(2)OFFSET:操作數(shù)地址偏移量

例:TABLEDW67,89…….MOVAX,SEGTABLEMOVBX,OFFSETTABLEMOVCX,TABLE第11頁(yè)(3)TYPE求符號(hào)名類型數(shù)值(P163)格式:TYPE(符號(hào)名)符號(hào)名類型值:DB:送1,DW:送2,DD:送4例:ARRYDW1,2MOVSI,TYPEARRAY匯編為:MOVSI,2

(4)LENGTH為符號(hào)名分配項(xiàng)數(shù)。

格式:LENGTH(符號(hào)名)

使用DUP,回送變量單元數(shù);不然送1。例:SUMDW100DUP(0)MOVCX,LENGTHSUM匯編后:MOVCX,100第12頁(yè)(5)SIZE變量:回送分配給變量字節(jié)數(shù)。

格式:SIZE(符號(hào)名)例:SUMDW100DUP(0)MOVDX,SIZESUM匯編后:MOVDX,2005.組合運(yùn)算符

(1)定義符號(hào)名為新類型

格式:類型PTR(符號(hào)名)例:OPER1DB10H,21H,30H,45HMOVAX,WORDPTROPER1+2;AX

4530H第13頁(yè)(2).指定新類型THIS

格式:THIS(類型)例:LABCEQU

THISBYTE

LABDDW4321H,2255HMOVAL,LABC;AL=21HMOVAX,LABD;AX=4321H符號(hào)LABC與LABD有相同段地址和偏移地址,LABC是字節(jié)類型,LABD是字類型.6.分離運(yùn)算符

格式: LOW<表示式>:取低字節(jié)格式:HIGH<表示式>:取高字節(jié)第14頁(yè)宏匯編語(yǔ)言語(yǔ)法小節(jié)偽指令格式偽指令:指示性語(yǔ)句.不產(chǎn)生機(jī)器目標(biāo)代碼.常數(shù)、變量和標(biāo)號(hào)變量屬性:段值、偏移量、類型。標(biāo)號(hào)屬性有:段值、偏移量、距離屬性。表示式與運(yùn)算符表示式由操作數(shù)和運(yùn)算符組成,匯編時(shí)產(chǎn)生一個(gè)值。

1.算數(shù)運(yùn)算符:+-*/2.邏輯運(yùn)算符:ANDORNOTXOR

第15頁(yè)3.關(guān)系運(yùn)算符:EQNELTGT4.分析運(yùn)算符:SEG\OFFSET\TYPE\LENGTH\SIZE5.組合運(yùn)算符PTRTHIS6.分離運(yùn)算符LOWHIGH第16頁(yè)第二節(jié)偽指令

偽指令:匯編時(shí)不產(chǎn)生機(jī)器代碼,而是由

MASM識(shí)別,又稱匯編命令。一、標(biāo)號(hào)賦值偽指令

格式:<名字>EQU<表示式><新名字>EQU<老名字>

功效:把表示式值賦給符號(hào)名。

解除語(yǔ)句:格式:PUREG符號(hào)1,符號(hào)2,符號(hào)3功效:解除對(duì)符號(hào)1、符號(hào)2、符號(hào)3賦值。第17頁(yè)例:PORT1EQU3PORT2EQUPORT1+2PORT3EQUPORT2CONTEQUCX即:PORT1=3,PORT2=5PORT3=5,CX與CONT意義相同

PUREGPORT1;解除PORT1賦值PORT1EQU10

即:PORT1=10第18頁(yè)二、內(nèi)存數(shù)據(jù)定義偽指令

格式:字節(jié)定義:符號(hào)DB〈表示式〉字定義:符號(hào)DW〈表示式〉四字節(jié)定義:符號(hào)DD〈表示式〉八字定義:符號(hào)DQ〈表示式〉十字節(jié)定義:符號(hào)DT〈表示式〉例:SOBDB?SUMDW?SLEVDD?TAB1DB28N1DD2.5,3.2E+2第19頁(yè)例:有以下定義TABLE1DD0,1,2,3TABLE2DB30H,31H,32H,33HTABLE3DB‘12345678910‘ZERDW8DUP(0)DEMDB‘HELLO?’判斷以下指令是否正確:1.MOVAX,TABLE12.MOVBX,TABLE23.MOVAL,TABLE34.MOVAX,WORDPTRTABLE1

第20頁(yè)三、定義存放單元類型功效:指定存放單元類型是字節(jié)型.

功效:指定存放單元類型是字節(jié)型.功效:指定存放單元類型是字節(jié)型.

例:有以下定義:

SUMDB12H,80H

TABDW1234H

1).MOVAX,WORD

PTRSUM

匯編后:MOVAX,8012H2).MOVBH,BYTEPTRTAB

匯編后:MOVBH,34HBYTE

WORDDWORD第21頁(yè)四、段定義語(yǔ)句(p166)

格式:段名SEGMENT[定位方式][連接方式][‘類別’]…….段名ENDS(1)定位方式:指定段起始地址邊界.

4種:PARA(頁(yè)邊界)(能被256除)PAGE(段邊界)(能被16除)WORD(字邊界)(能被2除)BYTE(2)連接方式

6種:PUBLICSTACK空COMMONMEMORYAT(3)類別名第22頁(yè)五.段說明ASSUME:給各程序段指定段存放器六.過程定義語(yǔ)句

過程定義格式:過程名PROC[NEAR]或FAR………RET過程名ENDP過程調(diào)用格式:CALL過程名七.定位偽指令

ORGH;指定起始地址偏移量第23頁(yè)八.結(jié)束偽指令

格式:END[開啟標(biāo)號(hào)或過程]九.定位偽指令

格式:ORG表示式十.列表為指令TITLESUBTTLPAGE十一.連接偽指令PUBLICEXTRNINCLUDEGROUP十二.其它

第24頁(yè)第三節(jié)宏指令為了簡(jiǎn)化匯編語(yǔ)言書寫,把一些頻繁出現(xiàn)程序段定義為“宏指令”.在匯編過程中,將宏指令所代替程序段匯編成對(duì)應(yīng)機(jī)器代碼,并插入到源程序中宏指令要使用前:(1)宏定義(2)宏調(diào)用(3)宏擴(kuò)展第25頁(yè)1.宏代換

格式:宏名MACRO[形式參數(shù)1,形式參數(shù)1,…]…ENDM功效:為指令序列定義一個(gè)宏名,稱為宏指令.2.局域符號(hào)定義語(yǔ)句

格式:LOCAL符號(hào)[符號(hào)1,符號(hào)2,…]功效:指出符號(hào)1,符號(hào)2,…僅在宏代換中有意義.

3.刪除宏定義語(yǔ)句

格式:PURGE宏定義名1[宏定義名2,…]功效:注銷程序中引用宏指令.4.退出宏定義語(yǔ)句

格式:EXITM

第26頁(yè)5.重復(fù)定義語(yǔ)句

格式:IRPC形式參數(shù),字符串…}指令序列ENDM6.包含語(yǔ)句:

格式:

INCLUDE文件名;把命令后文件插入該語(yǔ)句處一起編譯.例:定義一條宏指令,完成算術(shù)左移.

SHTMACROX,YMOVCL,XSALY,CLENDM宏調(diào)用:SHT6,BL

經(jīng)宏展開:MOVCL,6SALBL,CL第27頁(yè)第四節(jié)系統(tǒng)功效調(diào)用主要內(nèi)容:系統(tǒng)功效調(diào)用一.介紹

MS-DOS設(shè)置了幾十個(gè)內(nèi)部子程序,能夠完成I/O設(shè)備管理,存放管理,文件管理,合作業(yè)管理.它們被做成中止服務(wù)程序,其入口地址已由系統(tǒng)置入中止向量表中,能夠用軟中止指令調(diào)用.

類型號(hào):20~27H

系統(tǒng)功效調(diào)用:INT21H第28頁(yè)二、DOS系統(tǒng)功效調(diào)用1.DOS系統(tǒng)功效調(diào)用格式1)、在AH中設(shè)置功效號(hào)2)、在指定積存器中設(shè)置入口參數(shù)3)、用INT21H指令執(zhí)行系統(tǒng)功效調(diào)用4)、依據(jù)出口參數(shù)分析執(zhí)行情況2.DOS系統(tǒng)功效調(diào)用INT21H部分I/O操作1).鍵盤輸入一個(gè)字符并回顯功效號(hào)AH=01H,出口參數(shù)AL=字符;使用格式:MOVAH,01HINT21H第29頁(yè)2).鍵盤輸入字符到緩沖區(qū):功效號(hào):AH=0AH,入口參數(shù):DS:DX=緩沖區(qū)首址使用格式

…BUFDB20DB?DB20DUP(?)…MOVDX,OFFSETBUFMOVAH,OAHINT21H

第30頁(yè)3).輸出一個(gè)字符功效號(hào)

:AH=2

入口參數(shù):DL=字符,光標(biāo)隨字符移動(dòng)使用格式:MOVDL,‘A’MOVAH,02HINT21H執(zhí)行上面程序后,將在屏幕上顯示字符A.4).輸出字符串,功效號(hào):AH=9,入口參數(shù):DS:DX=串地址,字串結(jié)束為“$”符號(hào)使用格式:BUFDB‘HELLO!’……MOVDX,OFFSETBUFMOVAH,09HINT21H……….第31頁(yè)5)直接控制臺(tái)輸入輸出單字符功效號(hào):AH=06H入口參數(shù):DL=0FFH(輸入)

DL=字符(輸出)出口參數(shù):AL=輸入字符6)鍵盤輸入一個(gè)字符無回顯功效號(hào):AH=08H出口參數(shù):AL=字符;7)返回DOS系統(tǒng)功效號(hào):AH=4CH8)清鍵盤緩沖區(qū),并調(diào)用一個(gè)鍵盤功效功效號(hào):AH=0CHAL=鍵盤功效號(hào)(1、6、7、8、0AH)第32頁(yè)9).從串口輸入單字符AH=03H入口參數(shù)AL=字符10)向串口輸出單字符AH=04H出口參數(shù)DL=字符11)設(shè)置時(shí)間:INT21/2BHyear:mounth:day=CX:CH:CL12)取得時(shí)間:INT21H/2AH13)取得日期:INT21H/2CH第33頁(yè)第五節(jié)匯編過程一.匯編程序功效將匯編語(yǔ)言源程序翻譯成機(jī)器語(yǔ)言編寫目標(biāo)程序.并可輸出列表文件檢驗(yàn)語(yǔ)法并給犯錯(cuò)誤信息展開宏指令

慣用匯編程序:ASM和MASM

源程序.ASM輸入?yún)R編程序MASM翻譯目標(biāo)代碼(.OBJ)列表文件(.LST)交叉索引文件(.CRF)輸出第34頁(yè)二.程序編輯、匯編與連接1.建立源文件用編輯軟件完成.常見軟件:Edit、Pe、Q2.匯編源程序用匯編程序MASM對(duì)源程序進(jìn)行匯編3.連接產(chǎn)生可執(zhí)行文件用連接程序LINK對(duì).OBJ進(jìn)行連接,產(chǎn)生可執(zhí)行文件;4.執(zhí)行程序

第35頁(yè)5.調(diào)試程序DEBUG程序是專為宏匯編語(yǔ)言設(shè)計(jì)一個(gè)調(diào)試程序.DEBUG程序命令D命令:顯示內(nèi)存內(nèi)容I命令:輸入命令O命令:輸出命令U命令:反匯編Q命令:退出DEBUGT命令:單步執(zhí)行P命令:單步執(zhí)行命令,指給出指令執(zhí)行結(jié)果第36頁(yè)datasegmenta1db'hellon!',0dh,0ah,'$'dataendscodesegmentassumecs:code,ds:datastart:movax,datamovds,axmovdx,offseta1movah,09hint21hmovah,4chint21hcodeendsendstart看一個(gè)例子第37頁(yè)第六節(jié)匯編語(yǔ)言程序設(shè)計(jì)程序設(shè)計(jì)思想:模塊化(結(jié)構(gòu)化)程序設(shè)計(jì)思想面向?qū)ο蟪绦蛟O(shè)計(jì)思想?yún)R編語(yǔ)言程序設(shè)計(jì):模塊化程序設(shè)計(jì)方法:1)子程序設(shè)計(jì)是模塊化程序設(shè)計(jì)基礎(chǔ)2)模塊化:將一個(gè)較大程序分解為多個(gè)含有獨(dú)立功效程序模塊,這些獨(dú)立模塊稱為子程序或過程.3)將各個(gè)模塊組裝聯(lián)調(diào),完成整個(gè)程序第38頁(yè)補(bǔ)充例1:

編程序?qū)L中二進(jìn)制數(shù),轉(zhuǎn)換成16進(jìn)制數(shù)ASCII碼,存于DI指向內(nèi)存2個(gè)單元中。解:1)分析題目2)確定算法(1)、把二進(jìn)制數(shù)置AL中,AL中數(shù)從左到右,轉(zhuǎn)換成ASCII碼,用循環(huán)左移ROL和AND指令;(2)、0~9ASCII碼:30~39HA~FASCII碼:41H~46H。判斷是否為數(shù)字0~9?若是,加30H;不然,是A~F,再加07H,得字母ASCII碼。第39頁(yè)DI指向結(jié)果單元,BL=2AL

一個(gè)字符16進(jìn)制數(shù)<10?AL

AL+30H存ASCII碼YAL=AL+07HNG1BL=0?BLBLX-1NY存ASCII碼3)程序流圖第40頁(yè)4)程序:(看源程序EXCH2_16.ASM)(子程序EXCH2_16:入口參數(shù)=二進(jìn)制數(shù),出口參數(shù)=DI指向16進(jìn)制數(shù)ASCII碼)EXCH2_16PROCFARPUSHCX;保護(hù)現(xiàn)場(chǎng)PUSHBXPUSHDIMOVBL,2;需轉(zhuǎn)換2次MOVBH,AL;AL中數(shù)暫存BHMOVCL,4;置移位位數(shù)ROLAL,CL;循環(huán)左移4位G2:ANDAL,0FH;得到低4位第41頁(yè)CMPAL,10;BL<10?JBS;BL<10,轉(zhuǎn)ADDAL,07H;大于10,加7S:ADDAL,30HMOV[DI],AL;存ASCII碼INCDI;修改地址MOVAL,BHDECBLJNZG2;2個(gè)數(shù)沒轉(zhuǎn)換完,繼續(xù)POPDI;恢復(fù)現(xiàn)場(chǎng)POPBXPOPCX

RET;子程序返回EXCH2_16ENDP第42頁(yè)補(bǔ)充例2:在數(shù)據(jù)段DAT2開始單元存放一個(gè)ASCII碼字符串,編程序顯示這些字符,要求每?jī)蓚€(gè)字符之間用空格隔開.顯示數(shù)據(jù)用DOS功效2號(hào)調(diào)用.1)分析題目2)畫出框圖INT21H2號(hào)功效:顯示單個(gè)字符,DL=字符.3)編寫程序(看源程序DISPLAY.ASM)寫成子程序:DISPLAY:入口參數(shù):用DI指向ASCII碼區(qū)首地址;CX放要顯示字符總數(shù);4)調(diào)試程序第43頁(yè);顯示ASCII碼字符子程序DISPLAYPROCNEARMOVBL,2MOVDL,[DI]G:MOVAH,2INT21HINCDI;指向下一個(gè)要顯示數(shù)DECBLJNZT;連續(xù)顯示2個(gè)數(shù),未完繼續(xù)MOVDL,’‘;顯示一個(gè)空格MOVAH,2INT21HMOVBL,2T:LOOPG;未全部顯示完繼續(xù)RETDISPLAYENDP

第44頁(yè)[例1](P183)(1)設(shè)計(jì)要求

在源程序中設(shè)置數(shù)據(jù)段、堆棧段及代碼段。在數(shù)據(jù)段中定義八個(gè)字節(jié)數(shù)據(jù),把這些數(shù)據(jù)轉(zhuǎn)換成16進(jìn)制數(shù)ASCll碼存在上述數(shù)據(jù)之后,然后在屏幕上顯示這些數(shù)據(jù)。顯示數(shù)據(jù)用DOS功效2號(hào)調(diào)用,每個(gè)數(shù)據(jù)用空格分隔。(2)程序流程:程序流程如圖7-6和圖7-7所表示。(3)程序:

子程序EXCH2_16:功效,將AL中2進(jìn)制數(shù)轉(zhuǎn)換為16進(jìn)制數(shù)ASCII碼,存DI指向單元.

子程序DISPLAY:功效,顯示ASCII碼.入口參數(shù):DI指向ASCII碼區(qū),CX是ASCII碼區(qū)長(zhǎng)度.

第45頁(yè)開始設(shè)8個(gè)字節(jié)數(shù),定義ASCII碼區(qū)設(shè)數(shù)據(jù)區(qū)指針SI,設(shè)ASCII碼指針DI設(shè)數(shù)據(jù)區(qū)長(zhǎng)度CXAL[SI]調(diào)用轉(zhuǎn)換程序EXCH2_16SI

SI+1CX

CX-1CX=0?調(diào)顯示子程序DISPLAY結(jié)束第46頁(yè)3)程序以下:(看源程序z7_6_1.asm)

NAMEEX2PAGE50,70;DATADEFINE

DATASEGMENT;數(shù)據(jù)段定義DAT1DB30H,34H,42H,43H,44H,45HB1=$-DAT1B2=B1*2DAT2DBB2DUP(?)DATAENDSSTACKSEGMENT;定義堆棧段STADW100DUP(?)STACKENDS第47頁(yè)CODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACKSTART:MOVAX,DATAMOVDS,AXMOVAX,STACKMOVSS,AX;初始化堆棧區(qū)MOVAX,100MOVSP,AX;置堆棧指針MOVSI,OFFSETDAT1;指向數(shù)據(jù)MOVDI,OFFSETDAT2;指向ASCII碼區(qū)MOVCX,B1;送需轉(zhuǎn)換字節(jié)數(shù)DO:MOVAL,[SI];取一個(gè)字節(jié)到ALCALLEX2_16;調(diào)轉(zhuǎn)換子程序INCSI;指向下個(gè)數(shù)LOOPDON

第48頁(yè)

MOVDI,OFFSETDAT2;指向ASCII碼區(qū)MOVCX,B1CALLDISPLAY;調(diào)顯示子程序MOVAH,4CH;返回DOSINT21HEXCH2_16PROCNEAR;轉(zhuǎn)換子程序….EXCH2_16ENDPDISPLAYPROCNEAR;顯示子程序…..DISPLAYENDPCODEENDSENDSTART第49頁(yè)例2:(1)設(shè)計(jì)要求:設(shè)計(jì)多字節(jié)減法運(yùn)算程序,要求程序能顯示運(yùn)算數(shù)據(jù)和結(jié)果數(shù)據(jù)(16進(jìn)制)分模塊設(shè)計(jì)要求:①多字節(jié)減法9900664488H--885522H=?數(shù)據(jù)按逆序存放:先低位后高位②多字節(jié)顯示:先顯示高位,后低位③回車換行操作(2)程序流圖

第50頁(yè)8844660099225588D1D2高位字節(jié)低位字節(jié)9900664488885522

98FFCDEF66第51頁(yè)第52頁(yè)NAMEEX2PAGE50,70PUBLICD1,D2,N1,N2EXTRNEX21;FAREXTRNEX22;FAR;———————————————————DATSEGMENTPARA’DAT’D1DB88H,44H,66H,00H,99HN1=$一D1D2DB22H,55H,88HN2=$-DZDATENDSSTACSEGMENTPARASTACKSTA1DW100DUP(?)STACENDS….STAPROCFAR...第53頁(yè)……….STD;LEASI,D1ADDSI,N1-1;指向被減數(shù)D1高位字節(jié)MOVCX,N1;被減數(shù)D1長(zhǎng)度送CXCALLEX21;顯示被減數(shù)CALLPP2;回車與換行LEASI,D2ADDSI,N2-1;指向減數(shù)D2高位字節(jié)MOVCX,N2;減數(shù)D2長(zhǎng)度送CXCALLEX21;顯示減數(shù)CALLPP2;回車與換行CALLEX22;調(diào)用多字節(jié)減法子程序LEASI,D1ADDSI,N1-1;指向結(jié)果單元高位字節(jié)MOVCX,N1CALLEX21;顯示結(jié)果RETSTAENDP8844660099335588SISI高位字節(jié)低位字節(jié)第54頁(yè)多字節(jié)減法子程序:

EX22PROCFAR…..LEASI,D1;指向被減數(shù)LEADI,D2;指向減數(shù)MOVBX,N1;送被減數(shù)長(zhǎng)度MOVCX,N2;減數(shù)字節(jié)數(shù)MM:MOVAL,[DI]SBB[SI],AL;帶借位減INCDI;指向下一個(gè)字節(jié)INCSIDECBXLOOPMM

M1:JZM2;JNCM2SBBBYTEPTR[SI],0INCSIDECBXJMPM1M2:RETEX22ENDP第55頁(yè);多字節(jié)二進(jìn)制數(shù)轉(zhuǎn)換成16進(jìn)制數(shù)并顯示(P186)NAMEEX21PUBLICEX21CODESEGMENTPARA‘CODE’EX21PROCFAR….F:LOBSD;AL[SI]….RETEX21ENDPCODEENDSEND第56頁(yè)例3.排序程序設(shè)計(jì)排序是把表中元素按某種規(guī)律排列起來,排序需要事先約定排序條件,稱為關(guān)鍵條件。表中元素按值大小升序或降序排列。(1)設(shè)計(jì)要求設(shè)源程序代碼段中有沒有序字符表,將其按代碼值大小升序排序,顯示排序前后字符表,顯完,提醒OK字符。(2)程序算法氣泡排序是一個(gè)慣用排序方法,它規(guī)則是:表中相鄰兩元素—一比較,并把大值元素向下交換,直至表尾(大值元素落底),此時(shí),稱為一次冒泡(程序中一次大循環(huán))。以后重復(fù)冒泡排序,直至最小元素冒到表頂為止。若在一次冒泡排序中沒有出現(xiàn)兩元素交換(設(shè)標(biāo)志為0),則停頓排序。第57頁(yè)353947324930353947324930353947324930353932474930353932474930第1趟:6個(gè)數(shù),將最大數(shù)降到底部,6個(gè)數(shù)需比較5次COUNT=5,BX=0(第一趟),DL=5(外循環(huán))CX=5-0(內(nèi)循環(huán))修改:BX=BX+1=1DL=DL-1=4(剩4趟)353932473049SI第58頁(yè)353932473049353932473049353239473049353239473049353239304749第2趟:將最大數(shù)降到底部,5個(gè)數(shù)需比較4次COUNT=4,BX=1(第2趟),DL=4(外)CX=5,CX=CX-BX=5-1=4(內(nèi)循環(huán)次數(shù))修改:BX=BX+1=1+1=2DL=DL-1=3(剩3趟)SI第59頁(yè)353239304749323539304749323539304749323530394749第3趟:將最大數(shù)降到底部,4個(gè)數(shù)需比較3次COUNT=3,BX=2(第3趟),DL=3(外)CX=5,CX=CX-BX=5-2=3(內(nèi)循環(huán)次數(shù))修改:BX=BX+1=3DL=DL-1=2(剩2趟)SI第60頁(yè)323530394749323530394749323035394749第4趟:將最大數(shù)降到底部,3個(gè)數(shù)需比較2次COUNT=5,BX=3(第4趟),DL=2(外循環(huán)次數(shù))CX=CX-BX=5-3=2(內(nèi)循環(huán)次數(shù))修改:BX=BX+1=4DL=DL+1=1(剩2趟)SI第61頁(yè)32303539474930323539

溫馨提示

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