Z80アセンブラー/マシンコードでは、バイト/単語/アドレスが署名されていますか、それとも署名されていませんか?
-
02-10-2019 - |
質問
Z80バイナリのエミュレータを作成していますが、すべての整数データ型が署名されているか署名されているかどうかはわかりません マニュアルから またはGoogleから。レジスタからの数字も同様です A
,B
...HL
,BC
署名されているかどうか?
また、マシンコードには、引数が署名または署名されていないように指示の後に来るバイト/単語/アドレスがありますか?
これらの例のように(から 8080/Z80命令セット):
8080 Mnemonic Z80 Mnemonic Machine Code Operation
------------- ------------ ------------ ---------
MVI A,byte LD A,byte 3Ebyte A <- byte
LXI B,word LD BC,word 01word BC <- word
JMP address JP address C3address PC <- address
前もって感謝します。
解決
レジスタにはどちらかを含めることができ、ほとんどのオペランドは両方の回答を同時に計算します。 2つの補完. 。ただし、一部の指示では、含有値が署名されているか署名されているかどうかにかかわらず、情報が必要です。それらは2つの形で存在します。1つは署名用、もう1つは署名されていません。 Z80がこれらのいずれかを持っているかどうかを思い出せません。
(1.)絶対アドレスは署名されておらず、相対アドレス(枝)が署名され、後方にジャンプできるようにします。
他のヒント
Akaik、アセンブリ言語データおよび転送指示には、サイン情報が含まれていません。データと転送操作の両方がデータサイズのみを定義します。サイン情報は、署名/署名されていない乗算手順など、いくつかの指示の一部です。したがって、同じレジスタは、署名された整数と同じIMUL命令、および署名されていない整数としてMUL命令によって処理される場合があります。
多くのマシンでは、署名された数字と符号なしの数値の唯一の違いは、大きさの比較が実行される方法と、より短い値がより長い値に変換される方法です(多くのプロセッサの操作がより短いタイプに効果的に変換することに注意してください。分割は本質的にマグニチュード比較を実行します)。上記の操作以外のあらゆる種類の操作を実行する場合、署名されたオペランドと署名されていないオペランドは、同じ方法で正確に(ビットビット)扱われるため、それらを区別する必要はありません。