【问题标题】:What is $ in nasm assembly language? [duplicate]nasm 汇编语言中的 $ 是什么? [复制]
【发布时间】:2013-07-27 16:53:21
【问题描述】:

这是我的汇编级代码...

section .text
global _start
_start  mov eax, 4
        mov ebx, 1
        mov ecx, mesg
        mov edx, size
        int 0x80
exit:   mov eax, 1
        int 0x80
section .data
mesg    db      'KingKong',0xa
size    equ     $-mesg

输出:

root@bt:~/Arena# nasm -f elf a.asm -o a.o
root@bt:~/Arena# ld -o out a.o
root@bt:~/Arena# ./out 
KingKong

size equ $-mesg 行中的 $ 是什么。有人请解释一下使用的$ 符号...

【问题讨论】:

    标签: assembly nasm


    【解决方案1】:

    $ 表示汇编程序的“当前位置”。在这种情况下,它用于存储mesg 字符串的长度。

    size equ $-msg
    

    说“创建一个标签size 并将其设置为等于当前位置减去mesg 标签的位置”。由于“当前位置”在字符串“KingKong\n”的末尾之后,size 被设置为该长度(9 个字符)。

    来自documentation

    NASM 支持表达式中的两个特殊标记,允许计算涉及当前装配位置:$$$ 标记。 $ 计算为包含表达式的行首的汇编位置;因此您可以使用JMP $ 编写无限循环。 $$ 计算为当前部分的开头;因此,您可以使用 ($-$$) 来判断您在该部分中的距离。

    【讨论】:

    • 谢谢...再次帮助了我!!!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-14
    • 2014-12-26
    • 1970-01-01
    • 1970-01-01
    • 2014-09-03
    • 1970-01-01
    相关资源
    最近更新 更多