2016-11-17 6 views
0

I以下は10Pep8 - ベース10変換するために、ベース2

ベースにベース2の数に変換する、いわゆる単純pep8プログラムを開発してい要件である:

  1. は、ユーザ入力を求めます基数2で
  2. ベース2の値を10進数に変換して出力します。
  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を使うことができます)

関連する問題