Win32ASM學習[6]: PTR、OFFSET、ADDR、THIS

?

PTR: 指定要操作的數據尺寸

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

.386
.model flat, stdcall

include??? windows.inc
include??? kernel32.inc
include??? masm32.inc
include??? debug.inc
includelib kernel32.lib
includelib masm32.lib
includelib debug.lib

.data
??? val db 11h, 22h, 33h, 44h, 55h, 66h, 77h, 88h

.code
main proc
??? xor eax, eax??????????????????? ;清空 EAX, 同 mov eax, 0
??? mov eax, dword ptr val?? ;
??? PrintHex eax????????????????? ?;44332211
???
??? xor eax, eax??????????????????????;
??? mov eax, dword ptr val+1 ;
??? PrintHex eax???????????????????? ?;55443322
???
??? xor eax, eax???????????? ;
??? mov ax, word ptr val???? ;
??? PrintHex eax???????????? ;00002211
???
??? xor eax, eax???????????? ;
??? mov al, byte ptr val???? ;
??? PrintHex eax???????????? ;00000011
??? ret
main endp
end main

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

OFFSET 和 ADDR 的異同:
1、offset 不能獲取局部變量的地址;
2、addr 只能用于調用函數(invoke)時, 不能用于賦值操作;
3、addr 面對局部變量時會轉換為 lea 等指令, addr 面對全局變量時則直接調用 offset;
4、在 invoke 中應盡量使用 addr, 其他只用 offset.

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

.386
.modelflat,
stdcall

include
?? windows.inc

include
?? kernel32.inc
include
?? masm32.inc
include
?? debug.inc
includelib
kernel32.lib
includelib
masm32.lib
includelib
debug.lib

.data
??? TextAddr equ this byte? ;偽指令 this 可讓當前變量和下一個變量同址
??? szText db'Asm', 0
.code
main proc
??? PrintHex offset szText? ;00403000
??? PrintHex offset TextAddr ;00403000
???
??? PrintString szText????? ;Asm
??? mov [TextAddr], 'a'???? ;給 TextAddr 賦值
??? PrintString szText????? ;asm
??? ret
main
endp
end
main

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

同址異名

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

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

相關文章

簡述WebService的使用(一)

環境: vs版本:vs2013 windows版本:win7 IIS版本:IIS7.0 (如果覺得對您有用,請點擊右下角【推薦】一下,讓更多人看到,謝謝) 配置環境: 主要針對于IIS 首先&…

【Java基礎】用LinkedList實現一個簡單棧的功能

棧的基本功能 棧的最基本功能是保障后進先出,然后在此基礎上可以對在棧中的對象進行彈入彈出,此外,在彈出時,如果棧為空,則會報錯,所以還需要提供獲取當前棧大小的方法。 構造存儲對象Student /*** Created…

Win32匯編學習[7]: 定義符號常量(=、EQU、TEXTEQU)

關于符號常量 的例子 .386 .model flat,stdcall include windows.inc include kernel32.inc include masm32.inc include debug.inc includelib kernel32.lib includelib masm32.lib includelib debug.lib .data n 1 ; 偽指令只能定義整數或整數表達式…

oracle 刪除表中重復記錄,并保留一條

1、查找表中多余的重復記錄,重復記錄是根據單個字段(Id)來判斷 select * from 表 where Id in (select Id from 表 group byId having count(Id) > 1) 2、刪除表中多余的重復記錄,重復記錄是根據單個字段(Id&#x…

透過WinDBG的視角看String

摘要 : 最近在博客園里面看到有人在討論 C# String的一些特性. 大部分情況下是從CODING的角度來討論String. 本人覺得非常好奇, 在運行時態, String是如何與這些特性聯系上的. 本文將側重在通過WinDBG來觀察String在進程內的布局, 以此來解釋C# String的一些特性. 問題 C# Stri…

Win32ASM學習[8]: 進制轉換的庫函數

在 masm32.inc 中有這樣幾個函數的聲明: byt2bin_ex PROTO :BYTE, :DWORD wrd2bin_ex PROTO :WORD, :DWORD dw2bin_ex PROTO :DWORD, :DWORD dw2hex_ex PROTO :DWORD, :DWORD bin2byte_ex PROTO :DWORD -------------------------------------------------------------…

SOJ 2800_三角形

真的是O不是0【看了discuss才發現。。。。。一個大寫的蠢 【題意】多個黑白三角形組成的倒三角,求白三角形組成的最大倒三角的面積 【分析】由于問的是倒三角個數,所以只需看與行數奇偶性相同的白色倒三角形,設v[i][j]為以第i行第j列的倒三角…

ueditor富文本編輯器 修改框寬度和高度的方法

在使用ueditor的時候&#xff0c;用的textarea <textarea name"content" id"myEditor">這里寫這條規則的回復內容</textarea> 給它加style"width:300" 屬性的時候&#xff0c;發現不起作用。 正確的方法應該是&#xff1a; <scri…

Win32ASM學習[9]: 標志寄存器

TF(Trap Flag)——位8&#xff0c;跟蹤標志。置1 則開啟單步執行調試模式&#xff0c;置0 則關閉。在單步執行模式下&#xff0c;處理器在每條指令后產生一個調試異常&#xff0c;這樣在每條指令執行后都可以查看執行程序的狀態。如果程序用POPF、POPFD 或者ET 指令設置TF 標志…

TCP多進程并發服務端 Linux socket編程入門(2)

這里很簡單的使用了fork()函數&#xff0c;在執行了fork()以后的所有代碼都會由子進程和父進程同時執行。 他們同時擁有相同的資源&#xff08;兩份拷貝&#xff09;&#xff0c;所以在子進程執行的過程中&#xff0c;子進程需要先close掉listenfd&#xff08;監聽套接字&#…

ArcEngine 打開shape文件

IWorkspaceFactory wsf new ShapefileWorkspaceFactory(); IWorkspace pWorkspace wsf.Open(filePath, 0) ;//filePath為shapefile所在的文件夾 IFeatureWorkspace pFeatureWorkspace pWorkspace ; IFeatureClass pFeatureClass pFeatureWorkspace.OpenFeatureClass(&quo…

Win32ASM學習[10]:傳送指令

匯編指令的一般性要求: 1、兩個操作數的尺寸必須一致; 2、操作數不能同為內存. --------------------------------------------------------------------------------------------------------------- ;mov ;該指令不影響 EFlags ;指令格式: (其中的 r、m、i 分別表示: 寄存器、…

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…