レビューの問題により、これらのレジスタが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
次に実行される命令の絶対アドレスは40f0fです。
40f0f -01cf _____ 40d40 / 10 = 40d4 = cs
バイト単位のデータセグメントのサイズは、常にスタックセグメントからデータセグメントを引いたもの* 10に等しいですか?48ee-4100=7ee0。同様に、バイト単位のコードセグメントは、常にデータセグメントからコードセグメントを引いたもの* 10に等しいですか?48ee-40d4=81a0。
の場合
mov cx,[bx + si]
、ソースオペランドの絶対アドレスは42334です。bx = 1234 si = 0100 _________ 1334 ds = 4100 * 10 = 41000 + 1334 = 42334
の場合
mov cx,[di - 4]
、ソースオペランドの絶対アドレスは41ffcです。di = 1000 - 4 _________ 0FFC ds = 4100 * 10 = 41000 + 0ffc = 41ffc
の場合
mov cx,[bp + si - 3]
、ソースオペランドの絶対アドレスは48fe0です。bp = 0003 si = 0100 - 3 _________ 0100 ss = 48ee * 10 = 48ee0 + 0100 = 48fe0
私はこれらを正しい方法で解決しようとしていますか?これらの計算にスタックセグメントを使用するタイミングとデータセグメントを使用するタイミングを知るにはどうすればよいですか?