读书人

哪位高手帮小弟我解释标注下这个输入子

发布时间: 2012-03-13 11:21:12 作者: rapoo

谁帮我解释标注下这个输入子程序?
其中数据段中定义了: 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 

读书人网 >汇编语言

热点推荐