我一直在处理这个程序,我必须输入一个字符串,然后在该字符串中显示字符分布。在程序集x86中查找字符串中的出现次数
例如:
如果输入是“minecode”输出应该是
Ç - 1
-O - 1
d - 1
ë - 2
I - 1
M - 1
N - 1
这是我试图做的,但我真的不知道如何遍历循环并检查相似的字符,然后增加计数。汇编程序是在32位机器上运行的MASM 615。
.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
'循环L1:'是语法错误。您只在定义标签时使用尾部的':',而不是从别处引用它。 (并且首先不要使用LOOP,[它很慢并且没有做任何事情,只要用更常见的指令就可以轻松完成](http://stackoverflow.com/questions/35742570/why-is ) - –