我正在为我的一个程序集(pep8)中的一个课程编写程序。该程序应该接受一个介于 -32,768 和 32,767 之间的整数,并输出它的二进制等价物。下面的代码完成了这个任务,只是它向后打印了二进制数。
有没有一种优雅的方式让我以正确的顺序打印二进制数(即我不想将每个二进制数字存储在局部变量中,然后以相反的顺序打印它们)。
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