Assembly 如何将寄存器中的数据放入程序集中的缓冲区

Assembly 如何将寄存器中的数据放入程序集中的缓冲区,assembly,nasm,Assembly,Nasm,因此,我试图编写一个汇编程序,显示命令行参数的十六进制地址,后跟命令行参数本身 0x01234567: command line argument 1 我已将字符串的地址加载到寄存器中,并尝试将其放入缓冲区,将其从十六进制转换为文本,以便在终端中正确显示 如果我执行以下操作将第一个字符串的地址加载到ebx中 lea ebx,[ArgPtrs+edi*4] 有没有办法将该值移动到缓冲区中?弄明白了,这只是一些程序集成长的烦恼和糟糕的语法 我最初的想法是这样的- lea ebx,[ArgPtrs

因此,我试图编写一个汇编程序,显示命令行参数的十六进制地址,后跟命令行参数本身

0x01234567: command line argument 1
我已将字符串的地址加载到寄存器中,并尝试将其放入缓冲区,将其从十六进制转换为文本,以便在终端中正确显示

如果我执行以下操作将第一个字符串的地址加载到ebx中

lea ebx,[ArgPtrs+edi*4]

有没有办法将该值移动到缓冲区中?

弄明白了,这只是一些程序集成长的烦恼和糟糕的语法

我最初的想法是这样的-

lea ebx,[ArgPtrs+edi*4]
mov [AddrBuff+edi*4],ebx
只是需要在mov指令中添加dword,使其成为法律指令

mov dword [AddrBuff+edi*4],ebx

我认为您要做的是将值推送到堆栈上,然后调用
printf
。顺便说一句,你是在Windows还是Linux上使用汇编?通过Linux。我现在正试图避免使用c,并在纯汇编中使用它。然后我认为您需要在堆栈上分配一些字节的内存,进行数字到十六进制字符串的转换,然后执行名为
write()
的系统调用。