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

str2num、scan、2つのマクロは最終的にこうなった。」記事へのコメント

  • いや、最終版に落ちるの早すぎ。もっと努力せよ。

    str2num macro string:REQ
    K/ecode>
    というこれを
    <ecode>
    str2num macro string:REQ, base:=10
    K/ecode>
    と書き直す。その上で
    <ecode>
                ; resに10をかける
                mov eax, res
                mov ebx, 10

    という部分を

                ; resに 底 をかける
                mov eax, res
                mov ebx, base

    --
    fjの教祖様
    • >str2num macro string:REQ, base:=10

      str2num macro string:REQ, base:=<10>
      じゃないとダメかも。
      もしかしたら、バージョンによってエラーは出ないのかもしれませんが、とりあえず<>で囲んでおいたほうが良いかと。


      >実は MASM で base が 2,3,4,5,6,7,8,9,10 のどれかであることをチェックするのは意外と面倒なので省略。

      あまり気にしたこと無いけど、10 で進数取れませんかね?

      .IF eax >= 10

      と書くと、eax が現在の .RADIX で一桁で表現できる数値の範囲外か判定できるかと。
      (ただ、ASSUME eax:SDWORD されていると (DWORD PTR eax) >= 10 と書かないとダメですが)
      • by KMY (41075) on 2010年11月07日 16時15分 (#1854540) 日記

        恥ずかしながらEBCDICという文字コード自体知りませんでした。
        なるほど‥‥アルファベットの文字コードにまで種類があったんですね。勉強になります。

        2~9進数のことも考えて、というのはちょっと思いつきませんでした。
        今後、「最終的に」とかいう表現は慎みます。

        48引く代わりのaaaというニモニックを見つけたけど‥‥これはASCII限定な上にアルファベットにまで対応してしまっているから駄目か。

        --
        By KMY
        親コメント

アレゲは一日にしてならず -- アレゲ見習い

処理中...