2016-11-17 1 views
0

ich ein so genanntes einfaches PEP8 Programm entwickle, das eine Basis 2 Nummer in der Basis konvertiert sind 10.PEP8 - Basis 2 bis 10 Basiskonverter

unter den Anforderungen:

  1. für Benutzereingaben anfordern in Basis 2
  2. Konvertieren Sie den Basis 2-Wert in Dezimal und geben Sie das aus.
  3. Schließlich Schleife und fragen Benutzer, wenn sie einen anderen Wert eingeben möchten. Wenn ja Frage wieder, sonst Display-Meldung ‚Fertig‘ (oder etwas in diesem Sinne)

Bisher Ich versuche, einen Charakter aus und speichern diese als String zu lesen.

Könnte jemand helfen!

Vielen Dank.

   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 

Antwort

1

Speichern als eine Zeichenfolge würde funktionieren, aber das Problem wird komplizierter.

Sie könnten dies während des Monats zwischen Frage und Antwort herausgefunden haben, aber Sie können die Zahl beim Lesen jedes Zeichens mit der arithmetischen Verschiebung nach links erstellen.

 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    ; } 
          ;} 

Dies ist nicht unbedingt der einfachste oder bester Weg, um das Problem zwar zu lösen, versuche ich nur, um es einfach zu verstehen.

Zum Beispiel könnten Sie die Nummer im Indexregister behalten, bis Sie zum Drucken bereit waren. Dadurch sparen Sie die Zeilen/Zeit vor dem Laden und Speichern mit dem Akkumulator. (Sie könnten einfach ASLX und ADDX 1 verwenden, i)