Можно ли в ассемблере производить математические операции непосредственно с переменными?
Возможны операции регистр-память или память-регистр, но не память-память. Если нужно обработать 2 переменные в памяти, то одну из них перемещают в регистр.
Advanced member
Статус: Не в сети Регистрация: 10.04.2003 Откуда: Москва
Если числа 16-ричные (ы! 16-битные), то почему ты пишешь "byte ptr"?
C переменными можно делать действия. Нельзя делать операции переменная<>переменная. Это невозможно. Возможны только операции переменная<>константа и переменная<>регистр Примеры: add word ptr m4,2 ; m4 + 2 inc word ptr m4 ; m4 + 1 sub ax, m4 ; регистр ax - m4 sub m4, ax ; m4 - регистр ax cmp ax,m4 ; сравнить регистр ax и m4
Junior
Статус: Не в сети Регистрация: 15.10.2009 Откуда: от туда
serj
Цитата:
C переменными можно делать действия. Нельзя делать операции переменная<>переменная. Это невозможно. Возможны только операции переменная<>константа и переменная<>регистр
Спасибо, вот именно это я и хотел услышать. maco На ваш пост ниже Вообщем я все понял, прочитав касательно этого повода в других источниках. То что я не читал предыдущие посты эт так (буду я там груду постов перечитывать, причем с такими проблемами к которым я пойду после весьма длительного изучения курса по ассемблеру) Вам и сержу спасибо. но обьясняете вы непонятно
Последний раз редактировалось A1exander 23.12.2009 15:04, всего редактировалось 1 раз.
Эту элементарщину я еще на первой лекции усвоил... И вот еще что в добавление к моему предыдущему посту Я так понимаю понятие "переменная" и "константа" = суть одно и тоже...
Advanced member
Статус: Не в сети Регистрация: 10.04.2003 Откуда: Москва
maco, кажется в Фортране нет констант в явном виде, они лежат как определенные переменные. Говорят, один раз случайно написали что-то типа 33=96 и спутник 'улетел'. (при последующем вызове константы 33 там уже был что-то совсем другое)
serj Были в Фортране константы, которые являлись предопределенными статическими переменными, но это не распространялось на все константы. И правильная работа с такими конструкциями вроде бы специально оговаривалась. Хотя при работе программы из памяти, которая может быть модифицирована в процессе выполнения программы, любая константа является в общем-то переменной .
Junior
Статус: Не в сети Регистрация: 15.10.2009 Откуда: от туда
maco
maco писал(а):
[off]Нда, тяжелый случай. Поставлю тяжелую задачу - дайте определение понятиям "переменная" и "константа"
Бред какой-то в чем разница то? если переменная не меняется в течение всей программы - значит она константа, если константа принимает другое значение в течение программы - то она переменная. И.... суть одно и тоже , в песок))))) поправьте если ошибаюсь
Последний раз редактировалось A1exander 23.12.2009 16:13, всего редактировалось 1 раз.
A1exander Переменная - это величина, которая может измениться при выполнении программы. Константа - это величина, которая не может измениться при выполнении программы. (вариант самомодифицирующегося кода не рассматривается)
Junior
Статус: Не в сети Регистрация: 15.10.2009 Откуда: от туда
maco Спасибо конечно за определения (так сказать память освежили, класс эдок пятый школьный программы) Но я же вас спрашивал не про определения, мне важно понять суть понять структуру. Если ассемблере манипуляции с константой совершенно идентичны манипуляциям с переменной и любые операции с ними выполняются одинаково. То для меня переменная и константа это одно и тоже. я же пришел сюда за помощью и советом а не за насмешками и зубрением определений.
Advanced member
Статус: Не в сети Регистрация: 10.04.2003 Откуда: Москва
SwiPTorrent, на asm не пишут программы для х64, для этого есть только мерзкий FASM64. От M$ нет ничего, masm64 не существует в природе. Вывод сделаешь сам.
Добавлено спустя 7 минут 26 секунд: A1exander, внимательно прочитай и попробуй понять. Пока этого не сделаешь, будешь и дальше задавать глупые вопросы. Переменные - это ячейки в памяти, область данных. Константы - это часть кода программы. Область данных и область программы - это РАЗНОЕ и адресуется через РАЗНЫЕ сегменты(сегментные регистры). С точки зрения процессора, это две совершенно разные структуры. Код программы - это, что исполняется. Хоть она и лежит в памяти, ее трогать нельзя. Область данных - некоторая зона памяти, которую можно читать и писать.
Member
Статус: Не в сети Регистрация: 15.02.2009 Откуда: Лангепас
SwiPTorrent ASM завоевал определённые области применения. И пока ни один из других языков в эти области влезть не смог (да и не сможет). Любая вещь, желающая получить полный доступ к железу - прерогатива АСМа...
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения