2016-11-17 48 views
0

我正在开发所谓的简单PEP8程序,该基地2号转换为基10PEP8 - 基地2至10个基本转换器

下面是要求:

  1. 请求用户输入在基数2中
  2. 将基2值转换为十进制并输出。
  3. 最后循环并询问用户是否要输入其他值。如果是这样再问问题,否则显示消息'完成'(或类似的东西)

到目前为止,我试图读取一个字符并将其存储为一个字符串。

任何人都可以帮忙!

谢谢。

   BR  main   
letter: .BLOCK 1   ;global variable #1c 
; 
main: CHARI letter,d ;cin >> letter 
     LDA  0x0000,i  
while: LDBYTEA letter,d ;while (letter != '*') 
     CPA  '*',i  
     BREQ endWh  
     CHARO letter,d ; cout << letter 
     CHARI letter,d ; cin >> letter 
     BR  while  
endWh: STOP     
     .END 

回答

1

将它作为一个字符串存储会起作用,但这会使问题复杂化。

您可能在问答之间的月份中发现了这一点,但是您可以在读取每个字符时使用算术左移操作构建数字。

 BR main   ;#include <iostream> 
letter: .BYTE 0   ;char letter = 0; 
number: .WORD 0   ;int number = 0; 
          ;int main() { 
main: CHARI letter,d ; std::cin >> letter; 
     LDA  0,i 
     LDBYTEA letter,d 
     CPA  '0',i  ; if (letter == '0') { 
     BRNE notzer 
     LDA  number,d 
     ASLA    ;  number *= 2; 
     STA  number,d 
     BR  main  ;  main(); 
notzer: CPA  '1',i  ; } else if (letter == '1') { 
     BRNE end 
     LDA  number,d 
     ASLA    ;  number *= 2; 
     ADDA 1,i   ;  number++;  
     STA  number,d 
     BR  main  ;  main(); 
          ; } else { 
end: DECO number,d ;  std::cout << number; 
     STOP    ;  return 0; 
     .END    ; } 
          ;} 

这不一定是解决问题的最简单或最好的方法,但我只是试图使其易于理解。

例如,您可以将数字保留在变址寄存器中,直到您准备好打印它为止,从而加载线路/时间并将其保存到累加器中。 (你可以使用ASLX和ADDX 1,i)