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

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


Служба Рассылок Subscribe.Ru проекта Citycat.Ru

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

Выпуск N 049

Вопросы, которые поступили от подписчиков рассылки
"Ассемблер? Это просто! Учимся программировать"

Дата выхода: 2001-08-03


Вопрос №417

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

Ответ

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

Смотри приложение.

Приложение:


Отправил эксперт: Василий
Эксперт отправил ответов (всего): 10

Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS

Вопрос №417

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

Ответ

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

Выполнять данные - это типа новый прикол такой?
перед данными переход на M1 поставь!


Отправил эксперт: Dron
Эксперт отправил ответов (всего): 46

Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS

Вопрос №419

Приветик.

Ув. Эксперты, подскажите где можно найти историческую информацию о сопроцессорах?
Я имею ввиду, особенности аппаратной реализации, а также где, когда и кем был разработан... и т.п.

Ответ

Здравствуйте, Оксана!
Посмотри
http://books.org.ua/hardware/cpu/-может быть?
http://www.infa.ru/process/process_2.html
http://halyava.ru/artless/fpu8086.htm- лучше всего по моему


Отправил эксперт: Sensey
Эксперт отправил ответов (всего): 45

Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS

Вопрос №416

мЮПНД ОНДЯЙЮФХРЕ ХКХ ЙХМЭРЕ КСВЬЕ ЯНПЖХЧ ОПНЦПЮЛЛЙХ...
ЙНРНПЮЪ ЯВХРЮЕР ЯЙНПНЯРЭ ОПНЖЕЯЯНПЮ....
Ю ЕЯКХ МЕРС ЯНПЖХЕБ РН НАЗЪЯМХРЕ ВЕПЕГ ВЕЦН РНВМН ЩРН ОПНХЯУНДХР... РН ВРН ВЕПЕГ rdtsc...ДЮ..ЛМЕ РНЙЮ ОН ЬЮЦЮЛ МЮДН ПЮГЗЪЯМХРЭ ВРН ДЕКЮРЭ МЮДН ДКЪ БХВХЯКЕМХЪ ЯЙНПНЯРХ ОПНЖЕЯЯНПЮ

Ответ

гДПЮБЯРБСИРЕ, DDKJ_MIX!
еЯРЭ РЮЙЮЪ ЛЕЯРЮ, ЦДЕ ГЮОХЯЮМН, ЯЙНЙН РЮЙРНБ ОПНЬКН.
лНФМН ЯНЯВХРЮРЭ РЮЙРШ ОПНЖЕЯЯНПЮ Х БПЕЛЪ =СГМЮРЭ ЕЦН ЯЙНПНЯРЭ


Отправил эксперт: Alex2000
Эксперт отправил ответов (всего): 10

Экспертная группа: нАЫХЕ БНОПНЯШ ОН ОПНЦПЮЛЛХПНБЮМХЧ МЮ юЯЯЕЛАКЕПЕ ОНД DOS

Вопрос №419

оПХБЕРХЙ.

сБ. щЙЯОЕПРШ, ОНДЯЙЮФХРЕ ЦДЕ ЛНФМН МЮИРХ ХЯРНПХВЕЯЙСЧ ХМТНПЛЮЖХЧ Н ЯНОПНЖЕЯЯНПЮУ?
ъ ХЛЕЧ ББХДС, НЯНАЕММНЯРХ ЮООЮПЮРМНИ ПЕЮКХГЮЖХХ, Ю РЮЙФЕ ЦДЕ, ЙНЦДЮ Х ЙЕЛ АШК ПЮГПЮАНРЮМ... Х Р.О.

Ответ

гДПЮБЯРБСИРЕ, нЙЯЮМЮ!
оНХЯЙЮРЭ ЛНФМН МЮ ЯЮИРЮУ ОПНХГБНДХРЕКЕИ ЯНОПНЖЕЯЯНПНБ ХКХОПНЯРН ОН ЙКЧВЕБШЛ ЯКНБЮЛ ХЯРНПХЪ ПЮГПЮАНРЙХ ЯНОПНЖЕЯЯНПЮ


Отправил эксперт: Alex2000
Эксперт отправил ответов (всего): 11

Экспертная группа: нАЫХЕ БНОПНЯШ ОН ОПНЦПЮЛЛХПНБЮМХЧ МЮ юЯЯЕЛАКЕПЕ ОНД DOS

