2進印刷演算器
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/04/21 02:01 UTC 版)
「データゼネラルNova」の記事における「2進印刷演算器」の解説
次のルーチンは、16桁の2進数としてAC1の値をRDOSコンソールに出力する。 これは、Nova命令セットのさらなる奇抜さを明らかにしている。 たとえば、任意の「即時」値("immediate value")をアキュムレータにロードする命令はない(ただし、メモリ参照命令はそのような値をエンコードして実効アドレスを形成する)。 アキュムレータは一般に、初期化されたメモリ位置(例: n16 )からロードしなければならない。 PDP-11などの他の最新のマシンや、事実上のすべての最新アーキテクチャでは、即時ロードが可能であるが、 ARMなどの多くのマシンでは、即時ロードできる値の範囲が制限されている。 RDOSの .systm 呼び出しマクロは jsr を実装しているため、AC3は .pchar 関数の戻りアドレスで上書きされる。 したがって、この関数の呼び出し元の戻りアドレスを保持するための一時的な場所が必要になる。 再帰的なルーチンや再入可能なルーチンの場合は、スタック、利用可能な場合はハードウェア、利用できない場合はソフトウェアを代わりに使用しなければならない。 リターン命令は jmp @ retrn となり、Novaの間接アドレッシングモードを利用してリターンPCをロードする。 末尾の定数定義では、2つのアセンブラ機能を示している。アセンブラの基数はデフォルトで8進数 ( 20 = 10進数の16)で、文字定数は "0" などのようにエンコードすることができる 。 pbin: ; print AC1 on console as 16 binary digits, by Toby Thain sta 3,retrn ; save return addr lda 2,n16 ; set up bit counter loop: lda 0,chr0 ; load ASCII '0' movzl 1,1,szc ; get next bit in carry inc 0,0 ; bump to '1' .systm .pchar ; AC0-2 preserved jmp err ; if error inc 2,2,szr ; bump counter jmp loop ; loop again if not zero lda 0,spc ; output a space .systm .pchar jmp err ; if error jmp @retrn spc: " ;that's a space chr0: "0 n16: -20 retrn: 0
※この「2進印刷演算器」の解説は、「データゼネラルNova」の解説の一部です。
「2進印刷演算器」を含む「データゼネラルNova」の記事については、「データゼネラルNova」の概要を参照ください。
- 2進印刷演算器のページへのリンク