나는 문자열 배열 배열을 버블 정렬 할 어셈블리 프로그램을 작성하고 있습니다. 길이가 0 인 문자열은 배열을 종료합니다. DWORD 배열을 선언하여이 접근법에 접근했습니다.이 배열에서는 바이트 크기 인 문자열 var가 저장됩니다. 내 주요 문제는 버블 정렬 자체가 아니지만 배열에 저장된 문자열은 완전히 출력되지 않았습니다.DWORD의 배열에 저장된 문자열 인쇄
가 이 는, 정렬이 아직 진행되고 더 버블 ...'popltDone'아래 라인이 날 볼 수있는 바와 같이 없습니다
.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
:
희망 여기 내 코드, 그것은 명확하게하려면 문자열이 배열로 옮겨 졌는지 확인하기 위해 주위를 어지럽 힙니다. 그러나 화면에 인쇄 할 때 단지 4 자만 나타납니다! 전체 문자열 줄이 인쇄되지 않고 있었기 때문에 현재 나를 미치게 만듭니다. 누군가 내가 잘못하고있는 것을 말해 줄 수 있습니까?
누구나 시간을내어 이것을 읽어 주셔서 감사합니다.
이 숙제가 있습니까? 출력을 추가 할 수 있습니까? – wallyk
화면에는 "Delt", "Abs"및 "Bice"라는 출력이 있습니다. 항상 4자를 ... 왜 배열을 문자열을 저장하는 잘못된 지침을 사용해야합니다. –