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

📄 10.11.asm

📁 汇编文件管理
💻 ASM
字号:

student STRUC
        id DW ?
        sname DB 10 DUP(?)
        age DB ?
student ENDS
DATA SEGMENT
    Len   DB ?
    fname DB "C:\Student.TXT",0
    msg1 DB "Id:$"
    msg2 DB "Name:$"
    msg3 DB "Age:$"
    msg4 DB "continue? $"
    msg5 DB "Fail to create file?$"
    CRLF DB 0AH,0DH,"$"
    buff DB ?,?,11 DUP(?)
    peason STUDENT  < >    
DATA ENDS

CODE SEGMENT

START: ASSUME DS:DATA,CS:CODE
       MOV AX,DATA
       MOV DS,AX
    ; MOV AX,DS
     MOV ES,AX
     LEA DX,fname
     MOV CX,20H
     MOV AH,3CH
     INT 21H

     JnC  next
ERROR:MOV DX,OFFSET msg5
      CALL DISMSG
      JMP OVER
next:    MOV BX,AX
AGAIN:
      MOV DX,OFFSET CRLF
      CALL DISMSG
      MOV Len,5
      MOV DX,OFFSET msg1
      CALL GetInfo

      MOV DX,offset buff+2
      MOV Len,4
      CALL GetData
      MOV peason.id,AX

      mov dx,offset msg2
      mov Len,11
      call GetInfo
      MOV CX,10
      MOV AL,' '
      LEA DI,peason.sname
      ;REP STOSB
repts:mov byte ptr [di],al
      inc di
      loop repts
      MOV CL,buff+1
      MOV SI,OFFSET buff+2
      LEA DI,peason.sname
      ;REP MOVSB
 reptm:MOV ax,[SI]
       mov [di],ax
       INC DI
       INC SI
       LOOP reptm
      mov Len,3
      mov dx,offset msg3
      call GetInfo

      mov Len,2
      mov dx,offset buff+2
      call GetData
      MOV peason.age,AL
      MOV CX,SIZE peason
      LEA DX,peason
      MOV ah,40h
      INT 21H

      mov dx,offset msg4
      call DISMSG
      MOV AH,1
      INT 21H
      AND AL,0DFH
      CMP AL,'Y'
      JZ AGAIN
      MOV AH,3EH
      INT 21H
          
OVER:
    MOV AH,4CH
    INT 21H

    ;显示信息
;入口参数 DX=信息地址
DISMSG PROC
       PUSH DX
       PUSH AX
       MOV AH,9H
       INT 21H
       POP AX
       POP DX
       RET
DISMSG ENDP

;入口参数:
GetData PROC
        PUSH BX
        PUSH DX
        PUSH SI
        XOR CX,CX
        MOV CL,Len
        MOV SI,Data
        XOR AX,AX
        XOR BX,BX
  REP:
         MOV BL,[SI]
         SUB BL,'0'
         CMP BL,9
         JA EN
         CMP BL,0
         JB EN
         XOR DX,DX
         MOV DX,10
         IMUL DX
         ADD AX,BX
         INC SI
         LOOP REP
     EN: POP SI
         POP DX
         POP BX
         RET
GetData ENDP

;入口:DX=MSG地址,len
;出口:buff=字符串
GetInfo PROC
        PUSH AX
        CALL DISMSG
        MOV AL,Len
        MOV buff,AL
        MOV AH,0AH
        LEA DX,buff
        INT 21H
        MOV DX,OFFSET CRLF
        CALL DISMSG
        POP AX
        RET
GetInfo ENDP
CODE ENDS
     END START

⌨️ 快捷键说明

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