Помогите, пожалуйста, объясните дословно что сделает команда "MOV DL, DS:[BP]"
И объясните, пожалуйста, равенства:
SEG (X + 10) = SEG X
OFFSET(X + 10) = OFFSET X + 10
TYPE (X + 10) = TYPE X
1) = обычно не сравнение, а присваивание.
2) Как SEG X может быть равен SEG (X+10) я не знаю. тупо математически. SEG это функция, которая умножает все на ноль? тогда да. Или что такое SEG?
Saboteur, Во-первых, это не цельные команды, а просто выражения, тип две команды, которые в результате выдаст один результат, а во-вторых SEG возвращает адрес сегмента, в котором находится переменная, если ты не знаешь, то зачем пишешь?
WanhedaGrey, Подскажи какой синтаксис использовался для этих "просто выражений", чтобы хотя бы понять это сравнение или присваивание?
Если это ни то не другое, то в чем тогда собственно вопрос - пояснить автору что он имел ввиду, когда он сам в этом не уверен?
директива это не математическое описание условия или равенства.
Директива - это команда. В данном случае по идее должна быть директива ассемблера или компилятора.
Но для директивы ассемблера, синтаксис выглядит некорректно, поэтому объяснить то, что выглядит некорректно - нельзя.
Если вы знаете ассемблер хорошо и данные директивы имеют смысл, то лучше ответьте автору правильно отдельным ответом.
> MOV DL, DS:[BP]
Команда выглядит не очень, поскольку регистр BP обычно используется для работы с стэком. Но ок.
Собственно взять значение из дата сегмента, по смещению BP и положит его в регистр DL.
Новичек не поймет. Мне кажется что изучение этого огрызка кода надо начинать с предусловий.
С контекста. Дескыть в памяти что-то УЖЕ ЛЕЖАЛО и мы продолжаем вычисления.