私は、文字列の配列をバブルソートするプログラムをアセンブリで作成しています。長さゼロの文字列が配列を終了します。 DWORD配列を宣言することでこれにアプローチしました。ここでは、バイトサイズの文字列var。が格納されます。私の主な問題はバブルソート自体ではなく、配列に格納された文字列が完全に出力されていないことです。DWORDSの配列に格納された文字列を出力する
うまくいけば、それを明確にするために、ここに私のコードは次のとおりです。
.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
見られるように、何のバブルソートは「popltDone」以下
ラインをやっていない、まだ...している私だけです文字列が配列に引き継がれているかどうか確認するのが面倒です。しかし、画面にプリントアウトすると、ちょうど4文字しか表示されませんでした!文字列全体が印刷されていないだけで、現在私は狂っている。誰かが私が間違っていることを教えてもらえますか?
これを読んでいる人に感謝します。
この宿題はありますか?表示された出力を追加できますか? – wallyk
画面には「Delt」、「Abs」、「Bice」という出力があります。常に4文字...なぜ、配列に文字列を格納するために間違った命令を使用している必要がありますか分からない。 –