Вопрос №422

оПХБЕР БЯЕЛ ЩЙЯОЕПРЮЛ. дКЪ МЮВЮКЮ МЕЛМНЦН ББЕДС Б ЙСПЯ ДЕКЮ.
б ПЮЯЯШКЙЕ ГЮ 03.07.2k1 Б ОНЯКЕДМЕЛ НРБЕРЕ, ЖХРХПСЧ :
"...Б es ЯЫДЕПФХРЯЪ ЮДПЕЯ ЯРПЮМХЖШ БХДЕНОЮЛЪРХ ДКЪ РЕЙЯРНБНЦН ПЕФХЛЮ, Ю ХЛЕММН B800h, di ЩРН ЯЛЕЫЕМХЕ НР МЮВЮКЮ АСТЕПЮ(Р.Е. ОНГХЖХЪ МЮ ЩЙПЮМЕОПХ ЩРНЛ МЮДН СВХРШБЮРЭ, ВРН ЙЮФДШИ ЯХЛБНК ГЮМХЛЮЕР 2 АЮИР(ЮРПХАСР ЯХЛБНКЮ(Р.Е. ЖБЕР ТНМЮ Х ЖБЕР ЯХЛБНКЮ)Х ASCI ЙНД ЯЮЛНЦН ЯХЛБНКЮ)), МС Ю ax ЯНДЕПФХР ЙЮЙ ПЮГРЮЙХ БШБНДХЛШИ МЮЛХ МЮ ЩЙПЮМ ЯХЛБНК Х ЕЦН ЮРПХАСРШ. р.Е. Б ЩРНИ ЯРПНВЙЕ ЛШ БШБНДХЛ МЮ ЩЙПЮМ ЯХЛБНК Я ГЮДЮМШЛХ ЮРПХАСРЮЛХ Б ГЮДЮМСЧ ОНГХЖХЧ МЮ ЩЙПЮМЕ."
ъ ЛМНЦН ПЮГ БХДЕК БН БЯЪЙХУ ДНЯНБЯЙХУ ЙПЪЙЮУ Х Р.О. ЙЮЙ ОХЬЕРЯЪ БЯё ЖБЕРМШЛ ЬПХТРНЛ, МЮОПХЛЕП ЪПЙН-ГЕКЕМШЛ МЮ ВЕПМНЛ ТНМЕ. яЮЛ Ъ ОПНВРЪ ЙМХЦС "Assembler:СВЕАМХЙ" чПНБЮ РЮЙ Х МЕ МЮЬЕК РНЦН, ЙЮЙ ЛНФМН НЯСЫЕЯРБХРЭ ДЮММНЕ ПЮГСЙПЮЬХБЮМХЕ.
яНАЯРБЕММН ЯЮЛ БНОПНЯ : ЙЮЙ ОПНЦПЮЛЛМН НЯСЫЕЯРБХРЭ ДЮММНЕ ПЮГСЙПЮЬХБЮМХЕ, ЕЯКХ ЛНФМН, РН Я ОПХЛЕПНЛ.
я СБЮФЕМХЕЛ, дЛХРПХИ.

Ответ

гДПЮБЯРБСИРЕ, дЛХРПХИ!
бШЦКЪДЕРЭ ЩРН АСДЕР ОПХЛЕПМН РЮЙ:
mov ax, b800h
push ax; ЮУ Б ЯРЕЙ
pop es; ХГ ЯРЕЙЮ Б es
xor di,di {mov di,0}

mov al,###
mov ah,###
;Б al Х ah ОНЛЕЫЮЕЛ ЯХЛБНК Х ЮРПХАСРШ (МЕ ОНЛМЧ РНВМН ВРН ЙСДЮ)
mov word ptr es:[di], ax
;ОХЬЕЛ ОН ЮДПЕЯС БХДЕНОЮЛЪРХ ЩРХ 2 АЮИРЮ
;ОПХ МЕНАУНДХЛНЯРХ СБЕКХВХБЮИ di МЮ 2


Отправил эксперт: Alex2000
Эксперт отправил ответов (всего): 13

Экспертная группа: нАЫХЕ БНОПНЯШ ОН ОПНЦПЮЛЛХПНБЮМХЧ МЮ юЯЯЕЛАКЕПЕ ОНД DOS

Вопрос №422

