其中数据段中定义了: FILENAME DB 30,?,30 DUP(?)
其他什么提示就不写出来了,比如MES1什么的。。问题如下:
INPUT PROC NEAR ;输入文件名子程序
LEA DX,FILENAME
MOV AH,0AH ;键盘输入到缓冲区,即就是输入名字
INT 21H
LEA SI,FILENAME
MOV AL,[SI+1]
XOR AH,AH
ADD SI,2
ADD SI,AX
MOV BYTE PTR [SI],0 ;将回车符转换为0
RET
INPUT ENDP
然后我在代码段中调用创建文件:就是CALL CREATEFILE_
CREATEFILE_ PROC NEAR
mov dx,offset MES1
mov ah,9
int 21h
call INPUT
mov dx ,offset FILENAME ;creat file
add dx,2
mov ah,3ch
mov cx,0
int 21h
jc ERRMES ;判断成功否
lea dx,OK
mov ah,9
int 21h
ret
ERRMES:mov dx,offset ERR
mov ah,9
int 21h
RET
CREATEFILE_ ENDP
此时你输入比如:d:\1.txt 它就建了个这个文件,我的问题是,怎么改,才能使不用输入前面的盘符,直接输入后面的文件名就保存在D:\MINGA 文件夹下呢??
------解决方案--------------------------------------------------------
- Assembly code
ASSUME CS:CODE ,DS:DATADATA SEGMENT FILENAME DB 30,?,30 DUP(?) FULLPATH DB 'D:\TEST\',31 DUP(0) MES1 DB 'INPUT THE FILE NAME:',0DH,0AH,'$' OK DB 'CREATE FILE SUCCESSED',0DH,0AH,'$' ERR DB 'CREATE FILE FAILED',0DH,0AH,'$'DATA ENDSCODE SEGMENT START: ;INIT THE DS AND ES REGISTERS MOV AX,DATA MOV DS,AX MOV ES,AX ;GET THE INPUT STRING CALL INPUT ;CR LF MOV DL,0DH MOV AH,2 INT 21H MOV DL,0AH MOV AH,2 INT 21H ;CONNECT THE INPUT STRING WITH D:\TEST\ LEA SI,FILENAME INC SI XOR CX,CX MOV CL,BYTE PTR DS:[SI] INC SI LEA DI,FULLPATH ADD DI,8 REP MOVSB ;CREATE THE FILE WITH THE FULLPATH STRING CALL CREATEFILE_ MOV AX,4C00H INT 21HINPUT PROC NEAR ;输入文件名子程序 ;-------------------- MOV DX,OFFSET MES1 MOV AH,9 INT 21H ;---------------------- LEA DX,FILENAME MOV AH,0AH ;键盘输入到缓冲区,即就是输入名字 INT 21H LEA SI,FILENAME MOV AL,[SI+1] XOR AH,AH ADD SI,2 ADD SI,AX MOV BYTE PTR [SI],0 ;将回车符转换为0 RETINPUT ENDP;然后我在代码段中调用创建文件:就是CALL CREATEFILE_CREATEFILE_ PROC NEAR ;MOV DX,OFFSET MES1 ;MOV AH,9 ;INT 21H ;----------------------------------------- ;MOV DX ,OFFSET FILENAME ;CREAT FILE MOV DX,OFFSET FULLPATH ;------------------------------------------ ADD DX,2 MOV AH,3CH MOV CX,0 INT 21H JC ERRMES ;判断成功否 LEA DX,OK MOV AH,9 INT 21H RETERRMES: MOV DX,OFFSET ERR MOV AH,9 INT 21H RETCREATEFILE_ ENDP CODE ENDSEND START