練習問題 順次実行 (フラグ確認)

問題 次のCに対応するプログラムをアセンブラで作成せよ。
なお、ラベルの名前と変数の名前を一致させ、なるべくC言語のコードの通り、記憶域を変化させよ。

short int K;
short int X = 3;
short int Y;
main()
{
    K = -1;
    
    Y += X;
    X = X + K;

    Y += X;
    X = X + K;

    Y += X;
    X = X + K;

    Y += X;
    X = X + K;
}

わからない場合は、クリック

なお、作成したプログラムをトレースして、フラグの変化を確認しましょう。
ZFとSFが一時的に1になっています。

フラグフラグ名称フラグが1になる条件
ZFZero FlagLD命令や、算術命令で、変更対象レジスタが0になった時
SFSign FlagLD命令や、算術命令で、変更対象レジスタの最上位ビットが1になった時
OFOverfow Flag算術命令でオバーフローやアンダーフローが生じたとき(-32768〜32767の範囲を超える演算の時)

各フラグを1に設定するプログラムを書いてみましょう。