0

メッセージをレジスタにコピーしてからスタックにプッシュする必要があるのに、長さをスタックに直接プッシュできるのはなぜですか?

11 が単語として定義されているのに、文字列がバイトとして宣言されているのはなぜですか?

 message:db'hello world'
 length:dw 11


 mov ax, message
 push ax
 push word [length]
4

1 に答える 1

0

直接実行できるはずですがpush message、これの正確な構文は多くの場合、アセンブラー固有です。代わりに書く必要があるかもしれませんpush offset message。これにより、のアドレスがスタックにプッシュ'h'されます。

押す'he'push word [message]またはのようなものpush word ptr [message]で)OTOHは、あなたが本当に望んでいるものではないかもしれません。スタックを使用して文字列の 2 文字のみを渡す正当な理由はありません。代わりに最初の文字のアドレスを渡す方が理にかなっています。

于 2013-03-29T15:22:26.563 に答える