如何在阵列中存储BYTE并输出BYTE

时间:2016-11-14 19:31:12

标签: arrays assembly x86

所以我有一个txt文件。我想阅读这些文字并将它们存储在一个数组中。然后我想将数组内容输出到屏幕。当我这样做时,我只是在数组的第一个索引中得到单词的第一个字母。我正在努力解决这个问题,我真的可以使用一些帮助。

所以这是我的txt文件:

observation
worshipping
description
nondescript
eliminating
survivalist
destructive
infestation
surrounding
persecution
interesting
explanation
recognition
programming
personality
hospitality
distinguish
devastation
nightvision
engineering
x          

当程序点击x时,请停止阅读。

.DATA:

cr      EQU     0dh     ; carriage return character
Lf      EQU     0ah     ; line feed
MAXNBRS EQU     255
LEN     EQU     13

.STACK  4096            ; reserve 4096-byte stack

.DATA                   ; reserve storage for data
inputStrings    DWORD MAXNBRS DUP (?)
count       WORD    ?
inputStr    BYTE    LEN DUP(0),0
prompt      BYTE    "Enter a string: ", 0
prompt2     BYTE    "The number of strings entered is", 0
comp        BYTE    "x          ",0

然后我从txt文件中读取循环:

readInStrings MACRO array
    lea ebx, array
    mov al, comp
    mov cx, 0
    START_LOOP:
        output prompt       ;enter a string

        input inputStr, 13  ;read in a line

        inc cx              ;increase count

        output inputStr     ;output the string
        output carriage     ;newline

        cmp inputStr, al    ;if string == x
        je END_LOOP         ;end loop

        mov dl, inputStr    ;store string into byte register
        mov [ebx], dl       ;move string into array
        add ebx, 2          ;increase index of array. I dont know how much 
        jmp START_LOOP      ;jmp to begin

    END_LOOP:
        dec cx              ;since we dont want 'x' to be part of out length, dec cx
        itoa count, cx
        output carriage
        output prompt2
        output count
        atoi count
        mov count, ax
        output carriage
        output carriage
ENDM

所以我是:

  • 输出提示,然后输入13的inputStr。

  • 因为我们读了一个新单词而增加了计数。

  • 比较看看是否是'x'

  • 将单词移入BYTE寄存器。

  • 将单词移入数组

  • 将数组增加到下一个索引(非常确定这是错误的)

现在当我输出数组的第一个索引时,我的输出只是'o',它应该是'观察'

谁能看到我做错了什么?

0 个答案:

没有答案