2015-04-23 87 views
0

我已经看到了AH = 47h中断(int 21h),但我无法使用它。我的问题是显示(在屏幕上打印)目录的名称。任何人都可以帮助我?你有代码吗?谢谢。获取当前目录路径或名称程序集8086

我到目前为止已经试过,这个代码,但显然它不工作

.model tiny 

.data 

handle dw ? 

filename db 26  ;MAX NUMBER OF CHARACTERS ALLOWED (25). 
     db ?   ;LENGTH (NUMBER OF CHARACTERS ENTERED BY USER). 
     db 26 dup(0) ;CHARACTERS ENTERED BY USER. END WITH CHR(13). 

msj  db 'ENTER FILE NAME HERE: $' 

text  db 'text for file' ;LENGTH = 13. 

.code 
    org 100h 

inizio: 

;DISPLAY MESSAGE. 
    mov dx, offset msj 
    mov ah, 9 
    int 21h  

;REATE FILE. 
    mov ah, 47h 
    mov dl, 03h 
    mov dx, offset filename 
    int 21h 

;CAPTURED STRING ENDS WITH CHR(13), BUT TO CREATE FILE WE NEED 
;THE FILENAME TO END WITH CHR(0), SO LET'S CHANGE IT. 
    mov si, offset filename + 1 ;NUMBER OF CHARACTERS ENTERED. 
    mov cl, [ si ] ;MOVE LENGTH TO CL. 
    mov ch, 0  ;CLEAR CH TO USE CX. 
    inc cx   ;TO REACH CHR(13). 
    add si, cx  ;NOW SI POINTS TO CHR(13). 
    mov al, 36d 
    mov [ si ], al ;REPLACE CHR(13) BY 0.    

    mov ah,9 
    lea dx,filename  ; DISPLAY NAME 
    int 21h 

;END PROGRAM. 
    mov ah, 4ch 
    int 21h 

end inizio 
+0

我只是用代码更新我的问题。 –

回答

0

下一个小程序(与EMU8086制造)做了两件事只是:把当前目录名,并显示它:

.model tiny 

.data 

directory db 50 dup('$') ;NECESSARY TO DISPLAY ON SCREEN. 

.code 

;INITIALIZE DATA SEGMENT. 
    mov ax, @data 
    mov ds, ax 

;GET CURRENT DIRECTORY NAME. 
    mov ah, 47h 
    mov dl, 0    ;DRIVE, 0 = CURRENT DRIVE. 
    mov si, offset directory ;VARIABLE TO STORE DIRECTORY NAME. 
    int 21h 

;DISPLAY DIRECTORY NAME. 
    mov ah, 9 
    mov dx, offset directory 
    int 21h 

;WAIT FOR ANY KEY.  
    mov ah, 7 
    int 21h 

;END PROGRAM. 
    mov ah, 4ch 
    int 21h 

我摆脱了“inizio”,因为我们并不需要它。