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

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


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

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

Выпуск № 737
от 30.04.2007, 12:05

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


Вопрос № 83956: Доброго времени суток, уважаемые эксперты. Есть у меня к вам несколько вопросов, и наверняка появятся еще в будущем.. Начал я в изучать ассемблер, признаюсь не по собственной воле, а по воле проведения, а точнее программа в университете у мен...
Вопрос № 83994: Здравствуйте, хочу изучать ассемблер, подскажите ссылки на сайты, где будет информация для новичка в ассемблере. Я где-то видел сайт Олега Калашникова, администратора этого сайта, забыл как он называется, мне надо в электронном все виде, чтобы не пок...
Вопрос № 84045: Такой вопрос : как слинковать программу на ассемблере с программой на "С" точнее , если функцию strchr написать на ассемблере и вызвать из "с" ? И как будет выглядеть функция ? Конкретно интересно , то , что в стек будет з...

Вопрос № 83.956
Доброго времени суток, уважаемые эксперты.
Есть у меня к вам несколько вопросов, и наверняка появятся еще в будущем..
Начал я в изучать ассемблер, признаюсь не по собственной воле, а по воле проведения, а точнее программа в университете у меня такая..
Вот начал писать уже вторую лабу, и застопорился..
Не понятно для меня как работает функция 0Ah 21h прерывания, то есть вроде даже вся ясно, но у меня не работает в лабе..

Вот то, что я начал писать... (см.код)
Если написать "mov dx,offset Stroka" (вроде всё по правилам), не работает ввод, если написать "mov stroka,20d" ввод начинает работать. Второй вариант мне кто-то подсказал на лекции, но я ничего не понял почему так.. Объясните пожалуйста, в чем дело?

Приложение:

Отправлен: 24.04.2007, 14:11
Вопрос задал: Roman Aleksandrovich (статус: Посетитель)
Всего ответов: 4
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Олег Владимирович
Здравствуйте, Roman Aleksandrovich!

Почитайте про функцию 0Ah, особенно описание:
http://dos.80x86.ru/index.php?act=int&id=0018

Приложение:

---------
Факультет ПМ-ПУ - лучший в СПбГУ!

Ответ отправил: Олег Владимирович (статус: Студент)
Ответ отправлен: 24.04.2007, 14:32

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

Функции 0Ah 21h передается строка
где:
- первый байт это максимальный размер строки для ввода(обязательно)
- второй байт это количество введенных символов без кода 0Dh (enter) (возвращается функцией)
- и сама строка(возвращется функцией)

в программе выглядит так:
;сегмент данных
string_max db 100
string_input db ?
string_self db 100 dup(?)

;сегмент кода
mov dx,offest string_max
mov ah,0ah
int21h

---------
И только наступив на грабли мы преобретаем драгоценный опыт!
Ответ отправил: Зенченко Константин Николаевич (статус: Студент)
Ответ отправлен: 24.04.2007, 14:34

Отвечает: Sov
Здравствуйте, Roman Aleksandrovich!
Начну с краткого описания функции ah
При вызове этой функции буфер должен быть оформлен так:
max,?,?,?,? где max-максимально допустимая длинна ввода(от 1 до 254)
При выходе буфер будет заполнен так:
max,len,T,E,X,T,0dh len-действительная длинна записанных данных без CR(буфер однако будет содержать введеную строку и символ CR).

Ваш первый вариант не работал, потому-что вы неправильно оформили буфер. Попробуйте сделать так:
Stroka db 20,?, 22 dup (?);2 байта останутся под символ конца строки. 20 собственно под текст

Второй вариант поэтому и начинает работать, вы заполняете первый байт массива Stroka каким-то значением, теперь буфер оформлен верно и функция работает
Ответ отправил: Sov (статус: 1-ый класс)
Ответ отправлен: 24.04.2007, 16:38

Отвечает: An42
Здравствуйте, Roman Aleksandrovich!
для работы dos int 21h ah=0ah необходимо подготовить буфер:
я пользуюсь такой схемой
stroka label byte
strmax db 20 ;максимальная длина строки
strlen db ? ;реальная длина введенной строки
strptr db 20 dup(‘ ‘) ;непосредственно куда будет записываться строка

тогда
mov ah,0ah
lea dx,stroke
int 21h
программа остановится и будет ждать пока вы будете осуществлять ввод, по нажатию клавиши return в буфер запишется строка и последний байт будет код 0dh, т.е. в переменной strptr будет запись вашей строки и код 0dh.

Буфер можно организовать и так: stroka db 20,?,20 dup(‘ ‘), единственная разница в том, что введенная стока будет находится с третьего байта.
Удачи
Ответ отправил: An42 (статус: 2-ой класс)
Ответ отправлен: 24.04.2007, 17:33


