zoukankan      html  css  js  c++  java
  • NASM手册阅读笔记(6)

    结构定义

    格式

    struc     xxx

            .aaa        resw    1
            .bbb        resw   1
    endstruc
        

    说明

    他并非真正的结构体支持,而是相当于定义了一系列的LABEL,并且这些LABEL的地址都是相对于结构体开始处的偏移地址
    所以 .aaa = 0; .bbb = 2;因为.aaa 占用了2个字节
     

    定义实体数据

     istruc   xxx
            at  .aaa, dw  123
            at  .bbb, dw  321
    iend
        
    at 符号是定位使用的
      at  .aaa, dw  123   ; 将地址移动到 .aaa 也就是相对偏移 0x0处然后赋值一个DWORD = 123
      at  .bbb, dw  321  ; 将地址移动到 .bbb 也就是相对偏移 0x2处然后赋值一个DWORD = 321
     
    所以如果我们定义的数据是紧凑的话完全是可以这样的
           at   .aaa
            dw   123 ; 实际赋值 .aaa
            dw   321; 实际赋值 .bbb
            

    实际使用

    因为子标签实际上只是一个偏移地址,所以访问数据需要这样
    mov  ax, [var + xxx.aaa]
     
     

    ALGIN

    格式

    ALIGN  参数1 [,  db 0] 
    ALIGN  参数1 [, resb 1] 
    ALIGNB    参数1    ;相当于  ALIGN  参数1 ,  resb 1
            

    说明

          作用就是通过使用 times   XXX db 0 或者 times   XXX resb 1  来使得,当ALGIN这条指令结束的时候相对于段开始的时候的偏移地址是按照参数1的要求边界对齐的
    var db  1,2,3
    align 4
    假设var 开始地址0,定义三个DB之后 algin的开始位置就是3,然后我们要求4字节对齐,所以algin指令就会补一个db出来使得4字节对齐,
    展开后等效于
    var db  1,2,3
    db 0 ; algin 4 指令生成的内容
    这个指令会使得我们在结构体也好,其他地方也好定义出来的数据不紧凑,但是字节对齐有助于提高数据的存储速度。
  • 相关阅读:
    升级WP应用时注意的问题——WMAppManifest.xml
    MVVM Light (Part 4)
    Windows Phone 7的About模板——Your Last About Dialog(2)支持多语言
    MVVM Light 开始
    在ScheduledTaskAgent中使用HttpWebRequest
    年会抽奖程序 支持单次单个抽奖和单次多个抽奖,自定义抽奖设置
    WIndows Phone 7的MVVM Light框架
    MVVM Light (Part 3)
    MVVM Light 行为
    [转]如何在设计中应用颜色搭配技巧
  • 原文地址:https://www.cnblogs.com/alwaysking/p/12287448.html
Copyright © 2011-2022 走看看