問題 次の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に設定するプログラムを書いてみましょう。