-1

这有什么问题?我在这里没有看到错误。它告诉我未知的寄存器,但由于我对汇编知之甚少,我真的不知道问题所在。

;  Clicking button saves & builds using commands:
;    nasm -f elf -g -F stabs evil.asm
;    ld -o evil evil.o
section .data
Snippet: db "@E9>06G@Q:CN3C57I<)<)*"
SnipLen: equ $-Snippet
section .text
global _start
_start:
        nop
        mov ecx,Snippet
        mov edx,SnipLen
        mov eax,6
DoMore: add byte [ecx],af
        inc ecx
        inc eax
        dec edx
        jnz DoMore
        mov eax,4
        mov ebx,1
        sub ecx,SnipLen
        mov edx,SnipLen
        int 80H
        mov eax,1
        mov ebx,0
        int 80H
        nop
4

1 回答 1

2
DoMore: add byte [ecx],af

该指令允许一个参数是寄存器或内存,而另一个参数仅是寄存器(以任意顺序)。由于[ecx]使用间接语法,显然是“内存”的使用,而另一个参数必须是寄存器的名称。

af如果这是您想要的,我在您的列表中看不到任何数据标签值。但这无论如何都行不通,因为另一个参数只能是一个简单的寄存器名称。


更新

在评论中,您似乎对应该写什么感到困惑。
由于您加载eax了 6,我怀疑您想将 6 添加到[ecx]指向的位置,依次将下一个数字添加到每个字节。在这种情况下,您的意思是al,组成的低字节eax

于 2021-05-24T13:43:35.890 回答