8086程序集:如何仅将几个字符从文件缓冲区复制到变量

时间:2019-01-04 20:38:51

标签: file assembly x86-16 tasm

我有一个简单的.txt文件,其内容如下所示: aaa bbb ccc (...)

此文件中的每个“单词”都是一种单独的指令。 我想一遍又一遍地读这些单词,将每个单词写到dw“ temp”变量(例如temp dw'aaa')中,以便首先使用它,然后再读另一个单词并以类似方式使用它。

我正在使用DOSBox,TASM和intel 8086程序集。我也已经尝试通过这些论坛自己弄清楚了,但是找不到我能理解或使用的解决方案。

我已经准备好一个函数“ readFile”,正在打开文件,它是有效的,并且已经被程序看到,因此可以正常工作。

    readFile:
    mov ah,3Fh          
    mov cx,3     ; to read 3 bytes (letters) at single run
    mov dx,offset buffer
    mov bx,handler     ; handle for file
    int 21h 

    cmp ax,0
    je endOfFile

    mov ax,[buffer] <---
    mov [temp],ax   <--- these lines obviously won't work

    CALL execute

    jmp readFile

...

handler dw 0
buffer dw 255 DUP(0)
temp dw ?  <--- this should be 'aaa', then 'bbb', then 'ccc' and so on

现在的问题是,如何将文件中的第一个单词“ aaa”“捕捉”到临时变量,然后以所需的方式使用它,经过空间,然后将第二个单词“ bbb”“捕捉”为临时(等等)?

当前的代码无法正常工作,例如,尽管已编译缓冲区,但未正确保存缓冲区。

我有一种感觉,我在这里缺少一些基本的东西,但是我无法弄清楚。预先感谢!


编辑:或者,我认为可以放弃使用此“ temp”变量,而以某种方式直接在代码中使用该“ aaa”,但是我不知道如何。我忘了提及,文件中的“ aaa”对应于我当前需要加载的常量名称,例如。 aaa equ 0111。

所有问题是,我只想使用文件中的单词(比如说这个aaa单词),然后直接将其放在代码中使用,例如

mov ax,aaa <-这将是一个名为“ aaa”的常量,它已加载到ax中,并且该常量的名称是文件中的“ aaa”字。

我希望很清楚这些文件中单独单词的目的是什么。

0 个答案:

没有答案