問題 次の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になる条件 |
|---|---|---|
| ZF | Zero Flag | LD命令や、算術命令で、変更対象レジスタが0になった時 |
| SF | Sign Flag | LD命令や、算術命令で、変更対象レジスタの最上位ビットが1になった時 |
| OF | Overfow Flag | 算術命令でオバーフローやアンダーフローが生じたとき(-32768〜32767の範囲を超える演算の時) |
各フラグを1に設定するプログラムを書いてみましょう。