assume 最典型的用法:是指明变量与段寄存器的联系,比如 assume ds:data,它是告诉编译器以后所有在data段中定义的变量寻址时,使用ds作为段地址,但是它不对程序作任何事,比如你必须自己对ds赋值,这也就是为什么dos下典型的汇编段如下:

.data........
.code........assume cs:code,ds:data
start: .......mov ax,datamov ds,ax...
ends
end start

它也经常用来将寄存器当作结构体指针来用

ASSUME edx:ptr STRUCT ;将edx 定义为STRUCT指针变量,把STRUCT结构体的起始地址给edx
lea edx, STRUCT ;用 [edx].调用STRUCT的字段
ASSUME edx:nothing ;取消定义 这个时候edx 不是指针,[edx].不能调用字段了

实例: 参见《Windows PE权威指南》

BookStrore STRUCTName db 8 dup(8);书库的名字Address dd ? ;书库所在地址Count dd ? ;书库中藏书量
BookStrore ENDSname1 db "书库1",0
lib1 BookStrore <?>move ebx ,lib1
assume ebx:ptr BookStrore;
invoke memcpy,[ebx].Name,add name1 (此处跟书上有略微不同)
mov eax,12345h
mov [ebx].Address ,eax;
mov eax, 2
mov [ebx].Count, eax
assume ebx:nothing

assume fs:nothing这句话在WIN32汇编里是啥意思?

assume fs:nothing
mov eax,fs[0]

因为MASM编译器默认WINDOWS默认FS指向异常处理代码段,所以在程序中要使用FS寄存器就要用

assume fs:nothing

来声明,否则就会报错。

汇编中的ASSUME的使用相关推荐

  1. 关于汇编中的assume

    看汇编代码时,始终搞不清楚assume是干什么用的,今天在论坛上搜了一下,发现一个网友这样解释: "在数据段中定义的每一个变量标志符其实都代表了一个偏移量(也称为有效地址),这个偏移量与数据 ...

  2. 汇编中的assume

    "在数据段中定义的每一个变量标志符其实都代表了一个偏移量(也称为有效地址),这个偏移量与 数据段段值相结合就指向某个内存地址.在程序中使用ASSUME伪指令是用来指明一个默认的段地址.一旦你 ...

  3. 计算机组成原理db和dw,汇编中的DW是什么意思那DB 它们什么作用

    汇编中的DW是什么意思那DB 它们什么作用以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 汇编中的DW是什么意思那DB ...

  4. 汇编中各寄存器的作用(16位CPU14个,32位CPU16个)和 x86汇编指令集大全(带注释)

    From:https://www.cnblogs.com/zimmerk/articles/2520011.html From:https://blog.csdn.net/bjbz_cxy/artic ...

  5. 汇编中各寄存器的作用(16位CPU14个,32位CPU16个)和 x86汇编指令集大全(带注释)...

    From:https://www.cnblogs.com/zimmerk/articles/2520011.html From:https://blog.csdn.net/bjbz_cxy/artic ...

  6. 汇编中Enter和Leave指令

    Enter的作用相当==push ebp和mov ebp,esp 这后面两句大家很熟悉吧?函数开始一般都是这两句 Leave的作用相当==mov esp,ebp和pop ebp 而这后面这两句也很常见 ...

  7. 逆向知识十三讲,汇编中数组的表现形式,以及还原数组

    讲解数组之前,要了解数组的特性 1.数据具有连续性 2.数据类型相同 比如: int Ary[3] = {0,1,2}; 我们可以看出,上面定义的数组,数据是连续的,其中每个数据类型大小都是int类型 ...

  8. 汇编中的DW:DW 定义一个字

    汇编中的DW是什么意思?那DB呢 DW 定义一个字 DB 定义一个字节 DD 定义一个双字 前面的D表示定义,后面的字母W .B .D依次表示字(一般为16位).字节(为8位).双字(一般为32位)

  9. ARM汇编:汇编中proc、endp、ret、near、far指令用法

    ARM汇编:汇编中proc.endp.ret.near.far指令用法 子程序名 PROC NEAR ( 或 FAR ) -- ret 子程序名 ENDP (1)NEAR属性(段内近调用): 调用程序 ...

最新文章

  1. 二部图最大权匹配_12,百度竞价推广账户搭建,关键词匹配-网络运营文字版
  2. Face Recognition for the Happy House-v3
  3. 【认证课程】NP 理论复习之ospf(一)
  4. php如何对几G的文本数据去重,Linux下导出数据库文件进行统计+去重
  5. c语言数据结构线性表LA和LB,数据结构(C语言版)设有线性表LA(3,5,8,110)和LB(2,6,8,9,11,15,20)求新集合?...
  6. Java内存溢出和内存泄露后怎么解决
  7. linux mint cinnamon_最佳 Linux 发行版汇总
  8. No buffer space available
  9. python程序设计第一章答案_Python《学习手册:第一章-习题》
  10. 2021年7月国产数据库排行榜:openGauss成绩依旧亮眼,Kingbase向Top 10发起冲刺
  11. IOS第11天(4:UIDatePicker时间选择,和键盘处理,加载xib文件,代理模式)
  12. 数据抓取的艺术(三)
  13. 湖南超级计算机研学,以超算之速,跨越弦歌千年 | 建宁实验中学中考励志研学...
  14. 关键字const的使用总结
  15. JDBC数据库驱动的下载与安装与连接
  16. mysql日期时间相关
  17. OpenInventor开发环境配置——以vs2008为例
  18. 氚云CRM管理员手册
  19. 详解Unity中的导入3D模型
  20. 网络攻防技术——黑客攻防

热门文章

  1. antd-vue上传文件,并读取文件内容
  2. Watchman安装错误
  3. ruby on rails简介
  4. 文件、文件夹操作应用
  5. 计算机控制应用场景,盘点安防计算机网络系统的场景应用
  6. CSS:position属性的区别
  7. 在线XML转HTMLTable工具
  8. 链表(单向链表)(C实现)
  9. 从零开始的AI绘画:MidJourney带你掌握AI绘画的基础和高级技巧
  10. P6771 [USACO05MAR]Space Elevator 太空电梯 题解