Привет всем экспертам. Для начала немного введу в курс дела.
В рассылке за 03.07.2k1 в последнем ответе, цитирую :
"...в es сщдержится адрес страницы видеопамяти для текстового режима, а именно B800h, di это смещение от начала буфера(т.е. позиция на экранепри этом надо учитывать, что каждый символ занимает 2 байт(атрибут символа(т.е. цвет фона и цвет символа)и ASCI код самого символа)), ну а ax содержит как разтаки выводимый нами на экран символ и его атрибуты. Т.е. в этой строчке мы выводим на экран символ с задаными атрибутами в заданую позицию на экране."
Я много раз видел во всяких досовских кряках и т.п. как пишется всЈ цветным шрифтом, например ярко-зеленым на черном фоне. Сам я прочтя книгу "Assembler:учебник" Юрова так и не нашел того, как можно осуществить данное разукрашивание.
Собственно сам вопрос : как программно осуществить данное разукрашивание, если можно, то с примером.
С уважением, Дмитрий.

Ответ

Здравствуйте, Дмитрий!
Так вот, расширяя цитату:
"В АХ содержится символ и атрибуты"
AL - код символа, это понятно :)
AH - атрибут в таком виде (побитно)
младшие 4 бита - цвет символа КЗГЯ(КрасныйЗеленыйГолубойЯркость)
следующие 3 бита - цвет фона КЗГ(КрасныйЗеленыйГолубой)
самый старший бит - либо Яркость фона, либо Мерцание
PS. Монохром не рассматриваем, потому как раритет
Как выбрать мерцание или 16цветность для фона см Приложение

Приложение:


Отправил эксперт: Sensey
Эксперт отправил ответов (всего): 46

Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS

Вопрос №422

Привет всем экспертам. Для начала немного введу в курс дела.
В рассылке за 03.07.2k1 в последнем ответе, цитирую :
"...в es сщдержится адрес страницы видеопамяти для текстового режима, а именно B800h, di это смещение от начала буфера(т.е. позиция на экранепри этом надо учитывать, что каждый символ занимает 2 байт(атрибут символа(т.е. цвет фона и цвет символа)и ASCI код самого символа)), ну а ax содержит как разтаки выводимый нами на экран символ и его атрибуты. Т.е. в этой строчке мы выводим на экран символ с задаными атрибутами в заданую позицию на экране."
Я много раз видел во всяких досовских кряках и т.п. как пишется всЈ цветным шрифтом, например ярко-зеленым на черном фоне. Сам я прочтя книгу "Assembler:учебник" Юрова так и не нашел того, как можно осуществить данное разукрашивание.
Собственно сам вопрос : как программно осуществить данное разукрашивание, если можно, то с примером.
С уважением, Дмитрий.

Ответ

Здравствуйте, Дмитрий!

Че тут не понять

В сегменте 0B800h находится участок видео память для текстового режима, где на каждый символ экрана к примеро 80х25 отводится 2 байта,
первый атрибуты символа (цвет и фон) и ном5ер самого символа от 0 до 255. Всего 4000 байт. Все хранится последовательно, 1 байт атрибут, 1 байт символ, 1м байт атрнибут, 1 байт 2 символ и т.д.

Проверить это просто,

push 0B800h
pop es
xor di,di
mov ah,0F ; цвет и атрибуты
mov al,'a'
mov es:[di],ax

у тебя на экране появится белая буква 'a'

Атрибуты храняться так
Биты 0-3 - цвет символ (от 0 до 15)
Биты 4-7 - фрн сивола (от 0 до 15)
В ручную задовать удобно в 16х системе счисления
например 3Fh
где первая цифирка 3 - цвет фона
а вторая цифирка F - цвет символа

млм заносим в AH цвет фона
сдвигаем на 4 бита в лево (shl)
и прибавляем или орим (or) цвет символа

Да, в нормальном режиме цвет фона от 0 до 8 а все что больше это мирцание, нужно всключить режим интенсивности, тогда фон не будет моргать но ты сможешь поставить яркозеленый
делается это через БИОС int10h, как не помню, см какойнибудь хелшп или спроси у экспертов

(во блин наскреб :)



Отправил эксперт: VD (vdragon-pas.chat.ru - Программирование графики на Пакаль со вставками на)
Эксперт отправил ответов (всего): 26

Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS

Вопрос №419

