📄 10.11.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 + -