スタック実験 PUSH POP

スタックとは、複数のデータを管理する記憶構造の種類の一つで、 stack(訳:干し草などの積みわら)を管理する場合、 上の積みわらを除かないと下のわらを取り出せないことに由来した名前です。
つまり、格納する場合は、上に載せるイメージで記憶し、 取り出す場合は上からしか取り出せないという管理方法のデータ記憶域をスタックといいます。
これを実現する方法として、 スタックの一番上に乗っているデータを指し示すアドレスを記憶するもの(スタックポインタと呼ぶ)で 管理する方法があります。
    (ほとんどのCPUで、この名前のレジスタを持っています。)
一般のCPUのスタック操作では、
記憶する場合(PUSH操作)は、スタックポインタを1つ減らしてから、 そのスタックポインタが指すメモリへ、データを記憶します。
 逆にデータを取り出す場合(POP操作)は、  スタックポインタが指すメモリからデータ(積み上げられる一番上のデータ)を取り出して、  スタックポインタの値を1つ増やす手法が取られます。

上記のイメージで実行するコードを検討しましょう。
CASL/COMET仕様書の PUSH adr, r は、 adr+r をスタックに入れる処理です。
以下では最初にGR1を0にしているので、PUSH 30, GR1 は、30をスタックに入れています。
POP GR1で、スタックから1語データを取り出して、GR1に記憶しています。
SP (スタックポインタ)と、メモリの変化をシミュレータで確認ください。

問題 これを使って、GR1とGR2を入れ替えるプログラムを作成し、確認せよ。

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