Pep / 8 Assembly - 在循环内部切换语句

时间:2014-12-05 20:18:11

标签: c++ assembly pep8-assembly

我正在尝试将以下C ++代码转换为Pep / 8程序集,但它似乎不起作用,我真的不知道这是因为我的寻址模式还是有更大的问题。

这是一个利用switch语句的例子,它不在循环内部 - Codepad Link。我也相信我在制作它时遇到了麻烦,因此将字母s中的值与案例值进行比较。这本书并没有触及开关,所以现在只是试验和错误。

C ++

int main() {

    char letter;
    int countA = 0,
    countB = 0,
    countC = 0;

    cin >> letter;

    do {
        switch (letter) {
            case 'A' : countA++; break;
            case 'B' : countB++; break;
            case 'C' : countC++; break;
        }
        cin >> letter;
    } while (letter != 'X');

    cout << "Number of A's " << countA << endl
    << "Number of B's " << countB << endl
    << "Number of C's " << countC << endl;

    return 0;

}

打气/ 8

       BR main
    main:   SUBSP 1,i
            LDA 0,i
            STA countA,d
            LDA 0,i
            STA countB,d
            LDA 0,i
            STA countC,d
            CHARI letter,s      ; cin >> letter
            LDX letter,s
            ASLX
            BR do
    do:     BR cases,x
    cases:  .ADDRSS caseA
            .ADDRSS caseB
            .ADDRSS caseC
    caseA:  LDA countA,s        ; countA++
            ADDA 1,i
            STA countA,s
            BR endCase          ; break
    caseB:  LDA countB,s        ; countB++
            ADDA 1,i
            STA countB,s
            BR endCase          ;break
    caseC:  LDA countC,s        ; countC++
            ADDA 1,i
            STA countC,s
            BR endCase          ; break
    endCase: CHARI letter,s      ; } cin >> letter; } while...
            ADDSP 1,i
    while:  LDBYTEA letter,d    ; while (letter != 'X')
            CPA 'X',d
            BRNE do
    endLoop: STRO msgA,d         ; cout << "Number of A's: " << countA << endl
            DECO countA,s
            CHARO '\n',i
            STRO msgB,d         ; cout << "Number of B's: " << countB << endl
            DECO countB,s
            CHARO '\n',i
            STRO msgC,d         ; cout << "Number of C's: " << countC << endl
            DECO countC,s
            CHARO '\n',i
            STOP
    msgA:   .ascii "Number of A's: \x00"
    msgB:   .ascii "Number of B's: \x00"
    msgC:   .ascii "Number of C's: \x00"
            .end

0 个答案:

没有答案