汇编语言,如何判断一个字符是字母还是数字??

如题所述

用比较指令,看字符的ASCII码值是否大于等于‘0’(30H)且小于等于‘9’(39H),若是,则是数字。

对字母,判定方法类似。
若大于等于‘A'且小于等于'Z',则是大写字母。
若大于等于’a'且小于等于‘z',则是小写字母。
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2018-01-03
        CODE  SEGMENT
              ASSUME    CS:CODE
         BUF  DB        '1qaz2w,,,,,sx3eASBX7dc'
         NUM  EQU       $-BUF

      START:
              PUSH      CS
              POP       DS
              PUSH      CS
              POP       ES
              MOV       CX,NUM
              LEA       SI,BUF
              CLD
        @M0:
              LODSB
              CALL      ISNUMBER
              CMP       AH,1
              JNE       @M1
              CALL      DISPNUM
              JMP       @MM
        @M1:
              CALL      ISALPHA
              CMP       AH,1
              JNE       @M2
              CALL      DISPALPHA
              JMP       @MM
        @M2:
              MOV       AH,2
              MOV       DL,32
              INT       21H
        @MM:
              LOOP      @M0

              MOV       AH,4CH
              INT       21H
;======================================                    
    ISNUMBER  PROC      NEAR
              CMP       AL,'0'
              JB        @NONUMBER
              CMP       AL,'9'
              JA        @NONUMBER
              MOV       AH,1
   @NUMEXIT:
              RET
  @NONUMBER:  MOV       AH,0
              JMP       @NUMEXIT
    ISNUMBER  ENDP
;=========================================
     ISALPHA  PROC      NEAR
              CMP       AL,'A'
              JB        @NOALPHA
              CMP       AL,'z'
              JA        @NOALPHA
              CMP       AL,'Z'
              JBE       @ALPHA
              CMP       AL,'a'
              JAE       @ALPHA
              JMP       @NOALPHA
     @ALPHA:
              MOV       AH,1
 @ALPHAEXIT:
              RET
   @NOALPHA:
              MOV       AH,0
              JMP       @ALPHAEXIT
     ISALPHA  ENDP
;==========================================
     DISPNUM  PROC      NEAR
              PUSH      AX
              PUSH      DX
              MOV       AH,2
              MOV       DL,'N'
              INT       21H
              POP       DX
              POP       AX
              RET
     DISPNUM  ENDP
;==========================================
   DISPALPHA  PROC      NEAR
              PUSH      AX
              PUSH      DX
              MOV       AH,2
              MOV       DL,'A'
              INT       21H
              POP       DX
              POP       AX
              RET
   DISPALPHA  ENDP
;========================================     
        CODE  ENDS
              END       START

本回答被网友采纳
第2个回答  2013-10-18
通过ASCII的码值来判断
第3个回答  2013-10-18
判断ASCII码