Вопрос № 121661: Подскажите пожалуйста, чем отличаются команды mov и lea. Когда необходимо применять mov, а когда lea?...Вопрос № 121851: Здраствуйте, у меня такой вопрос: как правильно считывать с дискеты данные. Например считать первые 100кб и разместить их в памяти с опредиленного адреса. По возможности напишите с подробными коментариями. Заранее благодарен!...
Вопрос № 121.661
Подскажите пожалуйста, чем отличаются команды mov и lea. Когда необходимо применять mov, а когда lea?
Отвечает: Зенченко Константин Николаевич
Здравствуйте, Дейнеко Валерий Николаевич!
Команда: MOV приемник, источник
Назначение:Пересылка данных
Процессор: 8086
Базовая команда пересылки данных. Копирует содержимое источника в приемник, источник не изменяется. Команда MOV действует аналогично операторам присваивания из языков высокого уровня.
В качестве источника для MOV могут использоваться: число (непосредственный операнд), регистр общего назначения, сегментный регистр или переменная (то есть операнд, находящийся в памяти). В качестве приемника — регистр общего назначения, сегментный регистр (кроме CS) или переменная. Оба операнда должны быть одного и того же размера — байт, слово или двойное слово.
Команда: LEA приемник, источник
Назначение: Вычисление эффективного адреса
Процессор: 8086
Вычисляет эффективный адрес источника (переменная) и помещает его в приемник (регистр). С помощью LEA можно вычислить адрес переменной, которая описана сложным методом адресации, например по базе с индексированием. Если адрес 32-битный, а регистр-приемник 16-битный, старшая половина вычисленного адреса теряется, если наоборот, приемник 32-битный, а адресация 16-битная, то вычисленное смещение дополняется нулями.
Команду LEA часто используют для быстрых арифметических вычислений, например умножения:
lea bx,[ebx+ebx*4] ; ВХ=ЕВХ*5
или сложения:
lea ebx,[eax+12] ; ЕВХ=ЕАХ+12 (эти команды меньше, чем соответствующие MOV и ADD, и не изменяют флаги)
Описание команд взято из книги С.В. Зубкова.
--------- И только наступив на грабли мы приобретаем драгоценный опыт!
Ответ отправил: Зенченко Константин Николаевич (статус: Профессионал) Украина, Киев Тел.: +380958380164 Адрес: Украина г.Киев ---- Ответ отправлен: 04.02.2008, 22:04 Оценка за ответ: 5
Вопрос № 121.851
Здраствуйте, у меня такой вопрос: как правильно считывать с дискеты данные. Например считать первые 100кб и разместить их в памяти с опредиленного адреса. По возможности напишите с подробными коментариями. Заранее благодарен!
Отправлен: 05.02.2008, 21:25
Вопрос задал: Razboynik (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 6)
Отвечает: Зенченко Константин Николаевич
Здравствуйте, Razboynik!
Информацию с дискеты можно считывать с помощью функции BIOS 13h | 02h.
В приложении пример который считывает 4-е сектора - 2кб в видео буфер. Работа с дискетами отличается от работы с жесткими дисками, из-за того, что рабочая поверхность открыта(не герметична), нет смысла постоянно держать мотор диковода включенным (с небольшой задержкой он отключается сам), т.к. при попадании пыли можно поцарапать её и как следствие потерять информацию. По этому при чтении или записи информации нужно постоянно вызывать функцию BIOS 13h | 00h, которая приводит в исходное состояние дисковод и только
после этого проверить ошибку выполнения функции, к примеру если флаг CF=1 и АН=6 это значит, что нет дискеты в дисководе.
Ещё добавлю стандартный формат дискеты 3.5 дюйма:
720кб= 80 дорожек(цилиндров), 2 головки(стороны), 9 секторов на дорожке;
1,44мб= 80,2,18 соответственно.
В одном секторе 512 байт.
Удачи!
Приложение:
--------- И только наступив на грабли мы приобретаем драгоценный опыт!
Ответ отправил: Зенченко Константин Николаевич (статус: Профессионал) Украина, Киев Тел.: +380958380164 Адрес: Украина г.Киев ---- Ответ отправлен: 06.02.2008, 18:32