Assembly 在asm中连续推送子字节

Assembly 在asm中连续推送子字节,assembly,Assembly,在汇编中,不可能推送一个无符号字节;我们需要推一个字(扩展符号) 我可以执行“push 0x0b00c8f0”,但我需要创建每个单独的dword。我可以说,我需要按0b,00之后,c8之后和f0之后。完成这4次推送后,我需要用这些字节形成dword 我有: push WORD 0x0b push WORD 0x00 push WORD 0xc8 push WORD 0xf0 push 0x11111111 movsb [esp], [esp+4] movsb [esp+1], [esp+8] m

在汇编中,不可能推送一个无符号字节;我们需要推一个字(扩展符号)

我可以执行“push 0x0b00c8f0”,但我需要创建每个单独的dword。我可以说,我需要按0b,00之后,c8之后和f0之后。完成这4次推送后,我需要用这些字节形成dword

我有:

push WORD 0x0b
push WORD 0x00
push WORD 0xc8
push WORD 0xf0
push 0x11111111
movsb [esp], [esp+4]
movsb [esp+1], [esp+8]
movsb [esp+2], [esp+12]
movsb [esp+3], [esp+16]
; Now esp = 0x0b00c8f0

但是ESP不能在8位段中分离,因此,我如何才能做到这一点?

您的示例不起作用,因为x86处理器没有“内存到内存移动”。但是您可以将堆栈视为普通内存(不使用
push
):


我不明白你在这里的要求。你说“但是我需要创建每个单独的dword。”为什么这需要单独?您说“我需要用这些字节形成dword”,但您已经知道dword是什么(0x0b00c8f0)。为什么要再次形成它?“ESP不能在8位段中分离”但您只是从单个字节构建了[ESP],为什么要再次尝试将内容分离出来
movsb[esp],[esp+4]
实际上并没有编译,是吗?也许如果你能在这里描述一下你的最终目标,有人可以建议一些实现目标的步骤。到目前为止,你所拥有的没有多大意义。
sub esp, 4
mov BYTE [esp], 0xf0
mov BYTE [esp+1], 0xc8
mov BYTE [esp+2], 0x00
mov BYTE [esp+3], 0x0b