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

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


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

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

Выпуск № 889
от 28.10.2007, 20:35

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


Вопрос № 106452: Добрый день. Пишу диплом на Assembler`е, тема создание программы управляющей внешним устройством и работающей без ОС. Вопрос: Как на ассемблере создавать .bin файлы и загружать код программы по нужному адресу? Ведь как я понимаю в загрузочный се...
Вопрос № 106500: Здравствуйте, Уважаемые эксперты! Нужна Ваша помощь! Только начинаю изучать Ассемблер. Объясните, пожалуйста, если не трудно как из этого кода pop si получается код команды 5E? Заранее спасибо!:-) Или посоветуйте, может где в сети есть объяснения или...

Вопрос № 106.452
Добрый день. Пишу диплом на Assembler`е, тема создание программы управляющей внешним устройством и работающей без ОС.
Вопрос: Как на ассемблере создавать .bin файлы и загружать код программы по нужному адресу? Ведь как я понимаю в загрузочный сектор диска как то надо поместить код. Кроме .com и .exe, не включая объектные файлы и листинг, асм ничего не хотит компилировать. Возможно я не знаю всех дириктив ассемблера. Пробовал .bin создать в ручную, но для этого нужно знать все машинные команды (не команды асма). В принцепе их можно узнать дизасемблировав некую прогу, но процесс весьма трудоемкий и длительный. Меня наченает посещать мысль о том, что придеться создавать отдельную программу для работы с диском, чтобы можно было манипулировать кодом будущей программы. Быть может есть какая нибудь полезная литературка или статейка? Времени до сдачи предварительного кода очень мало, а без нужной информации вся работа тормозит.Рассылки Олега Калашникова читал почти с нуля, хотя далеко не все, и не могу сказать что я полный юзер. Так же перечитал много другой литературы, но подходящей информации так и не удалось найти. Заранее большое спасибо.
Отправлен: 23.10.2007, 10:21
Вопрос задал: Аверьянов Александр Игоревич (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 3)

Отвечает: Зенченко Константин Николаевич
Здравствуйте, Аверьянов Александр Игоревич!

В приложении программа которая запишет на дискету бут-сектор.
Бут-сектор загрузит основную программу(2048 байт 4-е сектора) с дискеты в память предварительно записанную на дискету (первая дрожка, первый сектор, головка нулевая)
Думаю Вы легко переделаете эту программу для записи на диск основной программы:
ah - функция 02(чтение) или 03(запись) прерывания 13h Bios
al - число читaемых | записываемых секторов
es:bx - сегмент:относительный адрес буфера для читаемых| записываемых данных
ch - дорожка для дискеты 3.5" 1.5мб ( 0:79)
cl - сектор на дорожке(1:18)
dh - головка (0:1)
dl - дисковод (FDD=0:7Fh, HDD=80h:0FFh)

Информация о уже используемой памяти.

Область памяти Содержимое
0000:0000 - 0000:03FF Таблица векторов прерываний
0000:0400 - 0000:04FF Область данных BIOS
A000:0000 - AFFF:FFFF Видеопамять EGA
B000:0000 - B7FF:FFFF Видеопамять монохромного дисплея
B800:0000 - BFFF:FFFF Видеопамять цветного дисплея
C000:0000 - EFFF:FFFF Страницы EMS/адаптер BIOS ПЗУ
F000:0000 - FFFF:FFFF BIOS ПЗУ


Удачи!

Приложение:

---------
И только наступив на грабли мы приобретаем драгоценный опыт!

Ответ отправил: Зенченко Константин Николаевич (статус: Специалист)
Ответ отправлен: 26.10.2007, 14:43


Вопрос № 106.500
Здравствуйте, Уважаемые эксперты! Нужна Ваша помощь! Только начинаю изучать Ассемблер. Объясните, пожалуйста, если не трудно как из этого кода pop si получается код команды 5E? Заранее спасибо!:-) Или посоветуйте, может где в сети есть объяснения или электронные уроки на эту тему.
Отправлен: 23.10.2007, 16:39
Вопрос задала: Алена (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 1)

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

Язык ассемблера максимально приближен к машинным кодам.
Другими словами это перевод машинных кодов в понятный для человека вид.
Легче запомнить команду POP регистр, чем запоминать опкоды каждой команды. Команда ADC- имеет 6-ть опкодов. И это все запоминать?
К примеру: POP регистр -состоит из опкода 58h и кода указанно регистра,
для SI=6, т.е.
01011000=58h=pop r
00000110=06h=r
- - - - - - - - - - -
01011110=5eh=pop si

или команда
74h 03h = jz isOk
01110000=70h=переход по условию, второй байт относительный адрес перехода
00000100=04h=E/Z-условие
- - - - - - - - - - -
01110100=74h=jz ±смещение

Описание состава команд процессора INTEL в приложении.

В приложении электронной версии книги С.Зубкова есть только описание соответствия нескольких(около 25-ти первых , для по нимания смысла устройства-достаточно) команд, полная версия есть в печатных изданиях.
Удачи!

Приложение:

---------
И только наступив на грабли мы приобретаем драгоценный опыт!

Ответ отправил: Зенченко Константин Николаевич (статус: Специалист)
Ответ отправлен: 23.10.2007, 21:01
Оценка за ответ: 5
Комментарий оценки:
Спасибо Вам ОГРМНОЕ за подробный и понятный ответ! И Вам удачи!!!:-)

Отвечает: Овчинников Алексей
Здравствуйте, Алена!
POP SI это не код, это команда Ассемблера
которая как раз и преобразуется компилятором в
команду 5Е.
---------
Любая задача имеет бесконечное множество решений
Ответ отправил: Овчинников Алексей (статус: 2-ой класс)
Ответ отправлен: 24.10.2007, 19:18
Оценка за ответ: 4


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

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

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

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

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


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


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

В избранное