assembly - 计算排序数组中重复数字的实例,存储一个计数数组
问题描述
这部分作业的背景:
COUNTLIST:
生成一个数组计数,其中包含每个值 [10, 29] 在 randArray 中出现的次数。例如,counts[0] 应该等于10
数组中值的实例数。24
counts[14] 应该等于randArray中值的实例数
添加上下文:列表 randArray 在调用 countList 之前按升序排序。因此,具有数字:10、10、11、12、12 的数组将被复制到另一个数组中作为 2、1、2。
countList PROC
push EBP
mov EBP, ESP
mov ESI, [ESP + 20] ; randArray (200 digits w/n this array)
mov ECX, [ESP + 16] ; loop counter (ARRAYSIZE, which is 200)
dec ECX ; 200 - 1
mov EBX, [ESP + 12] ; array we want to add to (countArray)
mov EDX, [ESP + 8] ;"counter" for # of repeats for a digit
_FirstLoop:
; grab first digit of sorted array
mov EAX, [ESI]
; compare current value to next value
cmp EAX, [ESI + 4]
je _NextDigit
jne _AddCountArray
_NextDigit:
; move to next item in array
inc EDX
add ESI, 4
loop _FirstLoop
_AddCountArray:
; add total number of instances of specified digit to countArray
mov [EBX], EDX
add EBX, TYPE DWORD
loop _FirstLoop
pop EBP
RET 16
countList ENDP
也许是因为我看这个作业太久了,我错过了循环到底在哪里搞砸了?打算将值添加到其中的数组是空的。
非常感谢朝着正确方向迈出的任何一步。
解决方案
推荐阅读
- javascript - Highcharts 深入查看详细图表
- sql - 链接表值函数参数 (SQL Server)
- html - 更改 pc 和 mobil 版本菜单上的位置
- javascript - 怎么把中文号码转成英文?
- javascript - Turbolinks:离开页面时如何停止运行功能?
- laravel - Laravel 卡在电子邮件/验证上
- node.js - 在主模块中执行 http 请求是不好的做法吗?
- python - 我无法导入 python 库(numpy、matplotlib、PIL ...)以在我的 webbots 模拟中使用
- html - 如何创建一个固定的 div 和第二个可滚动的?
- c# - 使用 C# Array.ConvertAll 时,Visual Studio 2017 调试器不显示变量