Приветик.

Ув. Эксперты, подскажите где можно найти историческую информацию о сопроцессорах?
Я имею ввиду, особенности аппаратной реализации, а также где, когда и кем был разработан... и т.п.

Ответ

Здравствуйте, Оксана!

Рецепт блюда такой,

на сайте разработчиков на пример

Готовка
1. Возьми спроцессор
2. Узнай кто его сделал
3. Поищи в интернете это имя
Вуаля, алегоп


Отправил эксперт: VD (vdragon-pas.chat.ru - Программирование графики на Пакаль со вставками на)
Эксперт отправил ответов (всего): 27

Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS

Вопрос №418

Так, меня тут один наиумнейших эксперт спросил...
типа а что ты имелл ввиду когда спрашивал про скорость ?
ТАКТОВУЮ ЧАСТОТУУУУУУУ !Ё!! как ее измерить ! вот что
блин неужли приходя покупать процы...и спрашивая о скорости... вас пеерспросят манагеры...а что вы хотите сказать ?? я не понимаю..что за скорость ?? вы откуда ваще ?? чего еще можно понимать под скоростью процессора то ??
что за бред ! вы эксперты или кто ?? или книжек умных начитались ?? если анчитались то постарайтесь понять... !
или не регитесь как эксперты ! позорр !! что блин вы имелии ввиду под скоростью процессора ! мдаааа.....без коментариев ! уважаемый эксперт....СЕНСЕЙ вам бы пойти...на калькуляторе считать !!!

Ответ

Здравствуйте, DDKJ_MIX!
Скорость можно в разной херне измерять! и типа наверно 133 пент будет быстрее чем 486 с той же частотой!


Отправил эксперт: Painbringer
Эксперт отправил ответов (всего): 18

Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS

Вопрос №418

Так, меня тут один наиумнейших эксперт спросил...
типа а что ты имелл ввиду когда спрашивал про скорость ?
ТАКТОВУЮ ЧАСТОТУУУУУУУ !Ё!! как ее измерить ! вот что
блин неужли приходя покупать процы...и спрашивая о скорости... вас пеерспросят манагеры...а что вы хотите сказать ?? я не понимаю..что за скорость ?? вы откуда ваще ?? чего еще можно понимать под скоростью процессора то ??
что за бред ! вы эксперты или кто ?? или книжек умных начитались ?? если анчитались то постарайтесь понять... !
или не регитесь как эксперты ! позорр !! что блин вы имелии ввиду под скоростью процессора ! мдаааа.....без коментариев ! уважаемый эксперт....СЕНСЕЙ вам бы пойти...на калькуляторе считать !!!

Ответ

Здравствуйте, DDKJ_MIX!
Ты бы сначала хоть какието правила вежливости выучил, а потом лез задавать вопросы. Или по твоему надо сначала обматерить всех, а потом ждать "когда же мне ответят на мой вопрос". Так что... думай сам.


Отправил эксперт: Leha
Эксперт отправил ответов (всего): 11

Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS

Вопрос №424

Здравствуйте экспеты.
Есть два вопроса.
1.Как можно "заморозить" какой нибудь участок памяти,то есть запретить туда запись.
2.Как можно узнать куда загрузилась какая нибудь программа.
С ув. Алексей.

Ответ

Здравствуйте, Алексей!

