从文件中读取一行并将其传递给变量,然后继续进行下一行(汇编8086)

时间:2018-07-21 22:49:52

标签: file assembly x86-16

这是我的第一篇文章,因此,如果我做错了(以任何方式),对于此事,我感到抱歉。 所以我现在面临的是,我有一个文件(name.txt),我想将第一行传递给buffer1,将第二行传递给buffer2,依此类推。

其他信息:

  1. 文件的最大行数为10。
  2. 该字符串的最大长度是27(数据)+1(美元符号)+2(CR LF)左右。
  3. 我为此示例创建了5个缓冲区
  4. 字符串的示例为“ 1washingmachine”
  5. name.txt已创建

.model small  
.stack 64
.data
filename db "name.txt",0
handler dw ?

strPrompt db 10,13,"enter:$"
strInput label byte
max db  28 ;max name is 20 , + 1 for index , 6 for time , 1 for $
act db ?
data db 28 dup ('$')

buffer1 db 30 dup ('$')
buffer2 db 30 dup ('$')
buffer3 db 30 dup ('$')
buffer4 db 30 dup ('$')
buffer5 db 30 dup ('$')
newLine db 10,13

.code   
main proc far       
;INITIALIZE DATA SEGMENT.

mov  ax,@data
mov  ds,ax

;CREATE FILE.

mov  ah, 3dh
mov  al, 2
lea  dx, filename
int  21h  

;PRESERVE FILE HANDLER RETURNED.

mov  handler, ax

;READ STRING

MOV AH, 3FH         ; read file 
MOV BX, handler    ; copy handle into BX

MOV CX,30        ; set count to read 28+2
lea dx,buffer1
INT 21H              ; AX = bytes read

MOV AH, 3FH         ; read file 
MOV BX, handler    ; copy handle into BX
MOV CX,30        ; set count to read 28+2
lea dx,buffer2
INT 21H

MOV AH, 3FH         ; read file 
MOV BX, handler    ; copy handle into BX
MOV CX,30        ; set count to read 28+2
lea dx,buffer3
INT 21H

MOV AH, 3FH         ; read file 
MOV BX, handler    ; copy handle into BX
MOV CX,30        ; set count to read 28+2
lea dx,buffer4
INT 21H
MOV AH, 3FH         ; read file 
MOV BX, handler    ; copy handle into BX
MOV CX,30        ; set count to read 28+2
lea dx,buffer5
INT 21H


mov ah,09h
lea dx,buffer1
int 21h
mov ah,09h
lea dx,buffer2
int 21h
mov ah,09h
lea dx,buffer3
int 21h
mov ah,09h
lea dx,buffer4
int 21h
mov ah,09h
lea dx,buffer5
int 21h

;input string to write in file  

mov ah,09h
lea dx,strPrompt
int 21h

mov ah,0ah
lea dx,strInput
int 21h

;WRITE STRING.

mov  ah, 40h
mov  bx, handler
mov ch,0
mov  cl, act  ;STRING LENGTH.
inc cx 
mov  dx, offset data
int  21h

lea dx,newLine
mov bx,handler
mov cx,2
mov ah,40h
int 21h
;CLOSE FILE (OR DATA WILL BE LOST).

mov  ah, 3eh
mov  bx, handler
int  21h      

;FINISH THE PROGRAM.

mov  ax,4c00h
int  21h 
main endp
end main

希望有StackOverflow的人可以帮助我,无论是指导还是解决方案都可以!

0 个答案:

没有答案