ALIGN 伪指令将一个变量对齐到字节边界、字边界、双字边界或段落边界。

语法如下:

ALIGN bound

Bound 可取值有:1、2、4、8、16。当取值为 1 时,则下一个变量对齐于 1 字节边界(默认情况)。当取值为 2 时,则下一个变量对齐于偶数地址。当取值为 4 时,则下一个变量地址为 4 的倍数。当取值为 16 时,则下一个变量地址为 16 的倍数,即一个段落的边界。

为了满足对齐要求,汇编器会在变量前插入一个或多个空字节。为什么要对齐数据?因为,对于存储于偶地址和奇地址的数据来说,CPU 处理偶地址数据的速度要快得多。

下述例子中,bVal 处于任意位置,但其偏移量为 0040 4000。在 wVal 之前插入 ALIGN 2 伪指令,这使得 wVal 对齐于偶地址偏移量:

  bVal BYTE ?           ;00404000h  ALIGN 2   wVal WORD ?           ;00404002h  bVal2 BYTE ?          ;00404004h  ALIGN 4   dVal DWORD ?          ;00404008h  dVal2 DWORD ?         ;0040400Ch

请注意,dVal 的偏移量原本是 0040 4005,但是 ALIGN 4 伪指令使它的偏移量成为 0040 4008。

汇编语言过程
5.1 汇编语言堆栈简介
5.2 汇编语言运行时堆栈
5.3 PUSH和POP指令
5.4 PROC和ENDP伪指令
5.5 CALL和RET指令
5.6 过程调用嵌套
5.7 示例:整数数组求和
5.8 USES运算符
5.9 链接库简介
5.10 Irvine32链接库
5.11 Irvine32链接库过程详细说明
5.12 Irvine64链接库

汇编语言ALIGN伪指令:对齐一个变量相关推荐

  1. 汇编伪指令EVEN(数据对齐的伪指令,使得下一个变量的起始地址是偶数字节的)

    EVEN伪操作使下一个变量或指令开始于偶数字节地址.ALIGN伪操作为保证双字类型数组边界从4的倍数开始创造了条件. ALIGN: 指定对齐边界 align 4 ;让下一个变量的起始地址保证是 4 的 ...

  2. 把下列c语言的语句改写成汇编语言的程序片段,其中变量都为整形变量,汇编程序设计读书笔记(4)...

    第1章 标识符和表达式 1.1 标识符 标识符最多由31个字母.数字及规定的特殊字符(?.@._.$)等组成,但它不能用数字开头.通常情况下,汇编语言不区分标识符中字母的大小写. 1.2 简单内存变量 ...

  3. 汇编语言EQU伪指令

    EQU 伪指令把一个符号名称与一个整数表达式或一个任意文本连接起来,它有 3 种格式: name EQU expression name EQU symbol name EQU <text> ...

  4. 汇编语言等号=伪指令

    等号伪指令(equal-sign directive)把一个符号名称与一个整数表达式连接起来,其语法如下: name = expression 通常,表达式是一个 32 位的整数值.当程序进行汇编时, ...

  5. 汇编语言c equ a-b,汇编语言EQU伪指令

    EQU 伪指令把一个符号名称与一个整数表达式或一个任意文本连接起来,它有 3 种格式: name EQU expression name EQU symbol name EQU 第一种格式中,expr ...

  6. 方法 retrun 异步的值,创建一个变量直接等于一个异步方法返回的值

    需求:我想创建一个变量,他的值是一个openid, openid 从 getOpenid (封装的一个异步方法) 里面返回,通常调用 getOpenid ,会返回一个Promise 对象,.then ...

  7. adoquery查询结果如何赋给一个变量(delphi和c++ builder)

    我用的是adoquery进行数据库查询,但是我不想把查询的结果显示出来,只是想赋给一个变量,请问我这个变量该怎样去设置呢 ?  回复人:sunriver 回复时间:2005-6-3 9:11:00 p ...

  8. R语言ggplot2可视化散点图并添加平滑曲线、WVPlots包BinaryYScatterPlot函数可视化一起中一个变量为二元离散变量的散点图(随着年龄变化是否有健康保险的客户的比例)

    R语言ggplot2可视化散点图并添加平滑曲线.WVPlots包BinaryYScatterPlot函数可视化一起中一个变量为二元离散变量的散点图(随着年龄变化是否有健康保险的客户的比例) 目录

  9. python定义一个变量_Python新手上车3:Python第一个程序和变量

    第一个程序 上节内容我们提到了如何安装Python 以及安装配置VSCode,这节内容我们继续介绍第一个程序的建立: 1.在VS的左上角点击建立一个新的程序,命名为 python_0301_code. ...

最新文章

  1. 未来十年有望改变世界的五大发现
  2. java二维对象数组存入文件_关于Java:将2D数组保存到磁盘文件
  3. 【Visual Studio】如何在VS 2012中打印变量值到输出窗口
  4. SM04在线用户管理
  5. [UE4] 内容浏览器不显示继承自 None 的类
  6. 常用转义符的使用 java 0133
  7. 【Java】字符串substring方法在jkd6,7,8中的差异
  8. 未能加载文件或程序集“Enyim.Caching”或它的某一个依赖项。未能验证强名称签名...
  9. java迭代法求圆周率用梯形_感悟数学“近似计算”之美——“望星楼”里的圆周率...
  10. ubuntu12.04升级svn到 1.7
  11. 《深入浅出struts》读书笔记(2)
  12. 授权码模式、Token登录认证
  13. python编程输入法_用Python写一个拼音输入法
  14. 深扎实战技术 带你走进 MDCC 2016 移动开发者大会
  15. 微信小程序开发后台篇(五)AWS EC2实例云部署---Windows环境通过PuTTY连接EC2实例部署SpringBoot工程
  16. 【雅思大作文考官范文】——第三篇:essay 'skeleton'(散文“骨架”)
  17. 试验设计——序贯设计
  18. 如何在word中插入latex公式和伪代码
  19. HNUST-OJ-2184-huffman编码(1)
  20. 洛谷P2357 守墓人

热门文章

  1. 2017年9月18日
  2. 关于成为一名优秀的软件测试工程师
  3. HOJ 2576 HOJ 2577 Simple Computing I II 容斥原理
  4. iOS 转换BGR24 为 RGB24
  5. 电信系统方案 电信综合营帐系统
  6. MYSQL-Can't connect to MySQL server on 'localhost' (10061)
  7. (转)Python 用hashlib求中文字符串的MD5值
  8. 学习笔记 Keras:常见问题
  9. 【转】IAR与Keil两款开发工具区别
  10. linux无效家目录,Linux 家目录下文件夹消失?