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.mzph.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…