今日は、アセンブリ言語、CASLⅡの
スタックについて
勉強していきたいと思います。
スタックとは、データを次々と
積み上げるように記憶していくことをいいます。
そのための記憶領域のことを
スタック領域といいます。
スタック領域のデータは、
後から格納されたものから
先に読み出されます。
このことから、スタック領域は
後入れ先出し(LIFO)記憶と呼ばれます。
スタック領域にデータを格納することを
プッシュダウン
スタック領域からデータを取り出すことを
ポップアップ
といいます。
仮想コンピュータ COMETⅡは、
データが最後に格納された番地(スタック最上級のアドレス)を
覚えておくためのスタックポインタ(SP)を持っています。
--------------------------------------------
PUSH命令
PUSH 0,GR1
PUSH 0,GR2
PUSH 0,GR3
という命令があった場合、
結果はこうなります。
--------------------------------------------
POP命令
POP GR3
POP GR2
POP GR1
という命令があった場合、
結果はこうなります。
---------------------------------------------
PUSH命令とPOP命令 まとめ
スタック領域のある番地に
データをプッシュするときは、
そこに以前からあった値は消失する。
これに対して、スタック領域のある番地から
データをポップしても、
そのデータは消失しない。
------------------------------------------
実際にアセンブラの問題が解けるまで、後、
主プログラム(メインルーチン)から
副プログラム(サブルーチン)
を呼び出す命令であるCALL命令、
副プログラム(サブルーチン)から
主プログラム(メインルーチン)に戻るRET命令、
入力装置からデータを読み込むIN命令、
処理結果の出力をするOUT命令、
もうひとつのスタック操作命令であるRPUSH命令、RPOP命令
を理解しなければなりません。
明日は、これらの命令を理解しようと思います。