我正在开发一个所谓的简单pep8程序,它将基数为2的数字转换为基数10.
以下是要求:
到目前为止,我正在尝试读取一个字符并将其存储为字符串。
任何人都可以提供帮助!
谢谢。
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
答案 0 :(得分: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)