Win32ASM學習[10]:傳送指令

?

匯編指令的一般性要求: 1、兩個操作數的尺寸必須一致; 2、操作數不能同為內存.
---------------------------------------------------------------------------------------------------------------

;mov

;該指令不影響 EFlags
;指令格式: (其中的 r、m、i 分別表示: 寄存器、內存、立即數)
mov?r/m, r/m/i

?

??? mov val, 123
??? mov? edx
, val
??? mov? eax, edx

??? PrintDec edx????? ;123

---------------------------------------------------------------------------------------------------------------

Lea

;該指令不影響 EFlags
;指令格式:
LEA r, m

?

.data
??? szText db 'ABCDEFG', 0
.code
main
proc
??? lea eax
, offset szText
??? lea ebx, szText
??? PrintHex eax ;00403000
??? PrintHex ebx ;00403000
??? ret
main
endp
end
main

讓我感到比較困惑的是?? lea 的那條居然會輸出地址? - -

---------------------------------------------------------------------------------------------------------------

XCHG(Exchange): 交換指令

?數據交換指令 XCHG

?格式: XCHG OPRD1,OPRD2 其中的OPRD1為目的操作數,OPRD2為源操作數

?功能: 將兩個操作數相互交換位置,該指令把源操作數OPRD2與目的操數OPRD1交換.

?說明: 1. OPRD1及OPRD2可為通用寄存器或存儲器,但是兩個存儲器之間是不能用XCHG指令? ----???? 實現的.

?????? 2. 段寄存器內容不能用XCHG指令來交換.

????????? 示例: XCHG AX,BX
??????????????? XCHG SI,AX
??????????????? XCHG CL,CH
??????????????? XCHG DX,BUFFER
??????????????? XCHG CH,DATA2[SI]
??????????????? SCHG WORDA,CX
?
?????? 3. 若要實現兩個存儲器操作數DATA1及DATA2的交換,可用以下指令實現:
????????? 示例: PUSH DATA1
??????????????????PUSH DATA2
??????????????? ? POP DATA1
???????????????? ?POP DATA2

????????? 注意: 此處通過中間寄存器,也很容易實現兩個存儲器操作數的交換.

?????? 4. 本指令不影響狀態標志位.

XCHG r/m, r/m

---------------------------------------------------------------------------------------------------------------

XLATB(Translate Byte)、XLAT(Translate): 換碼指令

查表指令 XLAT/XLATB
?
?格式: XLAT TABLE 其中TABLE為一待查表格的首地址.
?----? XLATB TABLE 其中TABLE為一待查表格的首地址.????
?功能: 把待查表格的一個字節內容送到AL累加器中.在執行該指令前,應將 TABLE先送至BX? ----? 寄存器中,然后將待查節節與在表格中距表首地址位移量送AL,即 (AL)<--((BX)+(AL)).

;XLATB 可簡化為 XLAT
;該指令不影響 EFlags
;XLAT 無參數, 操作和 EBX、AL 相關
;執行 XLAT 前, 先把源地址放入 EBX, 把字節序號放入 AL
;執行后, 指定字節被讀入 AL

?

.data
??? szText db 'ABCDEFG', 0
.code
main
proc
??? lea ebx
, szText

? ? mov al, 1
??? xlat
???

??? PrintHex al ;42 - 這是 'B' 的 ASSII 編碼
???
??? mov al
, 2

??? xlatb

??? PrintHex al ;43 - 這是 'C' 的 ASSII 編碼
??? ret
main
endp
end
main

---------------------------------------------------------------------------------------------------------------

MOVSX 指令

格式: MOVSX OPD,OPS

功能: 將8位或16位的OPS符號擴展為16位或32位, 再傳給OPD.所謂的符號擴展, 就是當??? ----? 把一個字節擴展為字或是一字擴展為雙字時,高位字節的各位和原數最高位相同,這??????? 可以保證原來用補碼表示的數值不變.這條指令一般用于帶符號數的擴展.

