質問: c言語で書いたコードをアセンブラで見てみました。 3つほどご質問があります。 c言語コード ``` #include int main(){ printf("HelloWorld\n"); printf("Tata"); return 0; } ``` 上記のようにprintfで文字列を2つ表示するコードとなっています。 1 画像より 「sub rcx,28h」でrcxから28バイト引いて領域を確保して、シャドウ領域を確保しているのは記事を見てなんとなくわかったのですが、「28h」の「h」は何なのでしょうか? 2 aHelloWorldの文字列の先頭にaをつけるのはアセンブリ言語の慣習的なルールだからでしょうか? 右の図のdbでhelloWorld\nをaHelloWorldに格納している認識で間違いはないですか? 3 rcxとカウンターレジスタという繰り返し処理を格納するレジスタにHelloWorldを入れているのは文字列を一文字一文字格納していくからでしょうか? もし違っていたらご指摘をお願いします。![イメージ説明](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/faeaab5d39a3753843e60068e7a301b0.jpeg)
回答: 1 アセンブラで、後尾にhをつけた数値は16進数です 2 aHelloWorldというのはラベル、です。文字列とは全く関係ありません。 たんに、文字列の格納場所ってことでaをつけてるだけのことかと。 3レジスタにHelloWorldの、アドレスを入れています 繰り返しますが、aHelloWorldというのはラベルで、アドレス値が入ってます