Ich schreibe ein Programm in Assembly, das ein Array von Strings sprudeln wird. Eine Null-Länge-Zeichenfolge beendet das Array. Ich ging darauf zu, indem ich ein DWORD-Array deklarierte, in dem die String-Var., Die eine Byte-Größe ist, gespeichert werden soll. Mein Hauptproblem ist nicht die Bubble-Sortierung selbst, sondern dass die im Array gespeicherten Strings nicht vollständig ausgegeben wurden.Drucken eines in einem Array von DWORDS gespeicherten Strings
hoffentlich Um deutlich zu machen, hier ist mein Code:
.586
.MODEL FLAT
INCLUDE io.h ; header file for input/output
space equ 0
cr equ 0dh
.STACK 4096
.DATA
myStrings byte "Delts",0
byte "Abs",0
byte "Biceps",0
byte 0
labelStrOut byte "Output is: ", 0
stringOut dword 11 dup (?)
stringNum dword 0
stringArray dword 20 dup (?)
.CODE
_MainProc PROC
mov edi, offset myStrings
mov esi, offset stringArray
popltLp:
cmp BYTE PTR [edi], 0
jz popltDone
mov ebx, [edi]
mov DWORD PTR [esi], ebx
add esi, 4
inc stringNum
xor ecx, ecx
not ecx
xor al, al
repne scasb
jmp popltLp
popltDone:
xor edx, edx
lea esi, stringArray
mov ebx, DWORD PTR [esi]
mov stringOut, ebx
output labelStrOut, stringOut
add esi, 4
mov ebx, DWORD PTR [esi]
mov stringOut, ebx
output labelStrOut, stringOut
add esi, 4
mov ebx, DWORD PTR [esi]
mov stringOut, ebx
output labelStrOut, stringOut
outptDone:
mov eax, 0 ; exit with return code 0
ret
_MainProc ENDP
END ; end of source code
Wie man sehen kann, Sortierung keine Blase noch ...
Die Linien unter ‚popltDone‘ getan wird, ist mir einfach herumspielen, um zu sehen, ob die Strings in das Array übernommen wurden. Beim Ausdruck auf dem Bildschirm erschienen jedoch nur 4 Zeichen! Die gesamte Saitenlinie wurde gerade nicht ausgedruckt, was mich derzeit in den Wahnsinn treibt. Kann mir bitte jemand sagen, was ich falsch mache?
Danke an alle, die sich die Zeit nehmen, dies zu lesen.
Ist das Hausaufgaben? Können Sie die Ausgabe hinzufügen, die Sie sehen? – wallyk
Auf dem Bildschirm ist die Ausgabe ziemlich viel: "Delt", "Abs" bzw. "Bice". Immer 4 Zeichen ... weiß nicht warum, muss die falschen Anweisungen verwenden, um Strings in Array zu speichern. –