массив у меня db, а другой dw, кидать в разные регистры надо же элементы, исходя от размера элемента..
Если есть исходный код - да. Без исходного кода - нет.
Если вопрос про исходник - то фасм в принципе не даст так просто работать с неподходящим размером. Если например в массиве элемент описан как db - фасм не даст сделать типа mov ax,[name_db].
А вот кстати интересный вопрос, как это во время компиляции узнать. Ну то есть отличить x dd ? от x dw ? несложно. Но есть ведь и другие размеры.
Только насильно.
неважно как, главное результат 😂
Это смотря что считать насильным. Я вот всегда переменные обьявляю через :, для меня переменная в ассемблере это именно то, что через : обьявляется, так всегда на всех скриншотах было и будет. И вот ко всем таким переменным я могу обращаться так, как захочу.
struct Z A db ? rb 1 B dw ? C dw ? D dq ? ends massiv Z mov ax, [massiv.A] processed: mov ax,[massiv.A] error: operand sizes do not match.
struct Z A db ? rb 1 B dw ? C dw ? D dq ? ends massiv: Z mov ax, [massiv.A]
Ну, с : для массивов наверно не работает - у меня ошибка error: undefined symbol 'massiv.A'.
Потому что mov ax, word[massiv.A]
Неа. Типа-то нет. mov ax, word[massiv+Z.a]
Это если без :.
Обсуждают сегодня