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

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


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

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

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

Выпуск № 1053
от 04.09.2008, 01:35

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

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


Вопрос № 142630: Здравствуйте, уважаемые эксперты! Никак не могу разобраться в примере Главы 9 (prog009.asm). На мой взгляд программа должна работать следующим образом: 1. Процедура открытия файла происходит таким образом: сравнивает значение Handle с двойным с...

Вопрос № 142.630
Здравствуйте, уважаемые эксперты! Никак не могу разобраться в примере Главы 9 (prog009.asm).
На мой взгляд программа должна работать следующим образом:
1. Процедура открытия файла происходит таким образом: сравнивает значение Handle с двойным словом 0FFFFh, т.к. они неравны то переходим к Quit_open: и устанавливаем флаг переноса в 1 (stc) затем ret возвращаемся на строчку ниже после вызова call на jc Error_file и т.к. флаг переноса =1, то переходим на закладку Error_file: при достижения возврата возвращаемся обратно на jc Error_File и опять все заново на Error_file....Помогите разобраться.

Приложение:

Отправлен: 29.08.2008, 20:53
Вопрос задал: Емельянов Дмитрий Алексеевич (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 2)

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

1) У Вас СОМ-программа, об этом говорит директива org 100h
Этот тип испоняемых файлов имеет размер до 64кб, размещается в памяти в одном сегменте, всегда начинается с адреса 100h.
Практически предтсавляет собой снимок(dump) памяти одного сегмента. А также не имеет заголовка программы. Его подставляет стандартный загрузчик DOS. При загрузке программы в память регистр SP(указатель стека)имет значение 0FFFEh - адрес вершины доступной памяти, а также по этому адресу всегда записывается значение 0000h.
При выполнении любой команды возврата(RET) из приведенного кода:
Код:
 mov ah,9
mov dx,offset Mess_ok
int 21h
ret
Error_file:
mov ah,2
mov dl,7
int 21h
ret

Из стека будет извлекатся значение 0000h и передаватся управление по этому адресу(CS:0000), а там находится стандартный заголовок программы, подставленый DOSом и записана там команда INT 20h(CDh 20h) - вызов функции DOS "завершить процесс". Именно поэтому и опять все заново на Error_file не будет.

2)При компиляции программы Handle dw 0FFFFh эта переменная будет иметь значение -1(0FFFFh). При запуске программы и первом вызове подпрограммы Open_file , команда сравнения ( cmp Handle,0FFFFh ) будет сравнивать с тем значением которое туда записал компилятор, после открытия файла в эту переменную будет записано совершенно другое значение, но только не 0FFFFh.

Удачи!
---------
Итерация от человека, рекурсия — от Бога (Питер Дойч)
Ответ отправил: Зенченко Константин Николаевич (статус: Профессор)
Украина, Киев
Тел.: +380979536619
Адрес: Украина г.Киев
----
Ответ отправлен: 29.08.2008, 21:51
Оценка за ответ: 5
Комментарий оценки:
Большое спасибо, разобрался если что спрошу еще.


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

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

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

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

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

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


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


© 2001-2008, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Техподдержка портала, тел.: +7 (926) 535-23-31
Хостинг: "Московский хостер"
Поддержка: "Московский дизайнер"
Авторские права | Реклама на портале

∙ Версия системы: 5.2 RC 1 от 03.09.2008

Яндекс Rambler's Top100
RusFAQ.ru | MosHoster.ru | MosDesigner.ru | RusIRC.ru
Kalashnikoff.ru | RadioLeader.ru | RusFUCK.ru

В избранное