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

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


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

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

Выпуск № 682
от 14.02.2007, 12:35

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


Вопрос № 74825: ЗАДАНИЕ №1 ; Разработать программу, которая, используя процедуру, производит деле- ;ние двух чисел с последующим выводом результатов расчета (частного и ос- ;татка) на консоль. ; Деление производить стандартным методом многократного в...
Вопрос № 74874: Здравствуйте. я только недавно начал углубленно учить ассемблер. и на данном этапе столкнулся с одной из проблем, уже более 3 часов долблюсь и ничего немогу понять что не так. вообщем мне нужно чтобы программа отследила все н...

Вопрос № 74.825
ЗАДАНИЕ №1
; Разработать программу, которая, используя процедуру, производит деле-
;ние двух чисел с последующим выводом результатов расчета (частного и ос-
;татка) на консоль.
; Деление производить стандартным методом многократного вычитания дели-
;теля из делимого. Словесное описание алгоритма приведено ниже:
; 1. очистить частное и промежуточное делимое (оно же остаток)
; 2. сдвинуть делимое на один разряд в лево через перенос
; 3. сдвинуть промежуточное делимое в лево с учетом переноса
; 4. вычесть из промежуточного делимого делитель
; 5. если заема нет, то выполнить п. 7 иначе п. 6
; 6. восстановить промежуточное делимое
; 7. инвертировать флаг переполнения
; 8. сдвинуть частноеое на один разряд в лево с учетом переноса
; 9. если исчерпаны все разряды делимого, то закончить вычисления ина-
; че продолжить выполнение начиная с пункта 2
ЗАДАНИЕ №2
Разработать макроописания для программ с использованием упрощенных
сегментных директив, поместив их в файл макробиблиотеки. В тот же файл
включить макросы для преобразования 16-и разрядных целых чисел со знаком
в строку символов и символьных строк длиной до 6-и символов в строку (в
длину входит и символ "-"), вывода и вывода строки символов указанной
длины. Кроме того, написать макрос возвращающий квадрат переданного чис-
ла со знаком. Используя полученный включаемый файл, написать программу
принимающую с клавиатуры число, возводящую его в квадрат и выводящую ре-
зультат вычислений на терминал.
ЗАДАНИЕ №3
Разработать программу тестирующую клавиатуру с помощью автотеста кла-
виатуры, а так же эхо теста. Если тесты прошли успешно подать 1 динный
сигнал (длительностью примерно 0.5с) частотой 500 Гц, в противном случае
генерировать 3 коротких сигнала (по 0.1с каждый, с такими же интервала-
ми) частотой 2000 Гц. С периодом в 1с произвести поочередное включение и
выключение всех 7-ми возможных комбинаций светодиодов NumLock, CapsLock
и ScrollLock, сопровождая их соответствующей нотой 2 октавы. Запрограм-
мировать, указанную преподавателем, длительность задержки нажатия клави-
ши и скорость автоповтора клавиатуры.
Работу с клавиатурой вести через порт 64h, если же БИОС машины под-
держивает совместимость с более ранними разработками, то вместо него ис-
пользовать порт 60h.
Сам в Ассемблере не шарю, но сдавать надо, пожалуйста помогите, и прогу делайте с комментариями. СПАСИБО
Отправлен: 08.02.2007, 18:51
Вопрос задал: NoViK (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: Зенченко Константин Николаевич
Здравствуйте, NoViK!
Пожалуйста для начала скачайте книги по ассемблеру
http://download.excode.ru/download341.html
очень много разных книг
http://vas-unn.narod.ru/
http://mymanual.narod.ru/assembler.html
http://gogsite.ucoz.ru/load/7-1-0-2
в приложении оглавление книги из excode.ru
обратите внимание на главы 2 - 6
спрашивайте поможем

Успехов!
зы:
написать не жалко просто Вы несможете обьяснить что там написано
даже если там на каждую строчку программы будет по листу коментариев

Приложение:

Ответ отправил: Зенченко Константин Николаевич (статус: 3-ий класс)
Ответ отправлен: 13.02.2007, 18:37
Оценка за ответ: 4
Комментарий оценки:
Я конечно же понимаю, и спасибо за сылки


Вопрос № 74.874
Здравствуйте.

я только недавно начал углубленно учить ассемблер.
и на данном этапе столкнулся с одной из проблем, уже более 3 часов долблюсь и ничего немогу понять что не так.

вообщем мне нужно чтобы программа отследила все нажатые пользователем клавиши и при нажатии ентера проверила их с моим "паролем" (шуточный пример).

я не спец как вы. поэтому незнаю как обрабодать в ассемблере всю пачку аск кодов и сравнить с моим.

я пришел к выводу что нужно все коды клавиш записывать в регистр и при ентере сравнить их. вообщем я выбрал регистр BH, т.е. я просто через ADD складываю код с уже имеющимся содержанием BH регистра, затем я делаю сверку и не получается почему-та... то что у меня творится в душе не написать здесь матами.

на сколько я помню в память идут не символы (при компиляции) а коды их. т.к. правильно ли я сделал функцию сверки? ADD BH, AL или нет?

просто я хочу напрямую изменять пароль а не подсчитывать самим коды всех символов и т.д.

я приложил код программы. если заменить строку:
PASSWORD DB 'g'
на:
PASSWORD equ 13

и при запуске просто нажать ентер то программа сработает
но блин опять же натыкаюсь на низко-уровневые грабли. что мне ведь нужно проверить не один символ а послед.их.
и ясный перец для этого лучше мне использовать переменную чем эквивалентность...

p.s.: если можете помогите. т.к. одному познавать азы ассемблера учя мануалы и практикуясь с риском для себя тяжело учить ассемблер.

---

и здесь уже просьба: можете дать мне пособие или ссылку на книжки где бы было описано все хорошо. и желательно с примерами на тасме.
(просто я использую тасм)

заранее благодарен...

Приложение:

Отправлен: 09.02.2007, 00:14
Вопрос задал: Rubi-ASM (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Sergijj
Здравствуйте, Rubi-ASM!

В приложении - подправленный код.
В этой программе было столько ошибок, что я уж и со счёта сбился. Перечислю, которые помню:
1. Зачем Вы CheckKey вызывали через call? После этого в стеке оставались все регистры. Если Вы допустите такую ошибку в большой программе, то рано или поздно нарвётесь на переполнение стека.

2. Зачем Вы использовали iret? Это не возврат из прерывания. Достаточно было простого ret. Читайте про стек внимательнее.

3. Ваш любимый BH не был проинициализирован (в данном случае - обнулён). В результате чего, на начало исполнения программы у Вас там могло лежать что угодно.

4. Самая главная ошибка: при сравнении символа пароля с введённым символом Вы вместо пароля пытались подсунуть инструкции cmp указатель вместо собственно значения.

5. Зря Вы закомментировали в CheckVerify строку
sub bh,13
, ибо у Вас действительно после второго прохода прибавлялся код клавиши <Enter>.

6. Функция 07h int 21h тоже читает символ! Поэтому она Вам была не нужна.

7. Функция 10h int 16h не отображает символы, ибо это не int 21h и не знает что такое "консоль". Это функция BIOS.

8. Порт 60h (а к нему и буфер клавиатуры) используется по другому. То, что написано у Вас - почти бессмыссленно.

Ну и так далее...
Успехов в изучении assembler'а!
И не отчаивайтесь. Он (asm) в любом случае очень пригодится...;)

Приложение:

---------
Стучитесь! И Вас откопают...

Ответ отправил: Sergijj (статус: 8-ой класс)
Ответ отправлен: 09.02.2007, 11:19
Оценка за ответ: 5
Комментарий оценки:
Благодарю. просто мне необходимо выучить асм как можно быстрее и его нужно знать мне как минимум на уровне продвинутого дабы уметь писать маленькие простенькие программы самим без хелпы и мануалов.
т.к. на это давит и учеба и мое личное желание научиться программировать на низко-уровневом программировании.

Отвечает: Зенченко Константин Николаевич
Здравствуйте, Rubi-ASM!
одна буква в пароле очень редко встречается
переделки смотри в приложении

информация по асм:

http://www.sources.ru/asm/asm_catalog2.shtml

Удачи

Приложение:

Ответ отправил: Зенченко Константин Николаевич (статус: 3-ий класс)
Ответ отправлен: 09.02.2007, 11:40
Оценка за ответ: 5
Комментарий оценки:
Благодарю все работает так как я хотел.
Примного благодарен.


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

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

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

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

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


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


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

В избранное