WMmail.ru - сервис почтовых рассылок

суббота, 17 декабря 2016 г.

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

 
Если выпуск не отображается, вы можете прочесть его на сайте
  
  
Золото, нефть, акции, валюты - получайте прибыль от изменения цен этих активов на бирже!
  

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

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

Лучшие эксперты в разделе

Коцюрбенко Алексей aka Жерар
Статус: Мастер-Эксперт
Рейтинг: 371
• повысить рейтинг »
Evgen aka Chuma
Статус: 4-й класс
Рейтинг: 317
• повысить рейтинг »
nikitos82.01
Статус: 1-й класс
Рейтинг: 1
• повысить рейтинг »

• Assembler

Номер выпуска:1640
Дата выхода:17.12.2016, 20:15
Администратор рассылки:Лысков Игорь Витальевич (Старший модератор)
Подписчиков / экспертов:35 / 13
Вопросов / ответов:1 / 1

Консультация # 190283: Здравствуйте, уважаемые эксперты! Прошу вас ответить на следующий вопрос: Архитектура х86 - К сожалению больше информации о ассемблере не скажу, но надеюсь она и не понадобится т.к. вопрос состоит не в написании программы, а в описании несколько строчек, элементарных для эксперта=) Итак что я делаю - в задании я использую прерывания INT 8 (П...

Консультация # 190283:

Здравствуйте, уважаемые эксперты! Прошу вас ответить на следующий вопрос:
Архитектура х86 - К сожалению больше информации о ассемблере не скажу, но надеюсь она и не понадобится т.к. вопрос состоит не в написании программы, а в описании несколько строчек, элементарных для эксперта=)
Итак что я делаю - в задании я использую прерывания INT 8 (Прерывания таймера), то есть ввожу команду INT 8, и с помощью клавиши F1 перехожу в биос. Там идут команды по системному таймеру, как показано на рисунку который прикрепил, мы добавляем в переменную SI значения 40, копируем значения в DS, в SI вставляем 006С, дальше добавляем 0001 в SI,
добавляем по команде ADC и с помощью CMP сравниваем прошло ли 24 часа с момента запуска таймера, и переходим по адресу B853, тут вопрос - что значит CMP [SI], 00B0 ? Что с чем сравнивает, что такое 00B0, почему именно такое значения, как оно связанно с таймером.
Заранее спасибо уважаемые эксперты

Дата отправки: 12.12.2016, 18:27
Вопрос задал: porsiya (Посетитель)
Всего ответов: 1
Страница онлайн-консультации »


Консультирует Лысков Игорь Витальевич (Старший модератор):

Здравствуйте, porsiya!
Счетчик тиков - двойное слово, которое находится в сегменте данных ДОСа по адресу 40h:6ch
Не два слова, а одно двойное, сначала младшее слово, следом - старшее.
Прерывание таймера int 8 происходит через каждые примерно 55 мс (или 18.2 раза в секунду)
и увеличивает на 1 счетчик тиков. Приведенный фрагмент кода как раз и делает эту операцию,
кроме того, сравнивает с количеством тиков за сутки, чтобы выполнить некоторые операции.
Количество тиков за сутки равно 1800b0h = 1573040, ибо
1573040 * 0,054925494583735950770482632355185 сек = 60*60*24 сек = 1 сутки
0,054925494583735950770482632355185 сек - период одного тика (примерно 55 мс)
1/0,054925494583735950770482632355185 сек = 18,206481481481481481481481481543 раза в сек
Теперь по коду. Для понимания я добавил некоторые возможные строки выше и ниже приведенного фрагмента

Код (Assembler) :: выделить код
  	push		ax					;сохраним ax  	xor		ax, ax				;обнулим ax  	push		ds					;сохраним сегментный регистр сегмента данных  ;--------------  	push		si					;сохраним используемый регистр  	mov		si, 40h				;зададим адрес сегмента данных ДОСа  	mov		ds, si  	mov		si, 6ch				;по смещению 6ch находится двойное слово - счетчик тиков таймера  								;считаем тики, которые примерно раз в 0.055 мс (0,054925494583735950770482632355185 мс)  	add		word ptr [si], 1	;инкремент младшего слова,  	adc		word ptr [si+2], 0	; затем сложение с переносом старшего  								;дальше самое интересное   								;чтобы отсчитать сутки, надо насчитать 1800b0h тиков  								;вот и получается:  	cmp		[si+2], 18h			;сначала сравниваем старшее слово  	jnz		L_B853				;не равно - уходим куда-то  	cmp		[si], 0b0h			;потом младшее  ;--------------  								;напишу, что по идее дальше   	jnz		L_B853				;не равно - уходим туда же  	mov		word ptr[si], 0		;досчитали - обнуляем счетчик  	mov		word ptr[si+2], 0  	mov		word ptr[si+4], 1	; и взводим флаг переполнения по адресу 70h (в сегменте 40h)    	or		al, 8				;пометим, что у нас переполнение!  L_B853:  	push		ax				;в ax признак переполнения (или 0, или 8), сохраняется в стеке,  ;							; чтобы не испортить  ;...							;что-то там делаем...  

Консультировал: Лысков Игорь Витальевич (Старший модератор)
Дата отправки: 13.12.2016, 11:54
Рейтинг ответа:

НЕ одобряю +1 одобряю!


Оценить выпуск | Задать вопрос экспертам

главная страница  |  стать участником  |  получить консультацию
техническая поддержка

Дорогой читатель!
Команда портала RFPRO.RU благодарит Вас за то, что Вы пользуетесь нашими услугами. Вы только что прочли очередной выпуск рассылки. Мы старались. Пожалуйста, оцените его. Если совет помог Вам, если Вам понравился ответ, Вы можете поблагодарить автора - для этого в каждом ответе есть специальные ссылки. Вы можете оставить отзыв о работе портале. Нам очень важно знать Ваше мнение. Вы можете поближе познакомиться с жизнью портала, посетив наш форум, почитав журнал, который издают наши эксперты. Если у Вас есть желание помочь людям, поделиться своими знаниями, Вы можете зарегистрироваться экспертом. Заходите - у нас интересно!
МЫ РАБОТАЕМ ДЛЯ ВАС!

 
     Прошлые выпуски
RFpro.ru: Ассемблер? Это просто! Учимся программировать RFpro.ru: Ассемблер? Это просто! Учимся программировать RFpro.ru: Ассемблер? Это просто! Учимся программировать Все выпуски рассылки
 
 
Subscribe.Ru / АО «Интернет-Проекты» / О компании / Политика конфиденциальности

пятница, 16 декабря 2016 г.

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

 
Если выпуск не отображается, вы можете прочесть его на сайте
  
  
Стань валютным трейдером и зарабатывай на онлайн бирже с Калита-Финанс!
  

  
Хочешь интересную и доходную работу? Хочешь интересную и доходную работу?
Стань валютным трейдером и зарабатывай на онлайн бирже с Калита-Финанс! Счет от 3000 руб.

  Интернет-трейдинг - работа мечты Интернет-трейдинг - работа мечты
Начать зарабатывать на бирже может каждый, открой учебный счет и попробуй свои силы!

  Выгодное Каско в Тинькофф страхование Выгодное Каско в Тинькофф страхование
Каско от 2 500 руб. в месяц! Бесплатная доставка. Быстрое урегулирование.

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

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

Лучшие эксперты в разделе

Коцюрбенко Алексей aka Жерар
Статус: Мастер-Эксперт
Рейтинг: 371
• повысить рейтинг »
Evgen aka Chuma
Статус: 4-й класс
Рейтинг: 323
• повысить рейтинг »
nikitos82.01
Статус: 1-й класс
Рейтинг: 1
• повысить рейтинг »

• Assembler