Вопрос № 83.994
Здравствуйте, хочу изучать ассемблер, подскажите ссылки на сайты, где будет информация для новичка в ассемблере. Я где-то видел сайт Олега Калашникова, администратора этого сайта, забыл как он называется, мне надо в электронном все виде, чтобы не покупать книги
Еще надо по PHP, SQL (или MySQL) и по Perl
Заранее спасибо
Отправлен: 24.04.2007, 18:03
Вопрос задал: Исаак Моисеевич (статус: 3-ий класс)
Всего ответов: 5
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Menand
Здравствуйте, Исаак Моисеевич!

По ассемблеру - Wasm.ru (и также раздел ссылки посмотрите)

Книги по остальному посмотрите на:
http://www.all-ebooks.ru/
Ответ отправил: Menand (статус: 10-ый класс)
Ответ отправлен: 24.04.2007, 18:26
Оценка за ответ: 5
Комментарий оценки:
спасибо за ссылки :)

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

Очень много разных книг Вы найдете тут
Удачи!
---------
И только наступив на грабли мы преобретаем драгоценный опыт!
Ответ отправил: Зенченко Константин Николаевич (статус: Студент)
Ответ отправлен: 24.04.2007, 18:27
Оценка за ответ: 5
Комментарий оценки:
Спасибо

Отвечает: Пашка
Здравствуйте, Исаак Моисеевич!
Вот:
http://kalashnikoff.ru/
http://asm.shadrinsk.net/
http://www.citforum.ru/programming/tasm3r/index.shtml
Ответ отправил: Пашка (статус: 2-ой класс)
Ответ отправлен: 24.04.2007, 21:25
Оценка за ответ: 5
Комментарий оценки:
Спасибо за ссылки, может потом я тоже буду в этой теме экспертом :D

Отвечает: lupus campestris
Здравствуйте, Исаак Моисеевич!
Ассемблер - http://www.inattack.ru/cat_program/21.html
PHP и Perl - http://www.inattack.ru/cat_program/62.html
SQL - http://www.inattack.ru/cat_program/49.html
Удачи!
---------
«С кем тяжело молчать, с тем не о чем говорить» (Метерлинк)
Ответ отправила: lupus campestris (статус: Профессор)
Россия, Москва
Тел.: +79060429689
Организация: http://www.orange-business.ru
WWW: http://lupus-campestris.blogspot.com/
ICQ: 193918889
----
Ответ отправлен: 24.04.2007, 21:41
Оценка за ответ: 5
Комментарий оценки:
Спасибо, ждите потом меня в этой теме экспертом :)

Отвечает: P@lach
Здравствуйте, Исаак Моисеевич!
Сайт калашникова http://www.kalashnikoff.ru/
Книги по ассемблеру ,PHP, SQL и по Perl можно скачать на сайте: http://books.openlib.org.ua/
Ответ отправил: P@lach (статус: 2-ой класс)
Ответ отправлен: 25.04.2007, 09:35
Оценка за ответ: 5
Комментарий оценки:
спасибо, http://books.openlib.org.ua/ шибко хороший сайт


Вопрос № 84.045
Такой вопрос : как слинковать программу на ассемблере с программой на "С"
точнее , если функцию strchr написать на ассемблере и вызвать из "с" ?
И как будет выглядеть функция ? Конкретно интересно , то , что в стек будет занесен указатель на первый символ строки , мы обратимся к ниму как [sp] , например, а как обращаться ко втором элементу строки : [sp] + 1 ?
и так LOOPом пока не встретим символ 0000H ? И как записать указатель , который должен быть возвращён функцией ? в AX, как MOV ax, [sp] + "какое-то число" , так? Поправте меня, пожалуйста, если что -то неправильно ! Заранее большое спасибо!
Отправлен: 24.04.2007, 23:12
Вопрос задал: Горький Артём Андреевич (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

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

Вы можете использовать встроенний ассемблер, не заботясь о передаче параметров всю работу сделает компилятор, автоматически преобразовывая имена переменных в word ptr [bp+ХХ].
Посмотрите эту книгу.
В главе 5 расмотренно как можно передавать параметры.
В главе 8 расмотренно как взаимодействуют языки высокого уровня с ассемблером.
Удачи!

---------
И только наступив на грабли мы преобретаем драгоценный опыт!
Ответ отправил: Зенченко Константин Николаевич (статус: Студент)
Ответ отправлен: 25.04.2007, 11:41


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

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

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

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

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


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


© 2001-2007, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Email: support@rusfaq.ru, тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Версия системы: 4.51 (beta) от 27.04.2007
Яндекс Rambler's Top100

В избранное