Ну, насчёт "заморозить", это ты, мальчик, нарвался на 32-х битный
защищённый режим с включённой страничной адресацией :(

А, что касается 2-го вопроса, то ты вообще про какую ОСь спрашиваешь?
DOS, Windows? может быть Linux или BeOS? Или вообще QNX какой-нибудь?

Если про DOS, то, чтобы найти адрес какого-либо TSR'а, придётся пола-
зить по блокам MCB...
В Windows это вообще невозможно (Если я не прав,
поправьте меня!).
Насчёт остальных - не знаю, под ними не программировал :(


Отправил эксперт: Nik
Эксперт отправил ответов (всего): 44

Экспертная группа: Общие вопросы по программированию на Ассемблере под Win32

Вопрос №418

Так, меня тут один наиумнейших эксперт спросил...
типа а что ты имелл ввиду когда спрашивал про скорость ?
ТАКТОВУЮ ЧАСТОТУУУУУУУ !Ё!! как ее измерить ! вот что
блин неужли приходя покупать процы...и спрашивая о скорости... вас пеерспросят манагеры...а что вы хотите сказать ?? я не понимаю..что за скорость ?? вы откуда ваще ?? чего еще можно понимать под скоростью процессора то ??
что за бред ! вы эксперты или кто ?? или книжек умных начитались ?? если анчитались то постарайтесь понять... !
или не регитесь как эксперты ! позорр !! что блин вы имелии ввиду под скоростью процессора ! мдаааа.....без коментариев ! уважаемый эксперт....СЕНСЕЙ вам бы пойти...на калькуляторе считать !!!

Ответ

Здравствуйте, DDKJ_MIX!
Если вы хотите подсчитать тактовую частоту процессора, то так и спрашивайте - "хочу подсчитать тактовую частоту процессора", потому что её и считать не надо. Дело в том, что тактовая частота и скорость процессора не имеют НИЧЕГО общего. "Манагеры" тем и деньги зарабатывают, что все думают что это одно и то же. А на счёт кода, то к сожалению, обладаю таковым только для своей генплаты, написанного по спецификации с сайта производителя. Посему код слишком неуниверсален. Но на то нас тут и много - может кто-нибудь другой ответит, когда Вы конечно окончательно со скоростью определитесь.
И последнее: calm down.


Отправил эксперт: AVC
Эксперт отправил ответов (всего): 10

Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS

Вопрос №425

Здравствуйте.
У меня есть проблемы с вирусом в 13-ом выпуске.
Init:
mov es,Seg_move
mov di,100h
mov cx,offset Finish-100h
mov si,100h
rep movsb
jmp dword ptr cs:[Off_move] ;Не могу понять, почему при прыжке cs меняется?

Ответ

Здравствуйте, Алексей!

Ты же указываешь дальний переход!!! (dword ptr)

В этом dword хранится следующее:
dw newip
dw newcs


Отправил эксперт: Dron
Эксперт отправил ответов (всего): 47

Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS

Вопрос №425

Здравствуйте.
У меня есть проблемы с вирусом в 13-ом выпуске.
Init:
mov es,Seg_move
mov di,100h
mov cx,offset Finish-100h
mov si,100h
rep movsb
jmp dword ptr cs:[Off_move] ;Не могу понять, почему при прыжке cs меняется?

Ответ

Здравствуйте, Алексей!
Dword ptr - указатель на 4 байта!
т.е. сегмент:смещение, которое и записывается в CS:IP
:(


Отправил эксперт: Sensey
Эксперт отправил ответов (всего): 47

Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS

Подписаться на рассылки

Рассылки Subscribe.Ru
Ассемблер? Это просто! Учимся программировать
Ассемблер? Это просто! Учимся программировать (FAQ)

Форма подачи вопроса

ВНИМАНИЕ!!! Пожалуйста, НЕ высылайте один вопрос сразу нескольким подгруппам! Дополнения к вопросам, на которые эксперт уже ответил НЕ следует направлять ведущему рассылки (я не успеваю!). Просто скомбинируйте первый вопрос и дополнение к нему, а затем заново отправьте его, используя приведенную ниже форму!

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


Ваше имя *:

Ваш e-mail *:

Подгруппы:

Вопрос *:

Прилагаемая программа (если необходимо):


Регистрация в качестве эксперта

Архив выпусков


Ведущий рассылки,

Калашников Олег: Assembler@Kalashnikoff.ru
ICQ No.:
68951340
URL сайта подписчиков: http://www.Kalashnikoff.ru

______________

По вопросам сотрудничества, рекламы и спонсорства обращайтесь:

  1. Публичное размещение материала из рассылки: Cooperation@Kalashnikoff.ru
  2. Реклама на сайте, в книге и рассылках: http://www.Kalashnikoff.ru/Reklama.html, Reklama@Kalashnikoff.ru
  3. Издание книги (спонсорство): Sponsor@Kalashnikoff.ru

Рассылка 'Ассемблер? Это просто! Учимся программировать (FAQ)' Рассылка 'Ассемблер? Это просто! Учимся программировать'


(C) Москва, 2001. Авторское право принадлежит Калашникову О.А. Публичное размещение материала из рассылки, а также его использование полностью или частично в коммерческих или иных подобных целях без письменного согласия автора влечет ответственность за нарушение авторских прав.


http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться Рейтингуется SpyLog

В избранное