Win32ASM学习[10]:传送指令
| 匯編指令的一般性要求: 1、兩個(gè)操作數(shù)的尺寸必須一致; 2、操作數(shù)不能同為內(nèi)存. ;mov ;該指令不影響 EFlags ? ??? mov val, 123 ??? PrintDec edx????? ;123 --------------------------------------------------------------------------------------------------------------- Lea ;該指令不影響 EFlags ? .data 讓我感到比較困惑的是?? lea 的那條居然會(huì)輸出地址? - - --------------------------------------------------------------------------------------------------------------- XCHG(Exchange): 交換指令 ?數(shù)據(jù)交換指令 XCHG ?格式: XCHG OPRD1,OPRD2 其中的OPRD1為目的操作數(shù),OPRD2為源操作數(shù) ?功能: 將兩個(gè)操作數(shù)相互交換位置,該指令把源操作數(shù)OPRD2與目的操數(shù)OPRD1交換. ?說明: 1. OPRD1及OPRD2可為通用寄存器或存儲(chǔ)器,但是兩個(gè)存儲(chǔ)器之間是不能用XCHG指令? ----???? 實(shí)現(xiàn)的. ?????? 2. 段寄存器內(nèi)容不能用XCHG指令來交換. ????????? 示例: XCHG AX,BX ????????? 注意: 此處通過中間寄存器,也很容易實(shí)現(xiàn)兩個(gè)存儲(chǔ)器操作數(shù)的交換. ?????? 4. 本指令不影響狀態(tài)標(biāo)志位. XCHG r/m, r/m --------------------------------------------------------------------------------------------------------------- XLATB(Translate Byte)、XLAT(Translate): 換碼指令 查表指令 XLAT/XLATB ;XLATB 可簡化為 XLAT ? .data ? ? mov al, 1 ??? PrintHex al ;42 - 這是 'B' 的 ASSII 編碼 --------------------------------------------------------------------------------------------------------------- MOVSX 指令 格式: MOVSX OPD,OPS 功能: 將8位或16位的OPS符號(hào)擴(kuò)展為16位或32位, 再傳給OPD.所謂的符號(hào)擴(kuò)展, 就是當(dāng)??? ----? 把一個(gè)字節(jié)擴(kuò)展為字或是一字?jǐn)U展為雙字時(shí),高位字節(jié)的各位和原數(shù)最高位相同,這??????? 可以保證原來用補(bǔ)碼表示的數(shù)值不變.這條指令一般用于帶符號(hào)數(shù)的擴(kuò)展. 如果源操作數(shù)的最高位是 1, MOVSX 會(huì)將目標(biāo)寄存器中高出的位補(bǔ) 1; 反之補(bǔ) 0 說明: 指令舉例 1. MOVSX EAX ,BX???? ? .data |
總結(jié)
以上是生活随笔為你收集整理的Win32ASM学习[10]:传送指令的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 地下城如何设置一键拾取
- 下一篇: Win32ASM学习[11]:逻辑运算