※ ChatGPTを利用し、要約された質問です(原文:x86のJP命令について。)
x86のJP命令について
このQ&Aのポイント
JP命令は、演算後の1のビット数が偶数の時にセットされる特殊な命令です。
質問者はZ-1GRでx86アセンブリを勉強中で、以下のコードを実行した際にJP命令の動作に疑問を持っています。
コードを見ると、JP命令によってBXレジスタに1が格納されるはずですが、なぜ格納されないのか疑問です。
いつもお世話になっております。
小生、現在CASIOのポケコンZ-1GRにて、
x86アセンブリを勉強中のアセンブリ初心者です。
今回、先輩方にご質問させて頂きたいのは、
JP命令についてです。
まず、以下のコードを見てください。
ORG 2000H
START:
MOV AX,08888H
XOR BX,BX
MOV DX,00888H
MAIN:
AND DX,AX
JP SETBX
JMP RETURN
SETBX:
MOV BX,0001H
RETURN:
IRET
END
と記述し、アセンブル→実行しますと、BXに1が格納されます。
JP命令というのは、演算後、1のビット数が偶数の時にセットされるもので、
上記のコードだと、DXは0888のままなので、1のビット数は奇数でRETURNにジャンプするはずだと思うのですが。。。
お忙しい中、大変申し訳ございませんが、先輩方、ご教授宜しくお願い致します。
お礼
Tacosanさん、本当にいつもご回答頂き誠にありがとうございます。 先程、Tacosanさんから頂いたご教示のもと、 以下のコードを記述し、実験してみました。 ORG 2000H START: MOV AX,08888H XOR BX,BX MOV DX,08808H MAIN: AND DX,AX JP BXSET JMP RETURN BXSET: MOV BL,01H RETURN: IRET END と記述し→実行すると、見事!!!!BXには1という値は格納されませんでした。 やっと、頭がスッキリしました。 本当に感謝申し上げます。 ありがとうございました。
補足
Tacosanさん、いつもご回答頂き誠にありがとうございます。 IntelのIA-32デベロッパーズマニュアル、非常に助かりました。 >「結果の最下位バイトに値 1 のビットが偶数個含まれている」場合 という事は私の記述したコードに当てはめると、 DLに値1のビットが偶数個ある為、BXに値が入っていたんですね。 もう少し、検証コードを書いてから、実験してみたいと思います。 この度は、ご回答頂き、誠に感謝申し上げます。