Я работал над этой программой, где мне нужно ввести строку, а затем отобразить распределение символов в этой строке.Поиск находок в строке в сборке x86
Например:
если вход «minecode» вывод должен быть
С - 1
О - 1
Д - 1
Е - 2
I - 1
M - 1
N - 1
Вот что я пытался сделать, но я действительно не знаю, как пройти цикл и проверить аналогичный символ, а затем увеличить счетчик. Ассемблером является MASM 615, работающий на 32-битной машине.
.686
.MODEL flat, stdcall
.STACK
INCLUDE Irvine32.inc
.DATA
msg0 BYTE "Enter a string of characters: ",0
msg1 BYTE "Character Distribution: ",0
MainArray dword 10000 dup (?)
UniqueChar dword 10000 dup (?)
CharCount dword 10000 dup (?)
.CODE
MAIN PROC
lea edx, msg0
call WriteString
call dumpregs ; 1
call ReadString
mov MainArray, eax
call dumpregs ; 2
mov MainArray, ebx
call dumpregs ; 3
call CRLF
lea edx, msg1
call WriteString
call CharDist ; Calls the procedure
call dumpregs ; 5
exit
MAIN ENDP
CharDist PROC
mov ecx, lengthof MainArray
mov esi, OFFSET MainArray
L1:
; what to do here??
Loop L1:
CharDist ENDP
END MAIN
'Loop L1:' является синтаксической ошибкой. Вы используете только конечный ':', когда вы определяете метку, а не когда ссылаетесь на нее из другого места. (И не используйте LOOP в первую очередь, [он медленный и не делает ничего, что вы не можете сделать так же легко с более распространенными инструкциями] (http://stackoverflow.com/questions/35742570/why-is). –