位匯編語言-表達式與操作符.ppt
《位匯編語言-表達式與操作符.ppt》由會員分享,可在線閱讀,更多相關《位匯編語言-表達式與操作符.ppt(19頁珍藏版)》請在裝配圖網上搜索。
2020 1 22 1 宋軍計算機學院信息安全系songjun 表達式與操作符 2 2020 1 22 主要內容 匯編語言開發(fā)環(huán)境MASM32匯編語言程序結構匯編語言的語句格式匯編語言程序格式MASM偽指令 3 2020 1 22 變量 類型 字節(jié)型 字與雙字 多字節(jié) 結構 枚舉存儲 全局變量 局部變量 定義全局變量的時候類型才可以用縮寫 4 2020 1 22 全局變量 全局變量的作用域是整個程序 Win32匯編的全局變量定義在 data或 data 段內 可以同時定義變量的類型和長度 格式是 變量名類型初始值1 初始值2 變量名類型重復數(shù)量dup 初始值1 初始值2 5 2020 1 22 全局變量的初始化 全局變量在定義中既可以指定初值 也可以只用問號預留空間在 data 段中 只能用問號預留空間 因為 data 不能指定初始值 實際運行的時候 未初始化的值是0 word Bufferdw100dup 1 2 一組字 以0001 0002 0001 0002 的 順序在內存中重復100遍 一共是200個字 szBufferbyte1024dup 1024字節(jié)的緩沖區(qū) 在byte類型變量的定義中 用引號定義字符串和數(shù)值定義的方法混用szTextdb Hello world 0dh 0ah Helloagain 0dh 0ah 0 6 2020 1 22 局部變量 兩個以上子程序都要用到的數(shù)據(jù)才被定義為全局變量統(tǒng)一放在數(shù)據(jù)段中 僅在子程序內部使用的變量則放在堆棧中在進入子程序的時候 通過修改堆棧指針esp來預留出需要的空間 在用ret指令返回主程序之前 同樣通過恢復esp丟棄這些空間空間是臨時分配的 所以無法定義含有初始化值的變量 對局部變量的初始化一般在子程序中由指令完成 7 2020 1 22 局部變量的定義 local偽指令必須緊接在子程序定義的偽指令proc后 其他指令開始前Win32匯編默認的類型是dword 如果定義dword類型的局部變量 則類型可以省略 當定義數(shù)組的時候 可以 括號括起來 不能使用定義全局變量的dup偽指令 局部變量不能和已定義的全局變量同名 在不同的子程序中可以有同名的局部變量 局部變量的起始值是隨機的 是其他子程序執(zhí)行后在堆棧里留下的垃圾 local變量名1 重復數(shù)量 類型 變量名2 重復數(shù)量 類型 8 2020 1 22 數(shù)值表達式 數(shù)值表達式一般是指由運算符連接的各種常數(shù)所構成的表達式匯編程序在匯編過程中計算表達式 最終得到一個數(shù)值程序運行之前 就已經計算出了表達式 所以 程序運行速度沒有變慢 但增強程序的可讀性MASM對除偽指令外各種匯編時處理的指令統(tǒng)稱為操作符 Operator 9 2020 1 22 運算符 算術運算符 MOD移位運算符 SHLSHR邏輯運算符 ANDORNOTXOR關系運算符 EQNEGTLTGELE高低分離符 HIGHLOWHIGHWORDLOWWORD 10 2020 1 22 算術運算符 實現(xiàn)加 減 乘 除 取余的算術運movax 3 4 5 等價于movax 17MOD也稱為取模 它產生除法之后的余數(shù)19mod7 5加 和減 運算符還可以用于地址表達式除加 減外 其他運算符的參數(shù)應是整數(shù) 11 2020 1 22 邏輯運算符 實現(xiàn)按位相與 相或 異或 求反的邏輯運算oral 03hAND45h 等價于oral 01h 47HAND0FH NOT56H計算結果分別為 7和0A9H 12 2020 1 22 移位運算符 實現(xiàn)對數(shù)值的左移 右移的邏輯操作 移入低位或高位的是0格式為 數(shù)值表達式SHL SHR移位次數(shù)moval 0101bSHL 2 2 等價于moval 01010000b 13 2020 1 22 關系運算符 用于比較和測試符號數(shù)值MASM用0FFFFH 補碼 1 表示條件為真 用0000H表示條件為假 movbx PORTLT5 AND20 OR PORTGE5 AND30 當PORT 5時 匯編結果為movbx 20 否則 匯編結果為movbx 30 14 2020 1 22 高低分離符 取數(shù)值的高半部分或低半部分HIGH LOW從一個字數(shù)值或符號常量中得到高 低字節(jié)movah HIGH8765h 等價于movah 87h從MASM6 0引入的HIGHWORD LOWWORD取一個符號常量 不能是其他常數(shù) 的高字或低字部分dd valueequ0ffff1234h 定義一個符號常量movax LOWWORDdd value 等價于movax 1234h 15 2020 1 22 其它操作符 類型屬性操作符 TYPE長度屬性操作符 LENGTH容量屬性 SIZE強制屬性操作符 PTR存儲單元別名操作符 THIS 16 2020 1 22 運算符與操作符的優(yōu)先級 LENGTHSIZEPTROFFSETSEGTPYETHISHIGELOW MODSHLSHR EQNEGTLTGELENOTANDORXOR 高低 17 2020 1 22 地址表達式 地址表達式是計算存儲單元地址的表達式 它可由標號 變量名和由括號括起來的基址或變址寄存器組成 其計算結果表示一個存儲單元的地址 而不是該存儲單元的值 B1 B1 3 W1 1 moval B1moval B1 3movax W1 1 B1 3 18 2020 1 22 地址操作符 取得名字或標號的段地址和偏移地址兩個屬性 將括起的表達式值作為存儲器地址 當前偏移地址OFFSET名字 標號返回名字或標號的偏移地址 采用指定的段地址寄存器SEG名字 標號返回名字或標號的段基址 19 2020 1 22 386 modelflat stdcalloptioncasemap noneincludewindows incincludekernel32 incincludelibkernel32 lib dataB1BYTE01h 02hDB ABCD W1WORD1234h 5678h codestart moval B1moval B1 1 movax W1 1moveax offsetW1moveax invokeExitProcess NULLendstart text 00401000publicstart text 00401000startprocnear text 00401000moval byte 403000 text 00401005moval byte 403001 text 0040100Amovax word 403007 text 00401010moveax offsetunk 403006 text 00401015 text 00401015loc 401015 text 00401015moveax offsetloc 401015 text 0040101Apush0 uExitCode text 0040101CcallExitProcess text 0040101Cstartendp data 00403000byte 403000db1 data 00403001byte 403001db2 data 00403002db41h A data 00403003db42h B data 00403004db43h C data 00403005db44h D data 00403006unk 403006db34h data 00403007word 403007dw7812h data 00403009db56h- 配套講稿:
如PPT文件的首頁顯示word圖標,表示該PPT已包含配套word講稿。雙擊word圖標可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設計者僅對作品中獨創(chuàng)性部分享有著作權。
- 關 鍵 詞:
- 匯編語言 表達式 操作
裝配圖網所有資源均是用戶自行上傳分享,僅供網友學習交流,未經上傳用戶書面授權,請勿作他用。
鏈接地址:http://www.820124.com/p-5183700.html