資料集
ここはhideyosiの学習帳です。いろいろな資料を集めたり整理したりしています。オイラ用のノートなので間違っていたり未完成だったりしますので信用度は相当低いことをあらかじめご了承くださいませ。
1: 2007-03-24 (土) 15:29:55 ソース バックアップ No.1 を復元して編集 2: 2007-03-24 (土) 17:59:42 ソース バックアップ No.2 を復元して編集
Line 1: Line 1:
 +COLOR(red){くっそ!アカン!どうも理解が甘い!以下は間違ってます!(お勉強&再整理開始・・・) }
 +
 +----
 +-桁指定の考え方は、''基本は全て指定しよ!''ってことでいいのかな・・・
 +-たとえばレジスタ相手。これだって、「指定して間違い」ってわけじゃないはず。ええと・・・
 +
 + MOV    AX,0x11        ←まあ問題ないよね?相手がAXなんだからイヤでも16ビット
 +
 + MOV    AX, WORD 0x11  ←無駄ではあるが、これは「間違い」だろうか??
 +
 +・・・ふむ・・・実験の結果、少なくとも「間違いではない」ようだ・・・
 +
 +こういうのはおかしくなるかな???
 +
 + MOV    WORD AX,WORD 0x11
 +
 +あれれれ?? これも正常にコンパイルできたなぁ。これも、「別に間違いではない」って理解でいいのかな??
 +
 +たとえばこうしたとするよね?
 + MOV    [0x00ff],0x11
 +
 +これが間違いなのは分る。正解は
 + MOV    [0x00ff],WORD 0x11
 +これでコンパイルが通る。・・・しかし疑問だ。
 +-最初の、アドレスを指定している部分。ここ、0x00ffって言うけど、これが0xffなのか、0x00ffなのか、0x000000ffなのか・・・って、おい!!!
 +
 +''あ〜!'' そっか!なるほどなるほど!。そうだよ!アドレス指定の場合は、[0xff]も[0x00ff]も[0x000000ff]も同じことじゃないか!!!
 +
 +ん?じゃあもしかして・・・・
 + MOV  WORD [0x00ff],WORD 0x11
 +これもいいの???
 +
 +あっちゃぁ〜。いいんじゃん!(エラーないし、同じバイナリが出てくる)
 +
 +うーん。しかしそうなると分らん。P37の、 MOV BYTE [678],123 。これはどう理解すれば・・・
 +
 +あーーー!! まってまって??。勘違いしてたかも!?
 +
 +''値の桁数はわからない''ってのがおかしいのか。だって、0x11も0x0011も0x00000011も値としてはまったく同じことなんだよね???
 +
 +メモリのほうに桁指定を入れるってのはようするに、「メモリ素子何個使う?」っていう理解でいいのかな????
 +
 +・・・そうすると、たとえば
 + MOV BYTE [678],0x11223344
 +こんなことしたらどうなるの????
 +
 +あー・・・エラーになる。じゃ、これは?
 + MOV BYTE [678],0x00000044
 +
 +''おーーーー!!'' エラー出ない!!!!!!
 +
 +こんな実験もしてみた。
 + MOV AX,0x00000044    ←エラーなし
 +
 + MOV AX,0x11223344    ←エラー!!
 +
 +おぉ!予測どおり!しかも、 MOV AX,0x11223344 と MOV BYTE [678],0x11223344 は、同じエラー(data range error.)が出る!! 分ってきたぞ!!!
 +
 +じゃあこれはどうなる?
 + たとえば0x10番地に0x11、0x11番地に0x22を入れておいたとして・・・
 + MOV AX, [0x10]      ← これは分る。AXには、0x2211が代入されるはず。
 + MOV AX, BYTE [0x10] ← こうやればAXには0x0011が入るのか?
 +                         おーー! エラー!
 +
 +
 +
 +
 +----
 +
 +
