Assembly 从键盘读取并写入文件(emu8086)
我需要一些帮助来解决这个问题。我必须从键盘上读取一些内容,然后将其写入.txt文件 到目前为止,我得到的代码只是将一些内容写入.txt文件: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
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为0XOR CX、CX
和MOV CL、缓冲区[1]
应完成此项工作。在编写文件时(使用调试器),请查看CX bevor,然后将其与文件大小进行比较