这有什么问题?我看不出这里有错误。它告诉我未知的寄存器,但由于我对汇编知之甚少,所以我真的不知道这个问题。
; 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
DoMore: add byte [ecx],af
该指令允许一个参数为寄存器或内存,另一个仅为寄存器(按任意顺序(。由于[ecx]
使用间接语法;存储器";用法,而另一个参数必须是寄存器的名称。
我在您的清单中没有看到任何数据标签值af
,如果这是您想要的话。但这无论如何都不起作用,因为另一个参数必须是一个简单的寄存器名。
更新
你似乎对你应该在评论中写什么感到困惑
由于您用6加载了eax
,我怀疑您想在[ecx]
指向的位置添加6,然后依次向每个字节添加下一个数字。在这种情况下,您指的是al
,即构成eax
的低字节。