[[NASK/書式]] [[NASK/書式]]
Line 33: Line 103:
         ↑          ↑
       桁が指定された。WORDなので、0x11は0x0011(16ビット)だと解釈される        桁が指定された。WORDなので、0x11は0x0011(16ビット)だと解釈される
 +
 +
 +
 +***実際の挙動 [#v35a16ba]
 +-8ビット指定
 +
 + MOV BYTE [0x0042],0x11
 +
 +   :    ├────┤        :    ├────┤
 + 0x40番地 │ 0x32  │      0x40番地 │ 0x32  │
 +         ├────┤              ├────┤
 + 0x41番地 │ 0xA1  │      0x41番地 │ 0xA1  │
 +         ├────┤              ├────┤
 + 0x42番地 │ 0x4F  │  ⇒  0x42番地 │ 0x11  │ ←ここだけ変化
 +         ├────┤              ├────┤
 + 0x43番地 │ 0x96  │      0x43番地 │ 0x96  │
 +         ├────┤              ├────┤
 + 0x44番地 │ 0xEF  │      0x44番地 │ 0xEF  │
 +         ├────┤              ├────┤
 + 0x45番地 │ 0x89  │      0x45番地 │ 0x89  │
 +         ├────┤              ├────┤
 + 0x46番地 │ 0xFF  │      0x46番地 │ 0xFF  │
 +   :    ├────┤        :    ├────┤
 +
 +
 +-16ビット指定
 +
 + MOV WORD [0x0042],0x11
 +
 +   :    ├────┤        :    ├────┤
 + 0x40番地 │ 0x32  │      0x40番地 │ 0x32  │
 +         ├────┤              ├────┤
 + 0x41番地 │ 0xA1  │      0x41番地 │ 0xA1  │
 +         ├────┤              ├────┤
 + 0x42番地 │ 0x4F  │  ⇒  0x42番地 │ 0x11  │ ←値は16ビットの0x0011と
 +         ├────┤              ├────┤    解釈される。値が16ビット
 + 0x43番地 │ 0x96  │  ⇒  0x43番地 │ 0x00  │  ←なのだから0x43も変化する
 +         ├────┤              ├────┤
 + 0x44番地 │ 0xEF  │      0x44番地 │ 0xEF  │
 +         ├────┤              ├────┤
 + 0x45番地 │ 0x89  │      0x45番地 │ 0x89  │
 +         ├────┤              ├────┤
 + 0x46番地 │ 0xFF  │      0x46番地 │ 0xFF  │
 +   :    ├────┤        :    ├────┤
 +
 +
 +
 +
 +
 +
 +-32ビット指定
 +
 + MOV DWORD [0x0042],0x11
 +
 +   :    ├────┤        :    ├────┤
 + 0x40番地 │ 0x32  │      0x40番地 │ 0x32  │
 +         ├────┤              ├────┤
 + 0x41番地 │ 0xA1  │      0x41番地 │ 0xA1  │
 +         ├────┤              ├────┤
 + 0x42番地 │ 0x4F  │  ⇒  0x42番地 │ 0x11  │ ←値は32ビットの0x00000011と
 +         ├────┤              ├────┤    解釈される。値が32ビット
 + 0x43番地 │ 0x96  │  ⇒  0x43番地 │ 0x00  │  ←なのだから0x43、0x44、0x45
 +         ├────┤              ├────┤    まで変化する
 + 0x44番地 │ 0xEF  │  ⇒  0x44番地 │ 0x00  │  ←
 +         ├────┤              ├────┤
 + 0x45番地 │ 0x89  │  ⇒  0x45番地 │ 0x00  │  ←
 +         ├────┤              ├────┤
 + 0x46番地 │ 0xFF  │      0x46番地 │ 0xFF  │
 +   :    ├────┤        :    ├────┤
 +
 +
 +
 +*どんな時に桁指定が必要なのか? [#j739aedb]
 +-対象(代入する相手)が''レジスタ以外は全部''と考えたほうがわかりやすい。


トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   ページ新規作成 全ページ一覧 単語検索 最新ページの一覧   ヘルプ   最新ページのRSS 1.0 最新ページのRSS 2.0 最新ページのRSS Atom
Counter: 2605, today: 1, yesterday: 0