パスワードを忘れた? アカウント作成
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。

MASMで、文字列を数値に置換するマクロの件について」記事へのコメント

  • >さすがにコメントで頂いたソースコードをそのまま書く訳にはいかないので

    私の書いたコードはそのまま掲載してもらっても構いませんが、まあ、サンプルコード向きではないかな(leaで乗和計算やってるし)


    >また、マクロのパラメータにポインタを指定できないことに今ざら気づいたので、

    なぜ?
    出来ませんか?
    というか、マクロの引数はリテラル渡しなので、何でも渡せますが…
    • by Anonymous Coward

      マクロが何かってところがちゃんとわかっていないんじゃないかな?

      • 記事の方の説明不足でした。
        旧str2numマクロの中での話です。

        .dataセクションの中で、引数をそのままDBとして定義してしまう以上
        ポインタを渡そうとしてもそのポインタの型がDBではないのでエラーが出るということを言いたかったわけです。

        --
        By KMY
        • っていうか、BYTE to DWORD 変換のために MoveMemory を使うなんて方法自体、一刻も早く辞めるべきだと思いますが。
          アセンブラを使っている意味がないってレベル以前の問題ですよ。

          movzx を知らなくても普通に、

          mov eax, 0
          mov al, BYTE PTR hoge

          で、hoge から1バイト取り出せますよね?
          • あ、いや、ちょっと待てよ。
            もしかして、オペランドの BYTE PTR の意味を理解できていないからこれまでのようなコードになっていたりしますか?
            そう考えると、すべてののおかしな点について説明が付くような気がしてきました。

            そもそも、「MASMたかき協会」の「MASMの基礎」が、Hello, world から始まっていることも、アセンブラの解説書としてはおかしいですし…
            (適当なメモリからデータを取ってきて(あるいは関数形式で作成して)、何かレジスタ上で処理をして、メモリに戻す、というように、レジスタ中心でメモリをほとんど触らないコードからスターするのが通常なのですが)

            と書いても、mov al, BYTE PTR hoge の hoge にポインタ変数を指定して、ポインタからデータをレジスタにロードできない、とか言われちゃいそうですが…

            もし分からなかったら(というか見る限りアセンブラ初心者で分からないように見えるので)、16ビット時代の参考書を一読することをお勧めします。
            とりあえず「はじめて読むMASM」か「はじめて読む8086」位は完読してください。
            (手元に無いのでどんな内容かは忘れましたが、この時代のアセンブラ入門書はどれも決まった内容なので、まず間違いないでしょうというか、アマゾンでMASMの入門書としてお勧めできそうなのがコレくらいしか出てこなかった。それ以外のは、せめてこれを読み終わった後に読むようなものばかり)
            因みに、「はじめて読む386」や「はじめて読む486」は「はじめて読む8086」の後に読むことをお勧めします。
            一応基礎の説明はあるものの、基礎がすっぽり抜け落ちているように見えるあなたにはむしろ不向きだと思われます。
            親コメント

海軍に入るくらいなら海賊になった方がいい -- Steven Paul Jobs

処理中...