专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > 汇编语言

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

发布时间:2010-06-14 15:48:52 文章来源:www.iduyao.cn 采编人员:星星草
谁帮我解释标注下这个输入子程序?
其中数据段中定义了: 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:DATA
DATA 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 ENDS

CODE 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 21H

INPUT 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
  RET
INPUT 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 
    RET
ERRMES:
    MOV DX,OFFSET ERR
    MOV AH,9
    INT 21H
    RET
CREATEFILE_ ENDP 

CODE ENDS
END START
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: