Like in c++ we use ofstream to write text to a text file and use maybe notepad, textpad to open and view data
I wanted an example with assembly, what must I do? Or positively, help with a simple source code that can get text from dos box command line and save in a text (.txt) file.
Happy if am helped.
I don't use DOS Box, but I think to create, write, and read text files you should be able to use the DOS file functions. Unless you have some other DOS function reference, you are probably going to need Ralf Brown's Interrupt List, an HTML version is here (http://ctyme.com/rbrown.htm) and a downloadable version here (http://www.cs.cmu.edu/~ralf/files.html). Start with Interrupt 21h function 3Ch, 3Dh, 3Eh, 3Fh, and 40h (Create, Open, Close, Read, and Write).
Try this
1. WIN32
include \masm32\include\masm32rt.inc
.DATA
s_ db 255 dup(0)
.CODE
SaveStr proc lpName:DWORD,Str_:dword
LOCAL hFile :DWORD
LOCAL bytewr :DWORD
LOCAL buff [255]:dword
INVOKE RtlZeroMemory, ADDR buff, 255
Invoke lstrcpy, Addr buff, Str_
;CREATE_ALWAYS
;OPEN_EXISTING
invoke CreateFile,lpName,GENERIC_WRITE,NULL,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL
mov hFile, eax
invoke WriteFile,hFile,ADDR buff,255,ADDR bytewr,NULL
invoke CloseHandle,hFile
ret
SaveStr endp
start:
invoke StdIn,ADDR s_,255
invoke SaveStr,chr$("Abc.TXT"),addr s_
invoke ExitProcess,eax
end start
2. DOS
DOSSEG
.MODEL LARGE
.STACK 200h
.DATA
filename db 14 dup (0)
filehandle dw 0
bufferLen db 25
buffer db 25 dup (0)
.CODE
ASSUME CS:@CODE, DS:@DATA
START:
mov AX,@DATA
mov ES,AX ; Point ES to the data segment for now
;------------------read filename ( Commandline )
mov ah,62h
int 21h ; Get the PSP
mov ds,bx
mov bx,81h ; Starting at the first printable character
add bl, byte ptr [ds:80h] ; Get address of last character
mov cl, byte ptr [ds:80h] ; Also put it in CL
inc cl
mov ds:[bx], word ptr 0 ; Null terminate the argument
mov si,81h
mov di,0 ; Copy the first argument into the data segment
rep movsb ; into the filename variable
mov AX,@DATA
mov DS,AX ; Point DS to the data segment, like normal
;------------------read string
MOV AH, 0AH
MOV DX, offset buffer
INT 21H
;------------------fileCreate
mov ah,3Ch ; Creat DOS service (yes, it is called 'creat')
mov cx,0 ; File attributes
mov dx,offset filename ; Put ADDRESS of filename in DX
int 21h
mov [filehandle],ax ; File handle is returned in AX, put in a variable
;------------------fileWrite
mov ah, 40h
mov bx, [filehandle]
mov dx, offset buffer ; ADDRESS of string to be written
xor cx, cx ; If I don't do this, things blow up in my face
mov cl, [bufferLen] ; VALUE of length of string to be written
int 21h
;------------------fileClose
mov ah,3Eh
mov bx,[filehandle]
int 21h
;------------------ exit
mov AX,4C00h
int 21h
END START