如果源操作數的最高位是 1, MOVSX 會將目標寄存器中高出的位補 1; 反之補 0

說明: 指令舉例

1. MOVSX EAX ,BX????
2. MOVSX ECX,CL????
3. MOVSX DX,DL

?

.data
??? bVal?? db 90h
??? dwVal1 dw 7FFFh
??? dwVal2 dw 8000h
.code
main proc
??? movzx eax, dwVal1
??? movsx edx, dwVal1
??? PrintHex eax ;00007FFF
??? PrintHex edx ;00007FFF
???
??? movzx eax, dwVal2
??? movsx edx, dwVal2
??? PrintHex eax ;00008000
??? PrintHex edx ;FFFF8000
???
??? mov cl, bVal
??? movzx ax, cl
??? movsx dx, cl
??? PrintHex ax? ;0090
??? PrintHex dx? ;FF90
??? ret
main endp
end main
-------------------------------------------------------------------------------------------------------------------------------


本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/375365.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/375365.shtml
英文地址,請注明出處:http://en.pswp.cn/news/375365.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

SQL Server 中關于 @@error 的一個小誤區

SQL Server 中關于 error 的一個小誤區 原文:SQL Server 中關于 error 的一個小誤區在SQL Server中&#xff0c;我常常會看到有些前輩這樣寫&#xff1a; if(error<>0)ROLLBACK TRANSACTION T elseCOMMIT TRANSACTION T 一開始&#xff0c;我看見別人這么寫&#xff0c;我…

Win32ASM學習[11]:邏輯運算

--------------------------------------------------------------------------------------------------------------------------- 一.邏輯與運算指令 AND 格式: AND OPRD1,OPRD2其中目的操作數OPRD1為任一通用寄存器或存儲器操作數.源操作數OPRD2為立即數、任一通用寄存器…

JavaScript消息框

