您的位置:首页 > 其它

汇编知识点-数据定义

2013-08-02 16:18 459 查看
定义内部数据类型

  类型

    BYTE,SBYTE,WORD,SWORD,DWORD,SDWORD,

    FWORD(48位整数,保护模式下用作远指针)

    QWORD(64位整数,8字节), TBYTE(80位整数,10字节)

    REAL4(32位,IEEE短实数),REAL8,REAL10

    举例: val5 DWORD 12345678h

    数据定义语句要指定至少一个初始值,多个初始值以逗号隔开.若不想初始化,可以用符号"?"作为初始值.

    

    定义数组:

    array1 BYTE 10, 20, 30, 40

        BYTE 50, 60, 70, 80  ;可定义多行

       array2 BYTE 10, 32, 41h, 00100010b ;不同基数可混用

       array3 BYTE 0Ah, 20h, 'A', 22h      ;不同基数,字符,字符串可混用       

    定义字符串

     greeting1 BYTE "Good afternoon", 0 ;可以空字符结尾 

greeting2 BYTE "this is the first"        ;可定义多行

           BYTE "string i created.", 0dh, 0ah, ;换行符/r/n --> 0dh, 0ah

BYTE "ok, end.", 0         ; 结束 

     

    DUP操作符.

    未多个数据项分配空间

    array1 BYTE 20 DUP(0) ; 20字节, 全部等于0

    array2 BYTE 20 DUP(?) ; 20字节, 未初始化 

    array4 BYTE 3 DUP("stack") ; 15字节, "stackstackstack"

    

    小尾和大尾顺序(little endian, big endian)

    小尾:最低有效字节存储在地址值最小的地址单元.

      12345678h的存储:  0000: 78, 0001: 56, 0002: 34, 0001: 12

    未初始化数据的声明

    ".DATA?"伪指令用于声明未初始化数据.定义大块数据时非常有用.减小编译体积.

    .data?

    bigArray DOWRD 5000 DUP(?) ; 20000字节.未初始化.  

    

编译前计算数组和字符串大小: '$', 当前地址值,byte单位

    list BYTE 10, 20, 30, 40

    listSize = ($ - list)

    EQU伪指令,

    用于编译阶段定义.equ不可重复定义.

    PI EQU <3.1415926>

    printMe EQU <"my name is fei">

    val1 EQU <100h + 200h>

    val2 WORD val1

    TEXTEQU文本宏伪指令

    count TEXTEQU 5

    move TEXTEQU <mov>

    setAL TEXTEQU <move, al, count>

    setAL将被汇编成:mov, al, 5

    

    
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: