2016-10-21 62 views
0

我有一個代碼,我已經在Pep/8 Assembly中進行了測試,該代碼需要輸入字符> < =並進行比較。一旦完成比較並完成適當的數學運算,我想讓程序提示用戶輸入另一個輸入。Pep/8 Assembly回車清空?

我不知道爲什麼,但我的程序在輸入上滾動,並且因爲如果發現「無效」輸入,它就直接返回到退出程序的狀態。我認爲這是一個回車問題。在再次提示之前是否有任何方法可以清除「猜測」的內容?

 CHARI  guess,d  ;character input 
    LDBYTEA guess,d  ; load character into reg a 
    CPA  '>',i 
    BRNE  L 

任何幫助將有所幫助,謝謝。

+0

也許只是CP的CPA,然後循環回CHARI? (創建「輸入任何非CR字符」無限循環)。 (找不到任何pep/8在線資源,所以只是猜測) – Ped7g

回答

0

您可能會遇到一些問題。

如果你的第一個數字大於255,你可能遇到LDBYTEA的問題,因爲它只替換寄存器的最後8位。通過快速測試程序很容易看到。

LDA  0x0123,i 
LDBYTEA 0x01,i 
STOP 
.END 

(完與具有0x0101的值累加器)

CPA將檢查寄存器,這將導致其無法匹配> <或=如果第一8位AREN」的全部16位t設置爲0.您可以在加載字節之前加載0來解決此問題,或者通過與0x00FF(255)進行AND來清除前8位。


當用戶按下回車鍵時,這就是你必須處理的角色。忽略它的最佳選擇是檢查傳入字符是否爲「\ n」(0x0A),如果是,則跳轉回字符輸入。

guess: .BYTE 0 
main: CHARI guess,d 
     LDBYTEA guess,d 
     CPA  '\n',i 
     BREQ main 
     STOP 
     .END 

如果你要清楚猜測的內容,可以通過加載一個值,如0到寄存器中,然後將其保存在猜測做到這一點。

LDA  0,i 
STA  guess,d 

如果你的累加器中有某些你不想覆蓋的東西,可以使用索引寄存器。 (LDX和STX)

你當然可以做另一個字符輸入,它會覆蓋猜測的內容。


如果您仍然遇到問題,請使用「開始調試源」選項逐步進行。 (看起來像一個綠色的箭頭,底部有一個小甲蟲)