Номер выпуска:1639
Дата выхода:16.12.2016, 19:45
Администратор рассылки:Лысков Игорь Витальевич (Старший модератор)
Подписчиков / экспертов:35 / 13
Вопросов / ответов:1 / 1

Консультация # 190277: Уважаемые эксперты! Пожалуйста, ответьте на вопрос: програмку нужно переделать в режим прерывания. написано у compmodel
RD #0  ;сначала будет 0   w
...

Консультация # 190277:

Уважаемые эксперты! Пожалуйста, ответьте на вопрос:

програмку нужно переделать в режим прерывания. написано у compmodel

RD #0 ;сначала будет 0   wr R1 ;здесь будем накапливать наше число   RD #5 ;максимум 5 цифр   wr R5 ;сохраним   RDI #101 ;команда очистки буфера   out 1 ; для клавиатуры   RDI #102 ; команда сброса ошибки   out 1 ; для клавиатуры   RDI #10 ; команда разрешения МВУ   OUT 1 ; для клавиатуры без прерываний (по опросу)   RDI #103 ; команда установки посимвольного ввода   out 1 ; для клавиатуры   LOOP:IN 2 ; читаем регистр состояния клавиатуры   DIV #10 ; делим на 10, чтобы второй разряд готовности стал в первом разряде   WR R3 ; сохраним   DIV #2 ; разделим на 2   MUL #2 ; умножим на 2   SUB R3 ; отнимем сохранное   JZ LOOP ; если четное, то нет кода в буфере, идем на цикл   IN 0 ; считываем код с клавиатуры   wr R2 ; сохраним   jz SAVE ; было просто нажатие на "Завершить ввод"   sbi #48 ; <\'0\' ;проверим на цифру   js RESET ; игнорируем, на сброс клавиатуры   sbi #10 ; >\'9\'   jns RESET ; игнорируем, на сброс клавиатуры   adi #10 ;восстановим число 0-9   wr r2 ; сохраним   rd r1 ; наше число   mul #10 ; умножаем на 10   add r2 ; добавляем введенный символ   wr r1 ; и на сохранение   jrnz r5,RESET ; ждем максимум 5 цифр   SAVE:rd #100 ;адрес ячейки, куда запишем результат   wr r0 ; будем адресовать через R0   rd r1 ; введенное число   wr @r0 ; сохраняем в памяти   hlt ; останов   RESET:RDI #101 ; команда сброса   out 1 ; в клавиатуру   RDI #103 ; команда установки посимвольного ввода (сбрасывается при сбросе)   out 1 ; в клавиатуру   jmp LOOP ; на чтение состояния клавиатуры   

Дата отправки: 11.12.2016, 19:37
Вопрос задал: misha.ya.ndex (Посетитель)
Всего ответов: 1
Страница онлайн-консультации »


Консультирует Лысков Игорь Витальевич (Старший модератор):

Здравствуйте, misha.ya.ndex!
Где-то так:

Код (Assembler) :: выделить код
  RD #0 ;сначала будет 0   wr R1 ;здесь будем накапливать наше число   RD #5 ;максимум 5 цифр   wr R5 ;сохраним     ;настроим клавиатуру  RDI #24 ;задаем адрес отработки прерывания клавиатуры  ;точный адрес можно посмотреть в окне "программа"  WR 100 ;фиксированный адрес ячейки 0 прерывания (клавиатуры)   RDI #101 ;команда сброса  OUT 1  RDI #11 ;разрешение и работа по прерыванию  OUT 1  RDI #103 ;посимвольный режим  OUT 1    EI ;разрешаем прерывания    LOOP: ;основной цикл  rd r5 ;циклим, пока в регистре r5 не 0  jnz LOOP  ;заканчиваем работу  rd #80 ;адрес ячейки, куда запишем результат   wr r0 ; будем адресовать через R0   rd r1 ; введенное число   wr @r0 ; сохраняем в памяти   hlt ; останов     ;Т.к. у нас основной цикл непустой,  ;в анализе переполнения буфера клавиатуры используется аккумулятор  ;то в прерывании необходимо сохранить аккумулятор  KEYBOARD: ;прерывание от клавиатуры  WR R9 ;сохраним аккумулятор в регистре  IN 0 ;читаем код  wr R2 ; сохраним   jz FINISH ; было просто нажатие на "Завершить ввод" - завершаем работу  sbi #48 ; <\'0\' ;проверим на цифру   js RESET ; игнорируем, на сброс клавиатуры   sbi #10 ; >\'9\'   jns RESET ; игнорируем, на сброс клавиатуры   adi #10 ;восстановим число 0-9   wr r2 ; сохраним   rd r1 ; наше число   mul #10 ; умножаем на 10   add r2 ; добавляем введенный символ   wr r1 ; и на сохранение   jrnz r5,RESET ; ждем максимум 5 цифр   ;ввели все 5 разрядов, R5=0 - автоматом завершится и основной цикл  RD R9 ;восстанавливаем аккумулятор  IRET ;возврат из прерывания    RESET:RDI #101 ; команда сброса   out 1 ; в клавиатуру   RDI #103 ; команда установки посимвольного ввода (сбрасывается при сбросе)   out 1 ; в клавиатуру   RD R9 ;восстанавливаем аккумулятор  IRET ;возврат из прерывания    FINISH:RDI #0 ;обнулим счетчик разрядов, чтобы завершился основной цикл!  wr r5  rd r9 ;восстановим аккумулятор  IRET ;возврат из прерывания  

Консультировал: Лысков Игорь Витальевич (Старший модератор)
Дата отправки: 12.12.2016, 21:40

5
нет комментария
-----
Дата оценки: 12.12.2016, 22:36

Рейтинг ответа:

НЕ одобряю 0 одобряю!


Оценить выпуск | Задать вопрос экспертам

главная страница  |  стать участником  |  получить консультацию
техническая поддержка

Дорогой читатель!
Команда портала RFPRO.RU благодарит Вас за то, что Вы пользуетесь нашими услугами. Вы только что прочли очередной выпуск рассылки. Мы старались. Пожалуйста, оцените его. Если совет помог Вам, если Вам понравился ответ, Вы можете поблагодарить автора - для этого в каждом ответе есть специальные ссылки. Вы можете оставить отзыв о работе портале. Нам очень важно знать Ваше мнение. Вы можете поближе познакомиться с жизнью портала, посетив наш форум, почитав журнал, который издают наши эксперты. Если у Вас есть желание помочь людям, поделиться своими знаниями, Вы можете зарегистрироваться экспертом. Заходите - у нас интересно!
МЫ РАБОТАЕМ ДЛЯ ВАС!

 
     Прошлые выпуски
RFpro.ru: Ассемблер? Это просто! Учимся программировать RFpro.ru: Ассемблер? Это просто! Учимся программировать RFpro.ru: Ассемблер? Это просто! Учимся программировать Все выпуски рассылки
 
 
Subscribe.Ru / АО «Интернет-Проекты» / О компании / Политика конфиденциальности

среда, 7 декабря 2016 г.

