Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Ассемблер? Это просто! Учимся программировать


Новое направление Портала RusFAQ.ru:
MosHoster.ru - Профессиональный хостинг

РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Assembler (Ассемблер)

Выпуск № 974
от 10.02.2008, 21:35

Администратор:Калашников О.А.
В рассылке:Подписчиков: 365, Экспертов: 16
В номере:Вопросов: 2, Ответов: 2

Нам важно Ваше мнение об этой рассылке.
Оценить этот выпуск рассылки >>


Вопрос № 121661: Подскажите пожалуйста, чем отличаются команды mov и lea. Когда необходимо применять mov, а когда lea?...
Вопрос № 121851: Здраствуйте, у меня такой вопрос: как правильно считывать с дискеты данные. Например считать первые 100кб и разместить их в памяти с опредиленного адреса. По возможности напишите с подробными коментариями. Заранее благодарен!...

Вопрос № 121.661
Подскажите пожалуйста, чем отличаются команды mov и lea. Когда необходимо применять mov, а когда lea?
Отправлен: 04.02.2008, 21:32
Вопрос задал: Дейнеко Валерий Николаевич (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Зенченко Константин Николаевич
Здравствуйте, Дейнеко Валерий Николаевич!

Команда: 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


Вы имеете возможность оценить этот выпуск рассылки.
Нам очень важно Ваше мнение!
Оценить этот выпуск рассылки >>

Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2008, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Техподдержка портала, тел.: +7 (926) 535-23-31
Хостинг: "Московский хостер"
Поддержка: "Московский дизайнер"
Авторские права | Реклама на портале
Версия системы: 4.70 от 17.01.2008
Яндекс Rambler's Top100
RusFAQ.ru | MosHoster.ru | MosDesigner.ru | RusIRC.ru
Kalashnikoff.ru | RadioLeader.ru | RusFUCK.ru

В избранное