![]() |
|
![]() ![]() ![]() |
|
Сisa |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 179 Регистрация: 18.1.2013 Репутация: нет Всего: нет |
В высокоуровневых языках переменная должна быть сначала определена, и только потом ею можно оперировать.
В АСМе наоборот? Или не играет роли в какой части программы определена переменная? А если переменная чуть дальше в программе меняет свое значение, и даже несколько раз, то какое тогда используется значение и каков порядок присвоения значений переменным? Вопроса бы не возникло, если бы не: Рудольф Марек (стр.99) пример:
(массив array db 1,2,3,4,5,6,7,8,0 инициализирован после того как с ним уже должны быть произведены какие то действия) Нельзя считать это опечаткой, потому что аналогичные примеры встречаются и в других текстах. |
|||
|
||||
tzirechnoy |
|
||||||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1173 Регистрация: 30.1.2009 Репутация: 1 Всего: 16 |
А мужыки-то не знают ©
Не то, чтобы наоборот. В общем -- не так. Обычно.
Кажэтся, мне вспоминаются какие-то ассэмблеры, которые по определению переменных (ну, т.е. там db, dw, dl) решали, скольки битная будет операцыя, если есть выбор. Можэт, меня и глючит. В любом случае -- пишы суффиксы имён команд для определения битности операцый и будет всё равно. А, да, ещё вспомнил -- в некоторых случаях, ну, для всяких call/jump, ассэмблер мог использовать short если адрес ему известен и находится рядом, и near/far (в зависимости от опцый компиляцыи) -- если нет. То есть некоторые мелкие отличия имеются. [quote]А если переменная чуть дальше в программе меняет свое значение, и даже несколько раз, то какое тогда используется значение и каков порядок присвоения значений переменным?[quote] Переменная меняет своё значение когда ей что-то присваивают (пишут в неё). В ассэмблере -- это вообще область памяти (DRAM), несколлько ячеек, с которыми ты что хочешь -- то и делаешь. Потому в переменной будет последнее записанное твоей программой значение. Впрочем, возможно, ты спрашываешь об иницыализацыи переменных (как у тебя в примере). Иницыализацыя переменных описывается в объявлении переменных, а переменная без флага extern можэт быть объявлена только один раз -- при попытке её повторно объявить линковщик выругается. А с флагом extern её нельзя иницыализировать при компиляцыи. |
||||||
|
|||||||
Сisa |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 179 Регистрация: 18.1.2013 Репутация: нет Всего: нет |
Это я не знаю ассэмблер :(
Как бы так сказать, ну чтобы Вы, tzirechnoy, поняли - подозреваю что в Вашем сообщении есть ответ на мой вопрос, но поскольку я воистину только начинающий изучать asm, то естественно не все понял, или попросту не увидел ответ на мой вопрос. Может и меня глючит. near/far - сдается мне невпопад упомянуто. Хотя нет, не все так сумрачно и кажется начинаю что то улавливать в Вашем сообщении - переменная без флага extern может быть объявлена только один раз. Так. Но опять же, объявлена переменная может только раз, но сам то вопрос остается: Почему в высокоуровневых языках переменная должна быть сначала определена, и только потом ею можно оперировать, а в АСМе не так? Понятно, компиляция и все такое, но все же ... Обычно. Не так. А как, и вот еще - а зачем по другому? tzirechnoy спасибо за ответ. Придется таки мне читать дальше мануалы, пока же одни вопросы. И дались Вам эти мужыки ! Еще раз простите если зацепил в прошлый раз. В.И. Даль: «Быть злопамятным, предаваться злопамятству — долго помнить зло или обиду, даже и ненамеренную, не забывать и не прощать, быть мстительным». Глубинная причина злопамятства – претензии ложного эго относительно слов и действий других людей, то есть гордыня. Когда, по мнению эго, другой человек ведет себя не так, как оно хотело бы, возникает повод для гнева, обиды, злобы и ненависти. Аюрведа: раздражительность - это путь к болезни. http://trubitsyn.com/node/67 п.51 Это сообщение отредактировал(а) Сisa - 8.8.2014, 18:37 |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Asm для начинающих" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Asm для начинающих | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |