arrays - 使用整数索引访问字符串数组的特定元素
问题描述
我想使用随机生成的数字访问数组的特定元素。
例如,
我想生成随机数 0-9。生成数字后(在本例中,我们假设随机数生成为 4),我想访问 array5 并打印屏幕。
我怎么可能成功。
字符串数组初始化代码如下
我将我的代码编辑为相同大小的字符串,如下所示。每个字符串有 8 个字符。
如何生成随机数?
org 100h
array0: db "abstract", 0Dh,0Ah, 24h
array1: db "academic", 0Dh,0Ah, 24h
array2: db "accurate", 0Dh,0Ah, 24h
array3: db "bacteria", 0Dh,0Ah, 24h
array4: db "attorney", 0Dh,0Ah, 24h
array5: db "equation", 0Dh,0Ah, 24h
array6: db "umbrella", 0Dh,0Ah, 24h
array7: db "overcome", 0Dh,0Ah, 24h
array8: db "universe", 0Dh,0Ah, 24h
array9: db "analysis", 0Dh,0Ah, 24h
解决方案
那不是数组;元素的长度不同。
您需要填充到某个固定的最大大小,以便您可以缩放像 C 这样的索引
struct {char c[16];} arr[10];
来制作一个固定大小的字符串缓冲区数组。
或者制作一个单独的指针数组,例如arr: dw array0, array1, ...
在程序集中初始化字符串数组显示了两种方式的示例。对于您的情况,填充您可能align 16
在每个条目之前使用的条目,这将在该位置发出填充字节,直到当前地址是 16 的倍数。
(通常将索引缩放 16shl di, 4
或任何寄存器,但原始 8086 没有立即移位。所以mov cl,4
/shl di, cl
如果您需要与古代硬件/模拟器兼容。)
要索引您当前拥有的内容(字符串的平面串联),您可能必须线性搜索第 424h
个字节。第 5 个字符串在该字节之后开始。
此外,如果您实际上将此数据放在.com
可执行文件(org 100h)的文件顶部,则字符串数据将作为代码执行。不要那样做;把你的数据放在最后。
推荐阅读
- rest - 为 Azure Rest webapi 应用程序启用 CORS
- django - 拆分此列表的所有三个属性
- php - 如何将 AmazonAWS 网站 (Laravel) 备份到 AmazonAWS S3 存储桶?
- javascript - 一个按钮如何用javascript垂直滚动?
- python - Python PyQT5在mainWindow中打开小部件
- python - python日志文件不写
- python - 如果存在则写入文件,如果不存在则在 python 中创建文件
- clickhouse - 如何在最终查询中添加包含空数据的行?
- jenkins - Jenkins 插件 - 如何获取当前正在执行的工作?
- php - 如何使用两个查询结果只显示一次数据