Assembly 从键盘读取并写入文件(emu8086)

Assembly 从键盘读取并写入文件(emu8086),assembly,emu8086,Assembly,Emu8086,我需要一些帮助来解决这个问题。我必须从键盘上读取一些内容,然后将其写入.txt文件 到目前为止,我得到的代码只是将一些内容写入.txt文件: org 100h jmp start dir db "c:\MyFolder", 0 file db "c:\MyFolder\MyFile.txt", 0 text db "Some text" text_size = $ - offset text handle dw ? start: mov ax, cs mov dx, ax mov es

我需要一些帮助来解决这个问题。我必须从键盘上读取一些内容,然后将其写入.txt文件

到目前为止,我得到的代码只是将一些内容写入.txt文件:

org  100h 

jmp start

dir db "c:\MyFolder", 0
file db "c:\MyFolder\MyFile.txt", 0
text db "Some text"
text_size = $ - offset text
handle dw ?

start:
mov ax, cs
mov dx, ax
mov es, ax


   mov dx, offset dir
   mov ah, 39h
   int 21h


mov ah, 3ch
mov cx, 0
mov dx, offset file
int 21h
jc err
mov handle, ax

; write to file:
mov ah, 40h
mov bx, handle
mov dx, offset text
mov cx, text_size
int 21h

mov ah, 3eh
mov bx, handle
int 21h
err:
nop


    mov ax, 4c00h ; exit to operating system.
    int 21h    
ends

end start ; set entry point and stop the assembler.


这段代码从键盘读入缓冲区:

org 100h
        mov dx, offset buffer
        mov ah, 0ah
        int 21h
        jmp print
        buffer db 10,?, 10 dup(' ')
        print:      

        mov dh, 1
    mov dl, 0
    mov bh, 0
    mov ah, 2
    int 10h  

        xor bx, bx
        mov bl, buffer[1]
        mov buffer[bx+2], '$'
        mov dx, offset buffer + 2
        mov ah, 9
        int 21h
        ret
两个简单的小程序总结了我的问题,但我不知道如何将它们结合起来。
我基本上应该尝试将缓冲区写入.txt文件,但我不知道如何操作。

它的工作方式与
相同;写入文件:
在第一个示例中。您需要句柄、长度(在缓冲区[1]中调用int 21/9之后)、指向文本(=缓冲区+2)的指针,然后调用21/40h.Yes,但它也会写入一些随机字符,并从.txt文件的第二行开始。问题出在哪里?输入后,buffer[1]是插入字符串的字节长度write'希望大小为一个字(在CX中),因此,如果将缓冲区[1]读取到CL,请确保CH为0
XOR CX、CX
MOV CL、缓冲区[1]
应完成此项工作。在编写文件时(使用调试器),请查看CX bevor,然后将其与文件大小进行比较