匯編語言 第十一章 深入Windows匯編編程.ppt

匯編語言 第十一章 深入Windows匯編編程.ppt

ID:51587971

大?。?44.00 KB

頁數(shù):37頁

時間:2020-03-24

匯編語言 第十一章 深入Windows匯編編程.ppt_第1頁
匯編語言 第十一章 深入Windows匯編編程.ppt_第2頁
匯編語言 第十一章 深入Windows匯編編程.ppt_第3頁
匯編語言 第十一章 深入Windows匯編編程.ppt_第4頁
匯編語言 第十一章 深入Windows匯編編程.ppt_第5頁
資源描述:

《匯編語言 第十一章 深入Windows匯編編程.ppt》由會員上傳分享,免費在線閱讀,更多相關內(nèi)容在行業(yè)資料-天天文庫。

1、第十一章深入Windows匯編編程11.1匯編高級語法11.2程序優(yōu)化11.3文件操作11.4結(jié)構(gòu)化異常處理11.1匯編高級語法匯編語言語法問題:分支和循環(huán)程序結(jié)構(gòu)存在標號定義和程序流程復雜的問題可讀性、簡潔性、可維護性不如高級語言編寫匯編程序時比較煩瑣MASM引入了一系列偽指令來實現(xiàn)條件測試、分支和循環(huán)語句等。11.1.1條件測試表達式條件測試表達式的形式:1.寄存器或內(nèi)存變量例如:x;x不等0時為真EAX;EAX不等于0時為真2.利用關系運算符(數(shù)值表達式1)關系運算符(數(shù)值表達式2)關系運算符比

2、較數(shù)值表達式1和數(shù)值表達式2的內(nèi)容關系運算符列表3.利用邏輯運算符(關系或數(shù)值表達式1)邏輯運算符(關系或數(shù)值表達式2)邏輯運算符對表達式進行邏輯運算。邏輯運算符和關系運算符的語法基本和C語言基本類似。邏輯運算符列表4.根據(jù)標志寄存器中的各種標志位符號11.1.2分支偽操作分支語句根據(jù)條件表達式的真假執(zhí)行不同的代碼模塊,與C語言的if/elseif/else/endif相似。語法如下:.IF條件表達式1表達式1為“真”時執(zhí)行的指令[.ELSEIF條件表達式2表達式2為“真”時執(zhí)行的指令][.ELSE上

3、述條件均不滿足時執(zhí)行的指令].ENDIF11.1.3循環(huán)偽操作循環(huán)是重復執(zhí)行的一組指令,分3種:1.WHILE-ENDW循環(huán).WHILE條件測試表達式循環(huán)體.ENDW2.REPEAT-UNTIL循環(huán):.REPEAT循環(huán)體.UNTIL條件測試表達式3.REPEAT-UNTILCXZ循環(huán).REPEAT循環(huán)體.UNTILCXZ[條件測試表達式]使用.BREAK語句可以跳出循環(huán)。格式:.BREAK[.IF退出條件]使用.CONTINUE語句可以跳到循環(huán)體的最后。計算0+1+2+…+8+9的幾個例子例1:.WH

4、ILE/.ENDW循環(huán)形式XOREAX,EAXXOREBX,EBX.WHILEEBX<10ADDEAX,EBXINCEBX.ENDW例2:用.BREAK語句來終止循環(huán)XOREAX,EAXXOREBX,EBX.WHILE1ADDEAX,EBXINCEBX.BREAK.IFEBX>=10.ENDW例3:.REPEAT/.UNTIL循環(huán)的形式XOREAX,EAXXOREBX,EBX.REPEATADDEAX,EBXINCEBX.UNTILEBX>=10例4:.REPEAT/.UNTILCXZ循環(huán)形式MOVE

5、CX,10XOREAX,EAXXOREBX,EBX.REPEATADDEAX,EBXINCEBX.UNTILCXZ11.2程序優(yōu)化評價一個程序優(yōu)劣的要素:實現(xiàn)思想是否合理清晰;書寫風格是否符合規(guī)范;……程序的執(zhí)行效率(重要)程序在多長的時間內(nèi)能夠完成(時間)程序需要多大的存儲空間(空間)11.2.1運行時間的優(yōu)化1.選擇執(zhí)行速度快的指令(1)寄存器清零MOVEAX,0SUBEAX,EAXXOREAX,EAX(2)加減。要使EBX=EAX?30:LEAEBX,[EAX-30](3)乘除。求EAX=EAX

6、/16:SHREAX,4求EAX=EAX*8:SHLEAX,32.操作的轉(zhuǎn)化設被除數(shù)為a,除數(shù)為b,商為c,余數(shù)為d,均為32位二進制數(shù);a÷b=c余d,即a=bc+d;記L=232=100000000H,求出M=(L+(b–1))÷b,則c=aM/L設:L÷b=emodf,L=be+f分兩種情況:(1)f=0,即L能被b整除,M=(L+(b–1)÷b=L/b=e;aM=a(L/b)=((bc+d)L/b)=cL+(dL/b)a乘以M后,結(jié)果是64位數(shù),高32位數(shù)就是c,即EDX。低32位數(shù)為dL/b

7、。(2)0>31)&(y-x))求兩個數(shù)中的較大的數(shù)利用公式max(x,y)=x–(((x–y)>>(WORbyteITS–1))&(x–y))4.算法的優(yōu)化舉例:判斷素數(shù)的算法一般思想:guess為要判斷的數(shù),把從2到guess-1中

8、每一個數(shù)作為除數(shù),去除guess。如果商為0,則不是素數(shù)。優(yōu)化:偶數(shù)不是素數(shù),因此循環(huán)時可每次加2,且不取偶數(shù),沒有必要從3到guess取值,只需取到guess開方值程序prime.asm(P364)。5.查表法要將十六進制數(shù)字0~15轉(zhuǎn)換為‘0’~‘9’、‘A’~‘F’。分析:如果al的初值為0~9,jbe指令會發(fā)生跳轉(zhuǎn),得到‘0’~‘9’。如果al的初值為10~15,則JBE指令不會跳轉(zhuǎn),得到‘A’~‘F’。指令:HexCharsBYTE'01234

當前文檔最多預覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當前文檔最多預覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學公式或PPT動畫的文件,查看預覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負責整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細閱讀文檔內(nèi)容,確認文檔內(nèi)容符合您的需求后進行下載,若出現(xiàn)內(nèi)容與標題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。