一些汇编指令

1..equ

用 EQU 指令赋值以后的字符名,可以用作数据地址、代码地址、位地址或者直接当做一个立即数使用。
DATA(数据地址赋值命令)。 
    功能:将数据地址或代码赋与规定的字符名称。
    格式:WATER   DATA   30H。
    ※EQU与DATA区别:
    1)、EQU须先定义后使用,而DATA可无须如此。
    2)、EQU可把汇编符号赋给一个字符名称,而DATA
        伪指令不能。
    3)、DATA可用于表达式,而EQU不行。

2.  .macro

指令:.MACRO/.ENDM

    语法:

        宏名称 .MACRO [形式参数]

        ........

        宏定义语句

        ........

        .ENDM

描述:

        用.MACRO指令你可以定义一个宏,可以把需要重复执行的一段代码,或者是一组指令缩写成一个宏,在程序调用的时候就可以直接去调用这个宏而使代码更加简洁清晰,此宏由以下3部分构成:

        1. 头: 在这里可以指定这个宏的名称,别且定义形式参数

        2. 体: 这里包含的是当这个宏被调用时所需要执行的指令或者语句。

        3. 尾:  这里用.ENDM标识着这个宏的结束。

PS:形式参数只是一个标识符,他会在宏展开或者宏调用时被逐个展开,形参的定义也必须按照全局变量定义的

    规则,形参不能为(%)。

例子:   

    SWAP_REG   .MACRO   REG1,REG2   ; swap registers

          XCH   A, REG1

          XCH   A, REG2

          XCH   A, REG1

          .ENDM

看redboot的启动代码时,发现了很多地方使用了.MACRO这种宏定义,觉得类似C++里面的内联函数(C语言的宏定义成函数的对于新人来说可能不常用)。

https://www.cnblogs.com/Widesky/p/9006954.html

3..ascii 声明使用 ASCII 字符声明一个文本字符串。字符串元素被预定义并且存放在内存中,其起始内存位置有便签 output指示。

.ascii和.asciz的区别是,.asciz会在字符串后自动添加结束符\0.
 

.ascii "string" 

    在对象文件中按照指定的方法插入数字字符串,该字符串末尾没有NUL字符。该命令一次可以插入多个字符串,字符串之间用","分隔。下面的例子在对象文件中插入3个字节长的字符串。

    .ascii "JNZ"      ; 插入3个字节: 0x4A 0x4E 0x5A

 

.asciz "string" 

    .ascii相似,只是生成的字符串以NUL(0x00)结尾。下面的例子在对象文件中插入4个字节长的字符串。

    .ascii "JNZ"      ; 插入4个字节: 0x4A 0x4E 0x5A 0x00

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值