アセンブリ(pep8)のクラスの1つにプログラムを書いています。プログラムは、-32,768〜32,767の整数を取り込んで、それに相当する2進数を出力することになっています。以下のコードは、2進数を逆方向に出力することを除いてタスクを実行します。
2進数を正しい順序で印刷するためのエレガントな方法はありますか(つまり、すべての2進数をローカル変数に格納してから、逆の順序で印刷したくない)。
BR main
int: .EQUATE 0 ;local variable int
out: .EQUATE 2 ;local variable out
index: .EQUATE 4 ;local variable index
stack: .EQUATE 6 ;local variable for dynamic memory allocation
main: SUBSP stack,i ;allocate memmory
LDA 0,i
STA index,s ;initialize index
DECI int,s ;get user input and store it in num
while: LDA index,s ;while (num <= 16)
CPA 16,i ;
BRGE endWhile ;
ADDA 1,i ;index++
STA index,s ;
LDA int,s ;
ANDA 0x0001,i ;modulus 2 "%2"
STA out,s ;
DECO out,s ;output results
LDA int,s ;
ASRA ;devide num by 2
STA int,s ;
BR while ;
endWhile: ADDSP stack,i ;deallocate memmory
STOP
.END