Новое в сборке и очень застряло на этом:Массирование массива сборки (masm)
У меня есть заданный пользователем массив. Пользователь вводит длину и символы. Моя проблема в том, что мне нужно переместить все гласные в начало массива.
Это мой текущий прогресс
INCLUDE Irvine32.inc
.data
ProgInfo BYTE " ",0Ah
BYTE "------------------------------------------------------",0Ah
BYTE "This program will reorder an array of characters",0Ah
BYTE "all vowels will be moved to the beginning of the array",0Ah
BYTE "------------------------------------------------------",0Ah
BYTE " ",0
Prompt1 BYTE "Please enter the number of characters to be inputed: ",0
NChars DWORD ? ;Unitialized for user input
myarray BYTE ?
Prompt2 BYTE "Please enter a string of characters: ",0
Reordered BYTE " ",0Ah
BYTE "The reordered array is: ",0
.code
main PROC
mov edx, OFFSET ProgInfo
call WriteString
mov edx, OFFSET Prompt1 ;ask for total characters
call WriteString
call ReadInt ;read as integer
mov Nchar, eax
mov edx, OFFSET Prompt2 ;ask for the string of characters
call WriteString
mov edx, OFFSET myarray
mov ecx, NChars
call ReadString
exit
main ENDP
END main
рассматривает возможность использования что-то похожее на это, чтобы проверить на гласные в цикле, как он проходит через массив
VowelCheck:
cmp myarray[edi],'a'
je isVowel
cmp myarray[edi],'A'
je isVowel
cmp myarray[edi],'e'
je isVowel
cmp myarray[edi],'E'
je isVowel
cmp myarray[edi],'i'
je isVowel
cmp myarray[edi],'I'
je isVowel
cmp myarray[edi],'o'
je isVowel
cmp myarray[edi],'O'
je isVowel
cmp myarray[edi],'u'
je isVowel
cmp myarray[edi],'U'
je isVowel
У вас может быть строка со всеми гласными и использовать 'repne scasb', чтобы увидеть, можно ли найти текущий символ в этой строке. – Michael
Я искал учебник класса для 'repne scasb', и я вижу, как это было бы лучше, однако мы еще не достигли этого момента. –
@ Майкл: лучший способ проверить гласные - [использовать символ в качестве индекса в 32-битное мгновенное растровое изображение] (http://stackoverflow.com/a/36122634/224132), после изменения диапазона ASCII-кодирования к индексу на основе нуля в алфавит. Для этой проблемы вам не нужно сортировать, просто ведите себя как сортировка вставки. Поддержание гласного указателя до конца гласных в передней части массива и другого указателя, который сканирует весь массив. Когда второй указатель найдет гласную, сделайте своп и переместите указатель на гласную. –