; 实验八-2: 文件写入程序 ; 功能: 使用DOS功能号40H向文件写入数据 ; 说明: 需要先打开或创建文件,获取句柄后写入 DATAS SEGMENT FILENAME DB 'testfile.txt', 0 ; 文件名 HANDLE DW ? ; 文件句柄 DATA_TO_WRITE DB 'Hello, Assembly!', 0DH, 0AH, '$' DATA_LEN EQU $-DATA_TO_WRITE ERR_MSG DB 'File write error!', 0DH, 0AH, '$' OK_MSG DB 'Data written successfully!', 0DH, 0AH, '$' DATAS ENDS STACKS SEGMENT DB 64 DUP(?) STACKS ENDS CODES SEGMENT ASSUME CS:CODES, DS:DATAS, SS:STACKS START: MOV AX, DATAS MOV DS, AX ; 首先创建文件 (功能号3CH) LEA DX, FILENAME MOV AH, 3CH MOV AL, 00H INT 21H ; 检查创建是否成功 JC WRITE_ERROR MOV HANDLE, AX ; 写入文件内容 (功能号40H) ; AH = 40H (写入文件功能号) ; BX = 文件句柄 ; CX = 写入字节数 ; DS:DX = 数据缓冲区地址 MOV BX, HANDLE LEA DX, DATA_TO_WRITE MOV CX, DATA_LEN MOV AH, 40H INT 21H ; 检查写入是否成功 JNC WRITE_SUCCESS WRITE_ERROR: LEA DX, ERR_MSG MOV AH, 09H INT 21H JMP CLOSE_FILE WRITE_SUCCESS: LEA DX, OK_MSG MOV AH, 09H INT 21H CLOSE_FILE: ; 关闭文件 (功能号3EH) MOV BX, HANDLE MOV AH, 3EH INT 21H MOV AH, 4CH INT 21H CODES ENDS END START