首页 > 解决方案 > 如何创建由程序集中的寄存器定义的大小的初始化数组?

问题描述

我目前正在尝试在程序集中初始化一个数组,其大小由寄存器中的数字定义。我也在使用 NASM,并为 32 位编译。

我已经尝试使用时间来定义多个字节,但它不起作用,因为时间需要一个常量,而不是一个寄存器。

mov bl, bh
mul bl, 512
sectors times bl db 0

bh 是我正在使用的函数的输入寄存器。

组装时,NASM 输出错误:

错误:提供给 TIMES 的非常量参数

有谁知道我如何使用寄存器作为大小创建一个 0 数组?

编辑:我决定将数据直接写入内存,而不是用时间初始化它。

编辑 2:这是我写的驱动程序:https ://pastebin.com/JKdUaeH5

标签: arraysassemblyx86nasm

解决方案


推荐阅读