パスワードを忘れた? アカウント作成
270861 journal

KMYの日記: MASMで、文字列を数値に置換するマクロの件について 6

日記 by KMY

さすがにコメントで頂いたソースコードをそのまま書く訳にはいかないので、
割り算を使わない それだけのコードに修正致しました。
また、マクロのパラメータにポインタを指定できないことに今ざら気づいたので、
えーと、MASMたかき講座のほうでは近く、早ければ今日か明日に謝罪文を掲載します。

さすがに教育用(?)ですので、使うのは簡単なニモニックに絞ってみます。

MoveMemoryというAPIがmovzxなどのニモニックで代用できることも分かったのですが、
後ほど「スラッシュドットで指摘を頂いた」と断った上で初めて導入してみたいと考えています。

指摘していただいたみなさん、ありがとうございました!

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • >さすがにコメントで頂いたソースコードをそのまま書く訳にはいかないので

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


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

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

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

      • by KMY (41075) on 2010年11月06日 12時55分 (#1854005) 日記

        記事の方の説明不足でした。
        旧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」の後に読むことをお勧めします。
            一応基礎の説明はあるものの、基礎がすっぽり抜け落ちているように見えるあなたにはむしろ不向きだと思われます。
            親コメント
          • by KMY (41075) on 2010年11月06日 14時22分 (#1854050) 日記

            なるほど‥‥これなら簡単ですね。参考になります。
            PTR演算子や他の演算子についても、C:\masm32\macrosなどからもっとサンプルを引っ張ってきて理解したいと思います。
            ありがとうございました。

            --
            By KMY
            親コメント
typodupeerror

日本発のオープンソースソフトウェアは42件 -- ある官僚

読み込み中...