回 帖 发 新 帖 刷新版面

主题:各位高手来解释下下面的语句吧

D SEGMENT                                                                          主程序标题
STRING1         DB 'Enter the first string(NUMBER<80):',0DH,0AH,'$'      
STRING2        DB 0DH,0AH,'Enter the second string (NUMBER<80):',0DH,0AH,'$'    
RESULT1        DB 0DH,0AH,'The two string are identical',0DH,0AH,'$'             
RESULT2        DB 0DH,0AH,'The two string are not identical',0DH,0AH,'$'          
IN1    DB 100                
    DB ?
    DB 100 DUP (?)
IN2    DB 100                
    DB ?
    DB 100 DUP (?)
D ENDS

OUTPUT MACRO DAT                
       MOV         DX,OFFSET DAT
       MOV         AH,9             
       INT         21H
ENDM    
        
CSEG SEGMENT                        
     ASSUME         CS:CSEG,DS:D       
START:MOV         AX,D
      MOV         DS,AX
      OUTPUT     STRING1            
      LEA         DX,IN1
      MOV         AH,0AH
      INT         21H                    
      OUTPUT     STRING2
      LEA         DX,IN2            
      MOV         AH,0AH
      INT         21H                    
      LEA         SI,IN1
      LEA         DI,IN2
      INC         SI
  INC         DI
      MOV         AH,[SI]
      MOV         AL,[DI]
      CMP         AH,AL            
      JNE         NOTSAME            
      MOV         CL,AL                    
      INC         SI    
      INC         DI
AG:   MOV         AL,[SI]            
      MOV         AH,[DI]
      CMP         AH,AL
      JNE         NOTSAME
      INC         SI
      INC         DI
      LOOP         AG                    
      OUTPUT         RESULT1        
      JMP             EXTOUT    
NOTSAME: OUTPUT         RESULT2
EXTOUT: MOV         AH, 4CH
        INT             21H
CSEG ENDS
END START

回复列表 (共1个回复)

沙发

D SEGMENT
STRING1            DB 'Enter the first string(NUMBER<80):',0DH,0AH,'$'
STRING2            DB 0DH,0AH,'Enter the second string (NUMBER<80):',0DH,0AH,'$'
RESULT1            DB 0DH,0AH,'The two string are identical',0DH,0AH,'$'
RESULT2            DB 0DH,0AH,'The two string are not identical',0DH,0AH,'$'
IN1                DB 100    ;最大可以从键盘读取字符的个数
                DB ?    ;实际读入字符的个数
                DB 100 DUP (?)
IN2                DB 100
                DB ?
                DB 100 DUP (?)
D ENDS

OUTPUT MACRO DAT                
       MOV         DX,OFFSET DAT
       MOV         AH,9             
       INT         21H
ENDM    
        
CSEG SEGMENT                        
     ASSUME       CS:CSEG,DS:D       
START:MOV         AX,D
      MOV         DS,AX

      OUTPUT      STRING1    ;提示输入第 1 个字符串

      LEA         DX,IN1
      MOV         AH,0AH
      INT         21H        ;读取键盘输入

      OUTPUT      STRING2    ;提示输入第 2 个字符串

      LEA         DX,IN2
      MOV         AH,0AH
      INT         21H        ;读取键盘输入

      LEA         SI,IN1
      LEA         DI,IN2
      INC         SI
      INC         DI
      MOV         AH,[SI]    ;第 1 个输入字符串的长度
      MOV         AL,[DI]    ;第 2 个输入字符串的长度
      CMP         AH,AL        ;比较两个输入长度
      JNE         NOTSAME
      MOV         CL,AL
      INC         SI    
      INC         DI
AG:   MOV         AL,[SI]    ;把第 1 个字符串的每个字节送入 AL
      MOV         AH,[DI]    ;把第 2 个字符串的每个字节送入 AH
      CMP         AH,AL        ;比较是否相同
      JNE         NOTSAME
      INC         SI        
      INC         DI
      LOOP         AG
      OUTPUT         RESULT1        
      JMP             EXTOUT    
NOTSAME: OUTPUT         RESULT2
EXTOUT: MOV         AH, 4CH
        INT             21H
CSEG ENDS
END START

我来回复

您尚未登录,请登录后再回复。点此登录或注册