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

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


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

Лучшие эксперты по данной тематике

Коцюрбенко Алексей aka Жерар
Статус: Мастер-Эксперт
Рейтинг: 2223
∙ повысить рейтинг »
Асмик Гаряка
Статус: Советник
Рейтинг: 199
∙ повысить рейтинг »
Куликов Роман Евгеньевич
Статус: 1-й класс
Рейтинг: 0
∙ повысить рейтинг »

/ КОМПЬЮТЕРЫ И СОФТ / Программирование / Assembler (Ассемблер)

Номер выпуска:1584
Дата выхода:20.02.2016, 16:51
Администратор рассылки:Лысков Игорь Витальевич (Старший модератор)
Подписчиков / экспертов:17 / 8
Вопросов / ответов:3 / 10

Консультация # 36601: Здравствуйте! Хотелось бы в простенькой программке вывести несколько слов на экран, причём следующее слово должно выводиться лишь после нажатия на клавишу, но как ни старался - они выходят подряд в одной строке и причём без пробела. Хотелось бы , чтобы каждое начиналось с новой строки. В unix и Windows для перевода каретки на другую строку исп...
Консультация # 11879: Здраствуйте. Слышал что в защищённом режиме процессор не допустит записи в сегмент кода (как правило, он даже не разрешит считывать его как данные).Но как тогда например hex-редакторы правят файлы, если записывать(и читать) нельзя???...
Консультация # 15122: При компоновке исходника написанным для DOS Tlink`ом (пакет TASM 6.11) Tlink выводит "Loader error (0001): out of memory" Что делать? ...

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

Здравствуйте!
Хотелось бы в простенькой программке вывести несколько слов на экран, причём следующее слово должно выводиться лишь после нажатия на клавишу, но как ни старался - они выходят подряд в одной строке и причём без пробела. Хотелось бы , чтобы каждое начиналось с новой строки. В unix и Windows для перевода каретки на другую строку используется комбинация CR LF. Но вот применимо ли это в ассемблере и более того как перевести сообщение на следующую строку для вывода на экран в программе - не знаю. И наоборот, как оставить в одной строке, но что бы между словами был пробел.
И второй вопрос - компилятор Masm хорошо справляется с определением ошибок в коде, выводя номера их строк. Тогда для каких целей служит отладчик? И если он позволяет заглянуть внутрь com-файла, то тогда зачем нужен дизассемблер?
Спасибо.

Дата отправки: 02.03.2006, 22:03
Вопрос задал: Paltus
Всего ответов: 3
Страница онлайн-консультации »


Консультирует Пан Павел Константинович:

Здравствуйте, Paltus!

Ответ на второй вопрос:
Понимате masm показывает так назыв. синтаксические ошибки, а вот логические нет. Роль дизассемблер, упростить, поиск логических ошибок. Вы спросите как? я отвечу, дизассемблер, предстовляет из себя визульную систему, которая отображает состояние внутренних ресурсов программы(регистры, память, стек...) на момент её работы. И это позволяет вам не наблюдать за программой в естественной среде её обитания, да конечно можно использовать пресловутый листок с карандашом и записывать результат выполнения каждого шага, но надо ли вам это, при этом кто ручается что при выполнении прерываний последнее возвращает именно тот результат который вы предпологали получить? Спецификация? она то же госпажа не постоянство, а дизассемблер поможет вам подогнать ваш код к Спецификации.

Программа которую вы хотели ниже:
С, Уважением MnEm0n!C

Приложение:

Консультировал: Пан Павел Константинович
Дата отправки: 02.03.2006, 23:30
Рейтинг ответа:

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


Консультирует PRiSon:

Здравствуйте, Paltus!
Дополнение на вопрос: И наоборот, как оставить в одной строке, но что бы между словами был пробел???
Просто между строк ставим код пробела(32) и всё.
;--------------------------------------
str1 db \'Vasa\',32,\'Katia$\'
; или такой вариант как отдельные строки(перед строками ставим код пробела)
str1 db 32,\'Vasa$\'
str2 db 32,\'Feda$\'
str3 db 32,\'Ola$\'
;--------------------------------------
Удачи!

