簡體   English   中英

68k匯編語言的決策結構

[英]Decision Structures in 68k assembly language

我想編寫一個程序來提示用戶從鍵盤輸入一個字符。 對於輸入的字符,將字符分類為數字,字母如果用戶輸入“ *”,則再次循環輸入新值問題總是顯示結果是數字,當我輸入字母時不正確。 感謝您的幫助。

             ORG    $1000
*read user input
START:      
            MOVEQ   #18,D0
            LEA     PR1,A1
            TRAP    #15

*COMPARING           
           MOVE.B  D1,D2 
            CMP.B   #$30,D2                 ;if ch less than ASCII '0'
            BGE     number                  
            CMP.B   #$39,D2                 ;check if ch greater than ASCII '9' 
            BLE     number                  
            ANDI    #$DF,D2                 ;CONVERT TO UPPERCASE
            CMP.B   #65,D2                  
            BGE     letter
            CMP.B   #90,D2
            BLE     letter
            CMP.B   #$2a,D1                 ;if user enter *
            BEQ     START                   ;then loop again to enter new value



number      LEA     n,A1       
             JSR     P_STR          
            MOVE.B  #5,D0
            TRAP    #15 
letter       LEA     l,A1
            JSR     P_STR
             MOVE.B  #5,D0
             TRAP    #15                  
PR1         DC.B    'Enter value: ',0
n           DC.B    'Number',0
l           DC.B    'Letter',0
            INCLUDE 'sample.x68'    ; it is the file Prints a string withCR/LF          
            END     START

您的邏輯不正確:

CMP.B   #$30,D2                 ;if ch less than ASCII '0'
BGE     number                  
CMP.B   #$39,D2                 ;check if ch greater than ASCII '9' 
BLE     number                  

轉換為:

if (ch >= 0x30 || ch <= 0x39) goto number;

您想要的是:

if (ch >= 0x30 && ch <= 0x39) goto number;

看起來像這樣:

CMP.B   #$30,D2 
BLT     not_number
; We've established that ch>=0x30, now also make sure that it's also <=0x39                  
CMP.B   #$39,D2                 
BLE     number
not_number:

您的信函支票可能需要進行類似的更改; 我沒有檢查代碼的那部分。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM