2013-11-24 4 views
0

어떻게해야하는지 전체적으로 알 수 없습니다. 내 프로그램에는 행 번호 인 나머지 두 개의 매개 변수가 있으며 나머지는 텍스트 파일입니다 (아무리 많든간에). 의 Sample.txt 및 sample1.txt의 2 행어셈블리 x86 (TASM). 변경 사항이 거의없는 동일한 파일을 덮어 쓰려면 어떻게합니까?

의 Sample.txt이 텍스트가 포함 된 4 행으로 변경 :

hello my name is 
i like dogs 
the sun is shining 
fast cars are awesome 

에는 sample1의이

program.exe 2 4 sample.txt sample1.txt 

설명을 가정 해 봅시다. txt에는 다음 텍스트가 포함됩니다.

Stackoverflow is awesome 
The treat is yours 
I like turtles 
The train is fast 
실행 후

, 우리의 TXT 파일은 다음과 같이 :

의 Sample.txt

hello my name is 
fast cars are awesome 
the sun is shining 
fast cars are awesome 

sample1.txt

Stackoverflow is awesome 
The train is fast 
I like turtles 
The train is fast 

질문 : 나는를 열고 어떻게 파일을 만들고 변경 한 다음 저장하십시오. 이 상황에서 버퍼를 사용하는 방법은 무엇입니까?

나는 첫 번째 매개 변수의 값에 도달하면 버퍼에 해당 라인을 읽기 시작할 카운터를 만들어야한다고 생각합니다.

그런 다음 2 차 계수기의 값에 도달하면 해당 줄을 버퍼에 읽기 시작합니다.

동일한 파일을 어떻게 사용합니까? 나는 모른다. 나는 2 개의 버퍼를 가지고 있기 때문에. 다른 라인은 어떻게됩니까? 그들은 사라질 것입니까?

미안하지만 모든 것을 당신이 이해하는 방식으로 설명 할 수는 없습니다.

답변

2

DOS로 파일을 열고 읽는 방법을 보여주기 때문에 시작해야합니다. 물론 논리를 추가해야합니다. 두 개 이상의 cahracter를 버퍼로 읽을 수 있지만 하나씩 읽는 것은 파일을 끝내거나 줄의 끝까지 읽을 수 있기 때문에 줄을 처리하는 것이 더 간단합니다. 네가해야 할 일은 다해라.

입력과 동일한 파일을 수정하려면 파일을 메모리에서 완전히 읽은 다음 처음부터 다시 작성해야한다는 것을 명심해야합니다. 파일이 메모리에 완전히 들어갈 수있을 정도로 작 으면이 작업이 가능합니다. 임의의 큰 파일을 처리해야하는 경우 임시 파일을 열고 필요한 파일을 작성한 다음 원래 파일로 이름을 바꿔야합니다. 오류가 발생하면 적어도 원본 파일은 삭제되지 않습니다.

그리고 당신은 정말 DOS에서 int 목록을 찾아야합니다. 많은 문서가 있으므로 전화 할 내용을 알 수 있습니다.

.model small 
.data 
    Filename db 'test.txt',0 
    FHndl dw ? 
    Buffer db 80h dup(?) 

.stack 100h 
.code 
Program: 

    ; Setup the data segment 
    mov ax,@data 
    mov ds,ax 

    mov ah, 3dh   ; Open the file 
    mov al, 0   ; Open for reading 
    lea dx, Filename 
    int 21h 
    ; jc BadOpen 
    mov FHndl, ax  ; Remeber file handle 

ReadByte: 
    mov ah,3fh   ; Read data from the file 
    lea dx, Buffer  ; Address of data buffer 
    mov cx, 1   ; Read one (or more bytes into the buffer) 
    mov bx, FHndl 
    int 21h 
    ; jc ReadError 

    cmp ax, cx   ; Did we successfully read all characters? 
    jne EOF 

    ; ... here goes your code to process the characters. 
    jmp ReadByte  ; Read next byte 

EOF: 
    mov bx, FHndl 
    mov ah, 3eh   ; Close file 
    int 21h 
    ;jc CloseError 

    retn 

End Program 
+0

Devolus, 다른 질문을 할 수 있습니까? – tomJO

+0

나는 그렇게 생각할 것이다. :) – Devolus

관련 문제