Левитас: Почему Ваш бизнес-сайт не работает? - Нужна ваша помощь, прямо сейчас

 
Если выпуск не отображается, вы можете прочесть его на сайте
  
  
Каско от 2 500 руб. в месяц! Бесплатная доставка. Быстрое урегулирование.
  

  
Экран настенный Digis DSOB-1106 (Optimal-B, формат 1:1, 129&quot;, 240*240, MW) Экран настенный Digis DSOB-1106 (Optimal-B, формат 1:1, 129", 240*240, MW)
Купить за 28999 руб. Подробнее...

  Twister clamp Twister clamp
Купить за 9380 руб. Подробнее...

  Diplomat NTSC (3:4) 183/72&quot; 108x144 MW (мобильный) Diplomat NTSC (3:4) 183/72" 108x144 MW (мобильный)
Купить за 12468 руб. Подробнее...

 
  
     
   Левитас: Почему Ваш бизнес-сайт не работает? - Нужна ваша помощь, прямо сейчас
  
Рассылка для владельцев сайтов, веб-мастеров и сайтостроителей

Почему Ваш бизнес-сайт не работает?

Выпуск #96, 2016-12-07
Письмо автору
Архив рассылки
Подписаться Подписка по Email Блог автора

Добрый день, уважаемый читатель!

Вы читаете меня уже давно - возможно, 5 лет или даже 10.

И сегодня я хочу попросить Вас о помощи в связи с моей книгой - нужно буквально 15 секунд.

Моя книга «Экспресс-маркетинг» вошла в число 12 лучших бизнес-книг года по версии «Озона» и сейчас идёт голосование за 1-е место. Борьба острая, каждый голос важен.

Если Вы считаете, что моя книга полезна - я прошу Вас сейчас проголосовать за меня.

Ссылка на страницу голосования - http://www.ozon.ru/premia/2016/books/4-3.html

Там надо нажать на кнопку «Голосовать», через секунду откроется форма для голосования.

В ней можно поставить «лайки» во всех Ваших соцсетях. А также дополнительно можно нажать большую кнопку «Голосовать» посреди страницы.

Буду признателен за Вашу поддержку - сейчас каждый голос важен.

Заходите на http://www.ozon.ru/premia/2016/books/4-3.html прямо сейчас - и голосуйте.

Вместе мы победим!

Как со мной списаться

Пишите мне на адрес a-l@kursy.ru. Если же письмо осталось без ответа или вернулось (что иногда случается из-за ошибок спам-фильтров), Вы можете послать мне письмо через форму на этой странице - такие письма я получаю всегда.

Пишите мне. Предлагайте свои сайты для разбора. Присылайте свои идеи для рассылки. Делитесь своим опытом. Задавайте вопросы. Рассказывайте о себе и своём бизнесе. Пишите!

Всего доброго!

С уважением,
Александр Левитас, доктор сайтов.

P.S. Присоединяйтесь ко мне в соцсетях: Facebook, ВКонтакте, Twitter, Instagram, LinkedIn, YouTube, Живой Журнал, Google+, Мой круг, Одноклассники

Если Вы хотите нанять меня для подробного анализа Вашего бизнес-сайта - пожалуйста, не забудьте ответить в своём письме на следующие вопросы (без этой информации я едва ли смогу Вам помочь):
  • Адрес сайта?
  • Какова главная задача сайта?
  • Каких людей Вы хотите привлечь на сайт?
  • Какие конкретные действия они должны совершить в результате посещения сайта?
  • Являетесь ли Вы владельцем или менеджером сайта?
  • С какими проблемами Вы столкнулись?
  • Что Вы делали или делаете сейчас для решения этих проблем?
Анализ будет касаться как дизайна сайта, так и его эргономичности (юзабильности), эффективности продающих текстов, оптимальных способов рекламы и так далее.

P.P.S. Если Вы считаете, что этот выпуск рассылки будет интересен кому-то из Ваших коллег или друзей и может помочь ему в работе - пожалуйста, перешлите ему это письмо.

Письмо автору
Архив рассылки
Подписаться Подписка по Email Блог автора

Copyright © Александр Левитас, 2016-12-07. Письма, присланные автору рассылки, могут быть опубликованы в рассылке - в полном объёме или частично - без предварительного уведомления. Если Вы не хотите, чтобы Ваше письмо было опубликовано - пожалуйста, явно укажите это в начале письма. Спасибо.


-AdRiver-     -AdRiver-
 
     Прошлые выпуски
Хотите хороший сайт? Протестируйте его! Как снять опасения клиента при продаже в Сети 5 вещей, которые больше не работают в соцсетях Все выпуски рассылки
 
 
Subscribe.Ru / АО «Интернет-Проекты» / О компании / Политика конфиденциальности