微机原理与接口技术大作业,编写汇编语言源程序,要求从键盘输入全班学生信息

2025-04-04 17:35:28
推荐回答(1个)
回答1:

这个程序很复杂,这个问题学会了,汇编语言也就基本过关了。
下面给出输入和原始顺序分数输出,重点说明结构数据的使用,供参考:
 
        STUD  STRUC
          NO  DB        10,?,10 DUP(?)
          XM  DB        20,?,20 DUP(?)
          CJ  DB        6,?,6 DUP(?)
       SCORE  DW        ?
    STUD_LEN  EQU       $-NO
        STUD  ENDS
 
        DATA  SEGMENT
       STUDS  STUD 100 dup(<>)
         NUM  DW        0
       NOMSG  DB        13,10,13,10,'please input the number of student: $'
       XMMSG  DB        13,10,'please input the name of student: $'
       CJMSG  DB        13,10,'please input the score of student: $'
     CONTMSG  DB        13,10,13,10,'Are you want to continue(y/n)? $'
        DATA  ENDS
 
        CODE  SEGMENT
              ASSUME    CS:CODE,DS:DATA,ES:DATA
      START:  MOV       AX,SEG DATA
              MOV       DS,AX
              MOV       ES,AX
              LEA       DI,STUDS
         @0:
              LEA       DX,NOMSG
              MOV       AH,9
              INT       21H
              LEA       DX,[DI].NO
              MOV       AH,0AH
              INT       21H
              LEA       DX,XMMSG
              MOV       AH,9
              INT       21H
              LEA       DX,[DI].XM
              MOV       AH,10
              INT       21H
              LEA       DX,CJMSG
              MOV       AH,9
              INT       21H
              LEA       DX,[DI].CJ
              MOV       AH,10
              INT       21H
              ; 以下计算score 
              MOV       WORD PTR [DI].SCORE,0
              LEA       SI,[DI].CJ
              MOV       CL,[SI+1]
              MOV       CH,0
       @@CJ:
              MOV       AX,[DI].SCORE
              MOV       BX,10
              MUL       BX
              MOV       DX,AX
              MOV       AL,[SI+2]
              SUB       AL,30H
              MOV       AH,0
              ADD       AX,DX
              MOV       [DI].SCORE,AX
              INC       SI
              LOOP      @@CJ
            
              INC       WORD PTR NUM
              ADD       DI,STUD_LEN
              LEA       DX,CONTMSG
              MOV       AH,9
              INT       21H
              MOV       AH,1
              INT       21H
              CMP       AL,'n'
              JE        @2
              JMP       @0
               
         @2:
              MOV       AH,2
              MOV       DL,13
              INT       21H
              MOV       DL,10
              INT       21H
              MOV       CX,NUM
              LEA       DI,STUDS
      @@OUT:
              MOV       AX,[DI].SCORE
              CALL      DISPAX
              ADD       DI,STUD_LEN
              LOOP      @@OUT
               
      @EXIT:
              MOV       AH,4CH
              INT       21H
;==============================================
      DISPAX  PROC      NEAR
              PUSH      BX
              PUSH      CX
              PUSH      DX
              PUSH      SI
              PUSH      DS
              PUSH      AX
              MOV       AH,2
              MOV       DL,' '
              INT       21H
              POP       AX
              PUSH      CS
              POP       DS
              MOV       BYTE PTR NZ,0
              PUSH      AX
              LEA       SI,DIVARR
              MOV       CX,5
        @@1:
              POP       AX
              MOV       DX,0
              MOV       BX,[SI]
              DIV       BX
              PUSH      DX
              CMP       AL,0
              JNE       @@2
              CMP       BYTE PTR NZ,1
              JE        @@2
              CMP       CX,1
              JE        @@2
              MOV       DL,20H
              JMP       @@3
        @@2:
              ADD       AL,30H
              MOV       DL,AL
              MOV       BYTE PTR NZ,1
        @@3:
              MOV       AH,2
              INT       21H
              INC       SI
              INC       SI
              LOOP      @@1
              POP       DX
              POP       DS
              POP       SI
              POP       DX
              POP       CX
              POP       BX
              RET
      DIVARR  DW        10000,1000,100,10,1
          NZ  DB        0
      DISPAX  ENDP
;===============================================                    
        CODE  ENDS
              END       START
              
建议编制这些子程序:串结构数组排序子程序、串结构数据交换子程序