2016-07-31 5 views
0

私はIBM PCアセンブリ言語とプログラミングの本を読んでいると思いますが、第3章ではMS-DOSに付属のデバッグツールについて語り始めました。例では、Aコマンドを使用してコードをアセンブルし、Uコマンドを使用して同じコードを逆アセンブルしました。MS-DOSのデバッグツールのUコマンドの出力

コードはこのようなものだったと仮定しましょう:

注:A 100

MOV ax, 20 
MOV dx, 10 
ADD ax, dx 
NOP 

質問がとき、ここにある:開始アドレスがそのようなコマンドを組み立て開始することにより、100に設定されています彼はUコマンドを使って100からのコードを逆アセンブルしました。ここで私たちは106の出力を停止したところで約5つのカラムを含んでいました。

私はここでそれをコピーして、あなたはこれらの16進数がどのようなものを説明することができます願っています:

`1` `2` `3`   `4` 

073F:0100 B81000  MOV AX, 20 
073F:0103 BB1000  MOV DX, 10 
073F:0106 01C6  ADD AX, DX 
073F:0108 90   NOP 

列2と4は明確で非常に簡単ですが、これらの数字は、1列目と3で何ですか?

+1

1,2は、メモリアドレスでアセンブリコードには明らかであるマシンコードでありますバイトコードの? – YOU

+0

@YOU 1,2というのは1列だけですか? 073F:0100は2つのものではありませんか?ただ一つのこと、メモリアドレス? – Kordy

+0

0x073F0100は実際のアドレスです。 ':'は人間にとってはっきりと理解できるものです。 – YOU

答えて

0

(カラム1)* 16 + 2列=実アドレス 列3は、図4は分解され、3バイトコードである、 列4は

+1

「乗算結果」ではありません。これは 'col1 * 16 + col2'です。あなたがこれを説明しているウェザーベインのコメントを誤解した場合、またはあなたが間違った言葉を選んでそれを説明した場合、IDK。また、 "machine code"はcol3のより良い記述になります。 「バイトコード」は、「機械コードのバイト」以外の特定の技術的意味を有する。 (インタープリタやJITコンパイラではテキスト以外の入力を意味しますが、ハードウェアではJavaのバイトコードなどではありません) –

+0

@PeterCordesありがとう – Kordy

関連する問題