アセンブリ言語統計入力における各文字の出現回数



  
  
  
  
  1. DATA SEGMENT  
  2. BUFFER DB 100  
  3. DB ?  
  4. DB 100 DUP(?)  
  5. CHARS DB 'INPUT:$' 
  6. DATA ENDS  
  7. CODE SEGMENT  
  8.      ASSUME CS:CODE,DS:DATA  
  9. MAIN PROC FAR  
  10.      PUSH DS  
  11.      SUB AX,AX  
  12.      PUSH AX  
  13.      MOV AX,DATA  
  14.      MOV DS,AX  
  15. START: MOV DX,OFFSET CHARS  
  16.      MOV AH,9  
  17.      INT 21H  
  18.      MOV DX,OFFSET BUFFER  
  19.      MOV AH,0AH  
  20.      INT 21H  
  21.      MOV DL,0AH  
  22.      MOV AH,2  
  23.      INT 21H  
  24.      MOV DL,0DH  
  25.      MOV AH,2  
  26.      INT 21H  
  27.      MOV SI,OFFSET BUFFER  
  28.      INC SI  
  29.      MOV AL,[SI]  
  30.      INC SI  
  31.      MOV DL,[SI]  
  32.      MOV DH,[SI]  
  33.      MOV DI,SI  
  34.      MOV CL,AL  
  35.      MOV CH,0  
  36.      MOV BL,1  
  37.      MOV BH,0  
  38.      DEC CL  
  39. GO1: INC SI  
  40.      CMP DL,[SI]  
  41.      JNE TO1  
  42.      INC BL  
  43. TO1: LOOP GO1  
  44.      CALL OUTPUT 
  45.      MOV BL,1  
  46. TO5: INC DI  
  47.      DEC AL  
  48.      CMP AL,1  
  49.      JE TO3  
  50.      CMP DH,[DI]  
  51.      JE TO5  
  52.      MOV DL,[DI]  
  53.      MOV SI,DI  
  54.      MOV CL,AL  
  55.      MOV CH,0  
  56.      DEC CL  
  57. GO2: INC SI  
  58.      CMP [SI],DL  
  59.      JNE TO2  
  60.      INC BL  
  61.      MOV [SI],DH  
  62. TO2: LOOP GO2  
  63.      CALL OUTPUT 
  64.      MOV BL,1  
  65.      JMP TO5  
  66.  
  67. TO3: CMP DH,[DI]  
  68.      JE TO4  
  69.      MOV DL,[DI]  
  70.      MOV BL,1  
  71.      CALL OUTPUT 
  72. TO4: RET  
  73. MAIN ENDP   
  74.  
  75. ;?-------------------------  
  76. OUTPUT PROC  
  77.      PUSH AX  
  78.  
  79.      PUSH CX  
  80.      PUSHF  
  81.      MOV AH,2  
  82.      INT 21H  
  83.      MOV DL,20H  
  84.      MOV AH,2  
  85.      INT 21H  
  86.      MOV AL,BL  
  87.      MOV AH,0  
  88.      MOV CL,10  
  89.      DIV CL  
  90.      ADD AH,30H  
  91.      ADD AL,30H  
  92.      MOV CH,AH  
  93.      MOV DL,AL  
  94.      MOV AH,2  
  95.      INT 21H  
  96.      MOV DL,CH  
  97.      MOV AH,2  
  98.      INT 21H  
  99.      MOV DL,0AH  
  100.      MOV AH,2  
  101.      INT 21H  
  102.      MOV DL,0DH  
  103.      MOV AH,2  
  104.      INT 21H  
  105.      POPF   
  106.      POP CX   
  107.      POP AX  
  108.      RET  
  109. OUTPUT ENDP  
  110. CODE ENDS  
  111.     END MAIN  
  112.  
  113. ;?-----------------  
  114.