Консультировал: PRiSon
Дата отправки: 03.03.2006, 07:59
Рейтинг ответа:

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


Консультирует FreeManC:

Здравствуйте, Paltus!
Для перевода на другую строку надо использовать CRLF=0d0ah=13,10
Масм показывает синтаксические ошибки в то время как отладчик позволяет выловить ошибки, допущенные в алгоритме, такие как невыровненный стэк, или смена значения регистра функцией. Дизассемблер - тоже очень удобная вещь. Потом ты сам всё поёмешь

Консультировал: FreeManC
Дата отправки: 07.03.2006, 10:01
Рейтинг ответа:

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

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

Здраствуйте.
Слышал что в защищённом режиме процессор не допустит записи в сегмент кода (как правило, он даже не разрешит считывать его как данные).Но как тогда например hex-редакторы правят файлы, если записывать(и читать) нельзя???

Дата отправки: 01.01.2004, 00:01
Вопрос задал: Семен
Всего ответов: 6
Страница онлайн-консультации »


Консультирует PavPS:

Приветствую Вас, Семен!
Так ведь HEX редакторы пишут в файл, а не в страницу памяти с аттрибутами защиты ХХХ. И кстати, во время выполнения можно читать из сегмента кода, если поставить у секции кода Readeble,writeble,executeble например.

Консультировал: PavPS
Дата отправки: 01.01.2004, 00:01
Рейтинг ответа:

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


Консультирует Горячев Игорь:

Добрый день, Семен!
Речь идет об исполняемой в данный момент программе. (Сегмент кода определен только у "работающей" проги). Hex - редакторы редактируемый файлы не исполняют, а только побайтно считывают, а это проц запретить не может.

Консультировал: Горячев Игорь
Дата отправки: 01.01.2004, 00:01
Рейтинг ответа:

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


Консультирует bocha:

Добрый день, Семен!
редактор открывает файл для чтения-записи, а не для исполнения.

Консультировал: bocha
Дата отправки: 01.01.2004, 00:01
Рейтинг ответа:

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


Консультирует Artemy:

Добрый день, Семен!
В файлы можно... в память нельзя.

Консультировал: Artemy
Дата отправки: 01.01.2004, 00:01
Рейтинг ответа:

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


Консультирует Tigran K. Kalaidjian:

Приветствую Вас, Семен!
Файлы находятся на диске, а не в памяти.

Консультировал: Tigran K. Kalaidjian
Дата отправки: 01.01.2004, 00:01
Рейтинг ответа:

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


Консультирует Евгений Иванов:

Здравствуйте, Семен!
файлы, заметь, а не память :)

* EMan: -=- И легко перо, да на крышу не закинешь. =-=

Консультировал: Евгений Иванов
Дата отправки: 01.01.2004, 00:01
Рейтинг ответа:

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

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

При компоновке исходника написанным для DOS Tlink`ом (пакет
TASM 6.11) Tlink выводит "Loader error (0001): out of memory" Что делать?

Дата отправки: 01.01.2004, 00:01
Вопрос задал: Nyrlan
Всего ответов: 1
Страница онлайн-консультации »


Консультирует Евгений Иванов:

Приветствую Вас, Nyrlan!
купить ещё одну планку памяти 256 Мб. без этого никак не будет работать.
а если серьёзно, то надо увеличить доступную нижнюю (640 Кб)память.
это можно сделать путём переноса разных драйверов в верхнюю память.
для этого нужно использовать HIMEM.SYS и EMM386.EXE
удачи!

* EMan: -=- И легко перо, да на крышу не закинешь. =-=

Консультировал: Евгений Иванов
Дата отправки: 01.01.2004, 00:01
Рейтинг ответа:

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


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

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

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


В избранное