最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

汇编字符串比较

来源:动视网 责编:小OO 时间:2025-09-27 21:02:55
文档

汇编字符串比较

从键盘分别输入两个字符串(不必等长),然后进行比较,若两个字符串有相同的字符,则显示“MATCH”,若字符都不相同则显示“NOMATCH”。CRLFMACROMOVAH,2MOVDL,0DHINT21HMOVAH,2MOVDL,0AHINT21HENDMS_SHOWMACROSTRINGMOVAH,9MOVDX,OFFSETSTRINGINT21HENDMS_INMACROBUFFMOVAH,10MOVDX,OFFSETBUFFINT21HENDMDATASEGMENTMESS1DB'MATC
推荐度:
导读从键盘分别输入两个字符串(不必等长),然后进行比较,若两个字符串有相同的字符,则显示“MATCH”,若字符都不相同则显示“NOMATCH”。CRLFMACROMOVAH,2MOVDL,0DHINT21HMOVAH,2MOVDL,0AHINT21HENDMS_SHOWMACROSTRINGMOVAH,9MOVDX,OFFSETSTRINGINT21HENDMS_INMACROBUFFMOVAH,10MOVDX,OFFSETBUFFINT21HENDMDATASEGMENTMESS1DB'MATC
    从键盘分别输入两个字符串(不必等长),然后进行比较,若两个字符串有相同的字符,则显示“MATCH”,若字符都不相同则显示“NO MATCH”。 

CRLF    MACRO                                

    MOV AH,2

    MOV DL,0DH                            

    INT 21H

    MOV AH,2

    MOV DL,0AH                            

    INT 21H

   ENDM

S_SHOW    MACRO  STRING                            

         MOV AH,9

         MOV DX,OFFSET  STRING                         

         INT 21H

ENDM

S_IN       MACRO  BUFF

      MOV AH,10

     MOV DX,OFFSET  BUFF

               INT 21H

     ENDM

DATA    SEGMENT

   MESS1    DB  'MATCH',0DH,0AH,'$'

   MESS2    DB  'NO MATCH',0DH,0AH,'$'

   MESS3    DB  'INPUT STRING1:',0DH,0AH,'$'

   MESS4    DB  'INPUT STRING2:',0DH,0AH,'$'

   STR1      DB 100,?,100 DUP(0)                     

   STR2      DB 100,?,100 DUP(0)                     

DATA    ENDS

CODE    SEGMENT

      ASSUME    CS:CODE,DS:DATA

START:MOV AX,DATA

    MOV DS,AX

    

    S_SHOW  MESS3                 

    S_IN  STR1

    CRLF

    S_SHOW  MESS4                 

    S_IN  STR2

    CRLF    

                  MOV  CL,STR1+1

              MOV  SI,OFFSET  STR1+2

AGAIN:  MOV  AL,[SI]

              MOV  CH, STR2+1

              MOV  DI,OFFSET  STR2+2

NEXT:   CMP  AL,[DI]

              JE  MATCH

               INC  DI

               DEC  CH

               JNZ  NEXT

               INC  SI

               DEC  CL

               JNZ  AGAIN

               S_SHOW   MESS2

               JMP   EXIT

MATCH: S_SHOW   MESS1

EXIT:      

      MOV  AH,01H

      INT 21H

      MOV AH,4CH

      INT 21H

CODE    ENDS

     END  START

    从键盘上输入4位十六进制数,将其转换为16位二进制数并在显示器上显示出来。要求输入的数字字符串以回车键结束。如果输入的数字超过4个,则以最后输入的4个为准。若按下的键不是十六进制数字字符,则显示出错信息。

C_SHOW   MACRO  CHAR                        MOV AH,2

    MOV DL,CHAR                            INT 21H

    ENDM

S_SHOW    MACRO  STRING                             MOV AH,9

         MOV DX,OFFSET  STRING                         INT 21H

         ENDM

S_IN       MACRO  BUFF

      MOV AH,10

     MOV DX,OFFSET  BUFF

               INT 21H

     ENDM 

DATA    SEGMENT

       MESS1    DB  'Please input a hex number:',0AH,0DH,'$'

       MESS2   DB  'Error!',0AH,0DH,'$'

       INBUF    DB  50,?,50 DUP(0)    

      FLAG      DB  0               ;错误标志             

DATA    ENDS

CODE    SEGMENT

      ASSUME    CS:CODE,DS:DATA

START:MOV AX,DATA

    MOV DS,AX

    S_SHOW   MESS1                 

    S_IN   INBUF

    C_SHOW  0DH

             C_SHOW  0AH

             CALL  GETNUM  

             CMP   FLAG,1

             JE  ERROR

             CALL NUMSHOW

             JMP  EXIT

ERROR: S_SHOW  MESS2

EXIT:      MOV  AH,4CH

      INT    21H

GETNUM   PROC

               MOV  SI,OFFSET INBUF+2

               MOV  AH,0

               MOV  AL,INBUF+1               

               ADD  SI,AX

               SUB   SI,4

               MOV  CX,4

               MOV  BX,0

NEXT:    MOV  AL,[SI]

               CMP  AL,'0'

               JB   FLAG1

               CMP  AL,'9'

               JA  NO_0_9  

               SUB  AL,30H

               JMP  NEXT1

NO_0_9: CMP  AL,'A'

               JB   FLAG1

               CMP  AL,'F'

               JNA   IS_A_F

               

                 CMP  AL,'a'

               JB   FLAG1

                CMP AL,'f'

               JA   FLAG1

               SUB  AL,57H

               JMP  NEXT1

IS_A_F:  SUB  AL,37H

NEXT1:   PUSH CX

                 MOV  CL,4

                 SHL  BX,CL

                 ADD  BL,AL

                 INC  SI

                 POP  CX

                 LOOP  NEXT 

                 RET      

FLAG1:     MOV  FLAG,1

                 RET

GETNUM  ENDP

NUMSHOW   PROC

                 MOV CX,16

 SNEXT:   SHL BX,1

                 JNC S_0

                 C_SHOW  '1'

                 JMP  SNEXT1

 S_0:        C_SHOW  '0' 

 SNEXT1: LOOP SNEXT

                C_SHOW  'B'

                RET

NUMSHOW   ENDP   

CODE  ENDS

            END START

        从键盘上输入的十六进制数字字符进入计算机后并不是相应的十六进制数或二进制数,而是与字符对应的ASCII码,现要找出ASCII码与该数字对应的二进制数之间的关系。关系如下:

十六进制数字字符    字符对应的ASCII码     数字对应的二进制数

       0 ~ 9                      30H ~ 39H                 ASCII码 - 30H

       A ~ F                      41H ~ 46H                ASCII码 - 37H

       a ~ f                       61H ~ 66H                 ASCII码 - 57H

文档

汇编字符串比较

从键盘分别输入两个字符串(不必等长),然后进行比较,若两个字符串有相同的字符,则显示“MATCH”,若字符都不相同则显示“NOMATCH”。CRLFMACROMOVAH,2MOVDL,0DHINT21HMOVAH,2MOVDL,0AHINT21HENDMS_SHOWMACROSTRINGMOVAH,9MOVDX,OFFSETSTRINGINT21HENDMS_INMACROBUFFMOVAH,10MOVDX,OFFSETBUFFINT21HENDMDATASEGMENTMESS1DB'MATC
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top