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

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


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

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

Выпуск № 512
от 09.08.2006, 15:35

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


Вопрос № 51065: Привет, эксперты. Помогите разобраться с вопросом, я новичок в этом деле. mov al, 05; 5 add al, 04; 4 ret Вот. Почему после опперации add у меня изменяется регистр pf в значение 1, когда в книге написано что он устанавливает...
Вопрос № 51068: Привет эксперты. Вот я тут задумался и у меня возник вопрос. Всем известно что Windows многозадачная О.С. Расскажите про это, как она может выполнять сразу несколько программ одновременно? Ну допустим одна программа использует регистры, записала туда...

Вопрос № 51.065
Привет, эксперты. Помогите разобраться с вопросом, я новичок в этом деле.

mov al, 05; 5
add al, 04; 4
ret
Вот. Почему после опперации add у меня изменяется регистр
pf в значение 1, когда в книге написано что он устанавливается в 1, когда чётное число битов равно 1, хотя как я понимаю результат будет
9, а 9 это в бин - это 1000 - И где здесь чётное число битов равных 1, если он здесь только один. Спасибо.
Отправлен: 03.08.2006, 19:39
Вопрос задал: Александр Михайлович (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

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

Вы не правы. 9 в двоичной системе это 1001 (8=1000, 4=0100, 2=0010, 1=0001, поэтому 9=8+1=1000+0001=1001).
Ответ отправил: Physicist (статус: Студент)
Ответ отправлен: 03.08.2006, 19:50
Оценка за ответ: 5
Комментарий оценки:
Таблётки пью от зубной боли - туплю

Отвечает: Волков Павел Юрьевич
Здравствуйте, Александр Михайлович!
Дополню, что pf=1 указывает на четное количество бит равных 1.
---------
Век живи, век учись.
Ответ отправил: Волков Павел Юрьевич (статус: 5-ый класс)
Ответ отправлен: 03.08.2006, 22:43


Вопрос № 51.068
Привет эксперты. Вот я тут задумался и у меня возник вопрос. Всем известно что Windows многозадачная О.С. Расскажите про это, как она может выполнять сразу несколько программ одновременно? Ну допустим одна программа использует регистры, записала туда нужные знчаения, а потом О.С. передаёт управление другому процессу или приложению, и это приложение тоже исп. теже самые регистры и затирает те данные, которые исп. предыдущая программа. И как программа снова восстанавливает их? Или они куда то временно пишутся и как процессор узнёт какому приложению какие данные для этих регистров загрузить. Спасибо.
Отправлен: 03.08.2006, 19:56
Вопрос задал: Александр Михайлович (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 1)

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

Этим занимается сама Windows, она сохраняет набор регистров процесса при переключении на другой, а потом при обратном переключении восстанавливает.

Кстати меня когда-то тоже мучал этот вопрос, ответ я нашел на wasm.ru, к сожалению сейчас найти не смог того материала, но советую Вам посетить этот ресурс, очень много толкового материала для новичка и для профи.
Удачи ;)
Ответ отправил: Saw (статус: 2-ой класс)
Ответ отправлен: 03.08.2006, 20:06
Оценка за ответ: 5
Комментарий оценки:
Понятно значит это просто вынь так делает.
Интересно а куда она их сохраняет?

Отвечает: newinfo2005
Здравствуйте, Александр Михайлович!
Есть такая штука TSS куда записываются данные (регистры,FPU и т.д.).
Многозадачность реализуются в основном через таймер проца вызывающийся с частотой 18.5 Гц.
как правило обработчик таймера сохраняет регистры,другие данные старой задачи и восстанавливает другой задачи и после чего передаются туда управление.
И делается это так быстро, что нам кажется они работают одновременно.
Это я описал для процов одноядерников с двумядерниками такая же примерно схема. Всё про всё эото можете найти в любой книжке по защ. режиму процу.
---------
"Спасибо" - нет такой валюты.
Ответ отправил: newinfo2005 (статус: 7-ой класс)
Ответ отправлен: 03.08.2006, 20:11

Отвечает: Mihasic
Здравствуйте, Александр Михайлович!
Винда сохраняет контекст программы, этот контекст представляет собой структуру в памяти, в которой содержаться все регистры, флаги, сегменты и не только (также есть дополнительная информация). Переключение осуществляется по прерыванию от таймера (для разъяснения этого почитай про мультизадачность в защищенном режиме проца - хотя в этом смысле я знаю только про x86). Вообще майкрософт не документирует это все (но структуру контекста можно выдрать из исходников windows platform SDK), майкрософт лишь говорит, что механизм распределения рпоцессорного времени работает "честно" - значит все может изменится в следующей ОСи.
Ответ отправил: Mihasic (статус: 3-ий класс)
Ответ отправлен: 04.08.2006, 11:31


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

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

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

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

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


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


© 2001-2006, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Версия системы: 4.35 от 27.07.2006
Яндекс Rambler's Top100

В избранное