⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 testdd.asm

📁 汇编程序
💻 ASM
字号:
DATA SEGMENT
BUFFER DB 6
       DB ?
       DB 6 DUP(?)
BUF  DB 60 DUP(?)
NUM  DB 10 DUP(31H)
COUNT DB 0
STR1 DB 'please input the number and score.',0DH,0AH,'input @ to quit.',0DH,0AH,'$'
STR2 DB 'the result is:',0DH,0AH,'$'
STR3 DB 'error! the number and score must between 00 and 99' ,0DH,0AH,'$'
DATA ENDS

STACK SEGMENT STACK 'STACK'
     DB 100 DUP(?)
STACK ENDS

CODE  SEGMENT PARA 'CODE'
   ASSUME CS:CODE,DS:DATA,SS:STACK
STA  PROC FAR
     PUSH DS
     XOR  AX,AX
     PUSH AX
     MOV  AX,DATA
     MOV  DS,AX

     LEA  DX,STR1
     MOV  AH,9
     INT  21H

NEXT:LEA DX,BUFFER     ;输入
     MOV AH,10
     INT 21H

     MOV DL,0DH
     MOV AH,2
     INT 21H
     
     MOV DL,0AH
     MOV AH,2
     INT 21H
     
     PUSH SI
     PUSH CX
     MOV CX,2
     LEA SI,BUFFER+2
     MOV AL,[SI]
     CMP AL,40H
     JNZ PP
      POP CX
     POP SI
     JMP PAIXU             ;结束 
 PP: CMP AL,30H                             
     JB  WARN
     CMP AL,39H
     JA  WARN                             
     INC SI
     MOV AL,[SI]
     CMP AL,39H
     JA  WARN
     CMP AL,30H           ;60    
     JB  WARN
     INC SI
     INC SI
     MOV AL,[SI]
     LOOP PP
     POP CX
     POP SI ;输入正确
                                    
    JMP STOREIN       

WARN:              ;输入出错
     POP CX
     POP SI
     LEA DX,STR3          ;报错
     MOV AH,9
     INT 21H 
     JMP NEXT                  
     
                                
                             
 STOREIN :INC COUNT
       CMP COUNT,10
       JA  PAIXU
       LEA SI,BUFFER+2 
        PUSH CX
        PUSH AX
        MOV CX,6
        MOV AH,COUNT                    
        LEA DI,BUF            
  QQ:   DEC AH             ;90
        JZ  NET
        INC DI
        INC DI
        INC DI
        INC DI
        INC DI
        INC DI
        JMP QQ
    NET:MOV AL,[SI]
        MOV [DI],AL
        INC SI
        INC DI
        LOOP NET
        POP AX
        POP CX
      JMP NEXT  
              
PAIXU:PUSH SI
      PUSH DI
      PUSH DX
      PUSH AX;110
      PUSH BX
      PUSH CX
     
      CMP COUNT,0
      JNZ TT
      RET
                               ;比较次数
   TT:MOV  BL,0 
      LEA  DI,NUM
      MOV  BH,COUNT             
     
   L1:   
      LEA  SI,BUF+3 
      MOV CL,BL
      SHL CL,1
      MOV CH,CL
      SHL CL,1
      ADD CL,CH
      XOR CH,CH
      ADD CX,SI  
      PUSH SI
      MOV SI,CX
      MOV  AH,[SI+1]
      MOV  AL,[SI]
      POP SI             ;学生个数                         
  LL: MOV  DH,[SI+1]
      MOV  DL,[SI]         
                    ;比较次数
      CMP  AX,DX
      JB DOWN
   UP:INC SI
      INC SI
      INC SI
      INC SI
      INC SI
      INC SI
      DEC BH                        ;130
      JNZ LL
      MOV  BH,COUNT 
      INC BL
      CMP BL,COUNT
      JNZ L1
      POP CX
      POP BX
      POP AX
      POP DX
      POP DI
      POP SI
      JMP DISPLAY
DOWN:PUSH AX
     PUSH BX
     PUSH DI
     XOR BH,BH
     ADD DI,BX
     MOV AX,[DI]
     INC AX
     MOV [DI],AX
     POP DI
     POP BX
     POP AX
     JMP UP 

DISPLAY:PUSH SI
        PUSH DI
     
        PUSH BX
        MOV BL,COUNT
 
     LEA DI,NUM
     LEA SI,BUF 
 
     LEA DX,STR2
     MOV AH,9
     INT 21H
       DEC SI
 KKK: MOV BH,05H
 AGAIN:INC SI
       MOV DL,[SI] 
       MOV AH,2
       INT 21H   
       DEC BH
       JNZ AGAIN
      
      MOV DL,20H
      MOV AH,2
      INT 21H

     MOV DL,[DI]
     MOV AH,2
     INT 21H

     MOV DL,0DH
     MOV AH,2
     INT 21H
     MOV DL,0AH
     MOV AH,2
     INT 21H

     INC SI
     INC DI
     DEC BL
     JNZ KKK
        POP BX
        POP DI
        POP SI
      RET
STA  ENDP

CODE ENDS
     END STA
    
  
     
     
     
     

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -