Necroteeth писал(а):если мы для обращения к .db используем умножение на 2, почему при инициализации стека Ramend тоже не умножаем на 2? в чем отличие этих двух ситуаций?
Можно несколько по другому пояснить:
Программный счетчик (
РС) использует пословную адресацию. Слово - это два байта, которые составляют одну строку для этого счетчика.
РС считает строки с дискретностью еденицы. Но в каждой строке -
2 байта. Если встречается метка, то ей присваивается значение счетчика команд, т. е. номера строки, перед которой стоит эта метка. Поэтому, например, чтобы по команде правильно адресовать метку, ей нужно сообщить абсолютный
байтовый адрес, а не словный, как у
РС. Для этого адрес метки умножается на 2, как в тех примерах, что вы выше приводили.
По поводу
Ramend вам уже пояснил
ploop. Дополнительно можно сказать, что если в указатель стека загружаем адрес начала стека, то таких премудростей, как с программной памятью не будет, т. к. адресация
RAM, т. е. счетчика оперативной памяти - байтовая.