1.警告框 function myTest(){alert("這里的內容會彈出");} 2.確認框 其返回的值是 true 或 false 。 function myTest(){confirm("這里的內容會彈出");} 3.提示框 prompt prompt(參數1&#xff0c;參數2)&#xff1a;其參數1 是顯示提示要輸入的信息&…

.Net 事務

在分布式應用程序中&#xff0c;不可避免地會經常使用到事務控制。事務有一個開頭和一個結尾&#xff0c;它們指定了事務的邊界&#xff0c;事務在其邊界之內可以跨越進程和計算機。事務邊界內的所有資源都參與同一個事務。要維護事務邊界內資源間的一致性&#xff0c;事務必須…

Win32ASM學習[12]:位測試指令位掃描指令

----------------------------------------------------------------------------------------------------------------------- 一.BT 指令 格式: BT OPD,OPS 功能: 目的操作數OPD中由源操作數OPS指定的位送CF標志 說明: 1. 在指令中,目的操作數OPD只能是16/32位通用寄存器…

Android WifiDisplay分析一:相關Service的啟動

網址&#xff1a;http://www.2cto.com/kf/201404/290996.html 最近在學習Android 4.4上面的WifiDisplay(Miracast)相關的模塊&#xff0c;這里先從WifiDisplay用到的各個Service講起&#xff0c;然后再從WifiDisplaySettings里面講解打開wfd的流程。首先看下面的主要幾個Servic…

mvc controller跳轉頁面方法

1、直接Redirect后加 Controller/Action Response.Redirect("/User/Edit"); // return Redirect("/User/Edit"); return RedirectToAction("about","Home"); Response.Redirect("/User/Edit"); 2、直接r…

Win32ASM學習[13]:移位指令SHL,SHR,SAL,SAR,ROL,ROR,RCL,RCR,SHLD,SHRD

一. SHL、SHR、SAL、SAR: 移位指令 ---------------------------------------------------------------------------------------------------- ;SHL(Shift Left): 邏輯左移 ;SHR(Shift Right): 邏輯右移 ;SAL(Shift Arithmetic Left): 算術左移 ;SAR(Shift Ari…

angular中的表單驗證

angular中的表單驗證很強大&#xff0c; 一共有5中驗證信息&#xff0c;$valid,$invalid,$pristine,$dirty,$error. $valid-----當驗證通過的時候&#xff0c;為true,不通過的時候為false $invalid----當驗證不通過的時候&#xff0c;為true&#xff0c;通過的時候為true $pris…

Cortex-A15 Memory Hierarchy

ARM 平臺為實現速度和成本的平衡&#xff0c;使用多個層次的內存架構。對于多核 CPU 組成的 SOC&#xff0c;每個CPU 內部都有一組高速緩存&#xff0c;包含&#xff1a;ICache、DCache 和 TLB。多個 CPU 共享一個更大的 L2 緩存。L2緩存再和 CPU 外部的DDR3 內存交互。ICache …

Win32ASM學習[14]:符號擴展指令: CBW,CWDE,CDQ,CWD

----------------------------------------------------------------------------------------------------------------------------------------------------------------- ;CBW(Convert Byte to Word): 將 AL 擴展為 AX ;CWDE(Convert Word to Extended Double): 將 …

Win32ASM學習[15]:加減指令: INC、DEC、NEG、ADD、ADC、SUB、SBB、CMP

------------------------------------------------------------------------------------------------------------------------------------------------------------------- ;INC(Increment): 加一 ;DEC(Decrement): 減一 ;NEG(Negate): 求補(求反) ;ADD(Add): 加 ;A…

UINavigationController的簡單使用

UINavigationController的使用步驟初始化UINavigationController設置UIWindow的rootViewController為UINavigationController根據具體情況&#xff0c;通過push方法添加對應個數的子控制器UINavigationController的子控制器UINavigationController以棧的形式保存子控制器proper…

Android 圖片的縮略圖

<1>簡介 之前往往是通過Bitmap、Drawable和Canvas配合完成&#xff0c;需要寫一系列繁雜的邏輯去縮小原有圖片&#xff0c;從而得到縮略圖。 現在我給大家介紹一種比較簡單的方法&#xff1a;&#xff08;網上有&#xff09; 在Android 2.2版本中&#xff0c;新增了一個T…

Win32ASM學習[16] :乘除指令: MUL、IMUL、DIV、IDIV

---------------------------------------------------------------------------------------------------------------------------------------------------------------------- 一. 無符號數乘法指令 MUL(MULtiply) 格式: MUL OPRD 功能: 乘法操作. 說明: 1. OPRD為通用…

Linux命令之man

一、引言 一直聽別人說linux下有個男人很厲害&#xff0c;遇到不會的不懂的都可以問他&#xff0c;自己也會幾個man命令&#xff0c;但是一直不知道到底man命令是怎么用的&#xff0c;比如查詢不同類的幫助該在man后跟數字幾&#xff0c;man后的數字有什么具體的意思&#xff0…

《JavaScript權威指南》學習筆記 第二天 下好一盤大棋

前段學習js的時候總是零零散散的&#xff0c;以至于很多東西都模棱兩可。時間稍微一久&#xff0c;就容易忘記。最主要的原因是這些東西&#xff0c;原來學的時候就不是太懂&#xff0c;以至于和其他知識無法形成記憶鏈&#xff0c;所以孤零零的知識特別容易忘記。重溫犀牛書&a…

Win32ASM學習[17]:條件跳轉

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 一.跳轉相關的標志位: 11 10 9 8 7 6 5 4 3 2 1 0 OF DF IF TF SF Z…

SUID或SGID程序中能不能用system函數

system()函數的聲明和說明如下&#xff1a; 注意它的描述那里&#xff0c;system()執行一個由command參數定義的命令&#xff0c;通過調用/bin/sh -c命令來實現這個功能。也就是說它的邏輯是這樣的&#xff01; 進程調用system函數&#xff0c;system函數調用fork創建一個子進程…

史上最全的maven pom.xml文件教程詳解

<project xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instance xsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd >; <!-- 父項目的坐標。如果項目中沒有規定某個元素的值&am…