2

レビューの問題により、これらのレジスタが16進数でリストされます。

cs = ????  sp = 0300  ax = a66a  ip = 01cf
ds = 4100  bp = 0003  bx = 1234  
ss = 48ee  si = 0100  cx = 00ff
es = 4cee  di = 1000  dx = 0000
  1. 次に実行される命令の絶対アドレスは40f0fです。

    40f0f  
    -01cf
    _____
    40d40 / 10 = 40d4 = cs
    
  2. バイト単位のデータセグメントのサイズは、常にスタックセグメントからデータセグメントを引いたもの* 10に等しいですか?48ee-4100=7ee0。同様に、バイト単位のコードセグメントは、常にデータセグメントからコードセグメントを引いたもの* 10に等しいですか?48ee-40d4=81a0。

  3. の場合mov cx,[bx + si]、ソースオペランドの絶対アドレスは42334です。

    bx = 1234
    si = 0100
    _________
         1334
    
    ds = 4100 * 10 = 41000 + 1334 = 42334
    
  4. の場合mov cx,[di - 4]、ソースオペランドの絶対アドレスは41ffcです。

    di = 1000
         -  4
    _________
         0FFC
    
    ds = 4100 * 10 = 41000 + 0ffc = 41ffc
    
  5. の場合mov cx,[bp + si - 3]、ソースオペランドの絶対アドレスは48fe0です。

    bp = 0003
    si = 0100
          - 3
    _________
         0100
    
    ss = 48ee * 10 = 48ee0 + 0100 = 48fe0
    

私はこれらを正しい方法で解決しようとしていますか?これらの計算にスタックセグメントを使用するタイミングとデータセグメントを使用するタイミングを知るにはどうすればよいですか?

4

1 に答える 1

1

bpまたはを含むアドレス計算の場合、またはのspようなスタック操作の場合、セグメントレジスタは暗黙的に、他のアドレスの場合。例外:文字列命令を使用する場合、デスティネーションセグメントレジスタは暗黙的にです。pushpopssdses

于 2011-12-13T09:48:52.573 に答える