2017-02-06 4 views
-4

今すぐアセンブリで新しいコードを書いています。あなたの助けが必要です! 16h割り込みを使用しましたが、キーストロークが有効かどうかをチェックしたいので、今すぐゼロフラグをチェックしたいのですが。どうしたらいいですか?アセンブリ - ZFが0か1かどうかチェックするには?

ありがとうございます! :)

+4

私はx86-16を想定し、右のことですか? 'jz'または' je'(あなたのスタイルに依存します)は、ZF = 1であるかどうかをチェックします。 'jnz' /' jne'はZF = 0をチェックします。 [our doc](https://stackoverflow.com/documentation/x86/5808/control-flow/20470/conditional-jumps#t=201702060901496425342)を参照してください。 –

+2

少なくとも、Intel x86および/またはx86_64命令セットマニュアルのコピーを入手してください。 –

+0

また、分岐したくない場合、0/1の値が次のコードで役に立つ場合は、 'setz/setnz'を使用して、ZFに従って8bの値を0/1に設定することができます(' jz/jnz'分岐)。 'int 16h、ah = 1'の後でZFを実際にテストする必要があるので、この答えは関係ありませんが、次に学ぶべきことです(値がゼロかどうかを判断する方法):http://stackoverflow.com/a/41175294/4271923 – Ped7g

答えて

1

hereZF=1キーストロークがない場合はZF=0キーストロークがある場合。 JNZを使用して

mov ax, 0100h 
    int 16h 
    jz no_key 
    ; Handle case if there is a key press here 
    ; AH will contain the scan code; AL will contain the ASCII code 

no_key: 
    ; Handle case if there is no key press here 

:あなたはJZを使用してそれに応じて

を分岐するJ(N)Z命令を使用することができます

mov ax, 0100h 
    int 16h 
    jnz key_pressed 
    ; Handle case if there is no key press here 

key_pressed: 
    ; Handle case if there is a key pressed here 
    ; AH contains the scan code; AL contains the ASCII code 
+0

うわー、ありがとう!それは私のために本当に役に立ちました! :) –

関連する問題