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

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


Новое направление Портала RusFAQ.ru:
MosHoster.ru - Профессиональный хостинг

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

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

Выпуск № 1027
от 24.04.2008, 04:05

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

Нам важно Ваше мнение об этой рассылке.
Оценить этот выпуск рассылки >>


Вопрос № 132571: Здраствуйте уважаемые! Я уже зазавал данный вопрос, получил ответ, спасибо всем, но ответ для меня не подъёмный. Решил сам написать более проще но получилось так, что прога не работает(зависает). Задача следующая: Составить программу сортировки э...
Вопрос № 132683: Здравствуйте, уважаемые эксперты! Пишет Антон, из Харькова. Я сейчас я на 19-20 главе книги Олега Калашникова "Ассемблер - это просто". У меня возникло неколько впоросов, насчет которых в книге умолчано или россказано мало. Помо...
Вопрос № 132762: Здравствуйте, Уважаемые!!! Не поможете ли Вы составить следующую программку: «Написать резидентную программу на языке ассемблера, при активизации программа должна выдать сообщение методом прямого обращения к видеобуферу. В программе использовать ...
Вопрос № 132780: Здравствуйте! Объясните пожалуйста, по принципу какой логической операции работает маска на атрибуты при поиске файлов (функции 4EH, 4FH – INT 21H). Из справки я понял, вроде бы по принципу «логической И». Относительно папок, скрытых и систем...
Вопрос № 132803: Здравствуйте! Начал знакомиться с ассемблированием под Windows и на первых же шагах не все понятно. Буду рассуждать на примере все того же MessageBox. Ниже я буду приводить фрагменты кода, чтобы не громоздить. Также нужно сказать, что все вариант...
Вопрос № 132900: Здравствуйте, уважаемые. Вопрос такой: с какой книги стоит начать (или с каких), чтобы изучать с нуля ассемблер. Действительно ли рекламируемая на портале книжка так хороша? Желательно, чтобы все шло от простого к сложному и объяснялось как можно...

Вопрос № 132.571
Здраствуйте уважаемые! Я уже зазавал данный вопрос, получил ответ, спасибо всем, но ответ для меня не подъёмный. Решил сам написать более проще но получилось так, что прога не работает(зависает).
Задача следующая: Составить программу сортировки элементов массива из 20 целых чисел, которая распологает четные числа больше 100 в одной, а меньше 100 в другой области памяти. Ниже проведён листинг. Подскажите в чём проблема!

Приложение:

Отправлен: 17.04.2008, 08:40
Вопрос задал: Ram (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 3)

Отвечает: Airyashov
Здравствуйте, Ram!
подумайте над эти кодом, если элемент больше 100, то
men: mov al, [si]
cmp al, 100
ja men
и над этим
cmp al, al
jpo men
вы крутитесь на одном элементе
Ответ отправил: Airyashov (статус: 4-ый класс)
Ответ отправлен: 17.04.2008, 08:46
Оценка за ответ: 5
Комментарий оценки:
Спасибо большое за подсказку! Я даже об этом не подумал! Я в остальном код правильный?

Отвечает: Zetasm
Здравствуйте, Ram!

Мой вариант в приложении.
Надеюсь я правильно понял задачу.

Приложение:

Ответ отправил: Zetasm (статус: 2-ой класс)
Ответ отправлен: 17.04.2008, 15:10
Оценка за ответ: 5
Комментарий оценки:
Спасибо большое! К сожалению нет знаний в трассировки, но надеюсь правильно!


Вопрос № 132.683
Здравствуйте, уважаемые эксперты!
Пишет Антон, из Харькова.
Я сейчас я на 19-20 главе книги Олега Калашникова "Ассемблер - это просто".
У меня возникло неколько впоросов, насчет которых в книге умолчано или россказано мало. Помогите мне пожалуйста!
Буду очень вам благодарен.
Извините, если задаю вопросы, которые рассматриваются в книге где-то дальше или уже задовались на rusfaqe. Я вроде пролистал следующие главы, но ответов не нашел, а rusfaq.. Просмотреть несколько тысяч вопросов - нереально.
1.В начале книги, когда первый раз упоминается о поведении стэка при вызове прерываний, написанно, что при вызове прерываний в стеке сохраняются только регистры ss и sp Т.к. далее в книге несколько раз говорится о том, что сохраняются толлько регистры cs,ip и флаги, то мне кажется, что это опечатка. Но если в стеке сохраняются только cs, ip и флаги, то как же потом, при возврате из прерывания, процессор определяет адрес стека, т.е. ss и sp? Или же у прерываний нет своего стека и они используют стек программы, из которой они вызываются?

2.На сколько я понял, стэк увеличивается с конца, и считывает информацию, ноходящююся по адресу sp, а записывает - выше. Но при запуске программы sp уже pавен FFFEh. Значит в нем уже записан байт? Что там записано, и зачем? 00, специально, чтобы можно было завершать программу с помощью ret?

3.Как можно узнать, какая команда сколько тактов выполняется? Не считать же самому, запуская миллиардные циклы и меряя время?

4.Не помню уже точно в какой главе, в одном из примеров для копирования содержимого одного регистра в другой использовался стек: push cs pop es (не помню уже какие там были регистры). Это было показано просто как вариант, или этот способ быстрее чем использование mov? Для занесения числа в сегментный регистр да, но в этом случае не лучше ли просто mov es,cs?

5.Где находится память для регистров? В кэше процессора?

6.Вызывая прерывание, мы передаем управление по его адресу. Значит все прерывания с загрузкой DOS загружаются в оперативную память? Но их же много! А как же прерывания BIOS? Ведь они-то не могут находиться в ОЗУ, они ж на то и BIOS, чтобы быть в биосе! А мы вызываем их также, как и прерывания DOS, через таблицу векторов прерываний, где указаны адреса ОЗУ..

7.Есть ли прерывания в виндоус? Прерывание 21h, как и остальный прерывания доса, которые я проверял, в моем Windows XP не работают. Но ведь прерывания биоса должны остаться? И какой тогда адрес таблицы векторов прерываний в виндоус?

8.Как написанно в книге и видно в отладчике, стек находится в конце сегмента. Но ведь при написании программы под модель памяти TINY, размер сегмента программы - 64 килобайта. Значит любая программа, даже килобайтная, будет занимать 64 килобайта оперативной памяти? Или начало стека/размер сегмента можно как-то изменять? А в модели памяти FLAT размер сегмента вообще 4 гигабайта!

9.Как реализуется многозадачность процессоров? Получается, что процессор выполняет по очереди команды всех запущенных программ? Но для этого, переключаясь на выполнение следующей программы, процессор должен сохранить регистры и флаги, так ведь? Но сохранения регистров cs и ip, как при вызове прерываний, ведь не достаточно! Изменяться ведь могут все регистры, и стек у разных программ разный.. Или многозадачность реализуется не процессорами, а операционными системами?

10.В нескольких местах в книге мы проверяем равно ли ax нулю так: or ax,ax. Что это значит? В книге объяснений я не нашел. Ведь or это логическая команда и в данном случае по идее ничего делать не должна..

11.В книге встречается: string db '...' . Что значит здесь "db"? Мы объявляли переменные dd (define double word) и dw (define word). По идее, аналогии db должно означать define byte, но мы то записываем туда никак не байт!

12.В книге на странице 223, глава 19, есть такая вырезка из программы:

Create_dirmess dw Create_dirmess1
db 'Создание каталога ---> '
Create_dirmess1 equ $-Create_dirmess-2

Create_dirmess1 должно быть равно длине строки.. Но зачем здесь еще и -2? Вроде же Create_dirmess указывает не на начало строки а на 2 байта, которые мы здесь вычитаем еще раз.. Разве это не равносильно:

Create_dirmess dw Create_dirmess1-Create_dirmess-2
db 'Создание каталога ---> '
Create_dirmess1 equ $


13.В главе 17 написан способ определения адреса выполняемого кода:

call label1
label1:
pop ax

Вычитанием из полученного адреса смещения offset label находится размер кода, находящегося в памяти перед данной меткой. И дальше написано, что объяснение, почему call label1 будет не константой, будет дальше. Но полистав книгу дальше, объяснений я не нашел. Росскажите пожалуйста, почему так? Ведь "call label1" при ассемблировании должен заменяться на "call адрес".
Пожалуйста, напишите поподробнее о перемещаемом/неперемещаемом коде.
14.В кнгие написано, что прии помощи вируса можно физически сломать монитор или винчестер. Росскажите пажалуйста, как? Просто я предпологал, что этого сделать нельзя.. Разумеется, делать этого я никому не буду, но просто интерестно.
15.При написании программ даже на ассемблере, мы постоянно "пляшем под ОС".. Например, можо как-нибудь вывести точку на экран, не прибегая к помощи ОС? Ведь копируя символы в видеобуфер мы тоже используем функции ОС.. Вывод такой из того, что в виндоус этот метод не работает, во всяком случае с такими адресами видеостраниц. Кстати, попутный вопрос: какой самый быстрый способ вывода символа/точки на экран в виндоус?

16. Что такое оверлей программы?
17. Физические адреса, виртуальные адреса, относительные виртуальные адреса.. что есть что? У относительных вроде как начало отсчета от базового адреса загрузки, но откуда ж можно еще отсчитывать? От нуля?

Зараннее спасибо!
Отправлен: 17.04.2008, 18:04
Вопрос задал: Антон Колоколов (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Лысков Игорь Витальевич
Здравствуйте, Антон Колоколов!
1) Совершенно верно, "у прерываний нет своего стека и они используют стек программы, из которой они вызываются".
Первая фраза ошибочна: регистры SS и SP и определяют стек, а не сохраняются в неизвестно каком "стеке"
2) За то, чему будет равен SP при запуске программы, отвечает система, конкретно загрузчик программ.
Причем, совсем не обязательно там будет FFFEh. Если в программе явно задан стек,
то вершина стека будет соответственно.
Это для программ, у которых не задан стек, например, для формата COM, загрузчик задает вершину стека как FFFEh.
И совсем не обязательно там будет 0. Хотя вполне возможно, что загрузчик пишет 0 в вершину...
3) Начиная с 586 есть такая замечательная команда - RDTSC, которая возвращает в EDX:EAX число тиков процессора, начиная со сброса
Получив разницу между моментами до и после, имеем число тиков работы.
4) Mov, конечно, быстрее, но для сегментного регистра нельзя писать mov es,cs.
Сегментный регистр можно грузить из памяти, регистра общего назначения, ну и, восстановив из стека.
5) Регистры - это сверхбыстродействующая память, которая физически размещена в процессоре.
Кэш, кстати тоже, аналогично. Но это разные вещи. Они не пересекаются.
К слову сказать, у сегментных регистров тоже есть свой кэш...Но это отдельный разговор. Вообще, внутренняя структура процессора весьма сложна и непосвященных покрыта мраком.
6)Немного не так. В памяти есть таблица прерываний (по адресу N*4 лежит длинный указатель на какой-то адрес в памяти.
И не важно, где этот адрес, в области ОЗУ или ПЗУ. Причем по этому адресу уже должна находиться корректная программа по отработке указанного прерывания.
Прерываний не так уж много, максимум 256...:)
7) Windows работает в защищенном режиме процессора, в котором прерывания организованы несколько по иному. Но они, конечно же, есть! Сначала надо разобраться с защищенным режимом...:)
8) Как я уже говорил, если для программы не задан явно стек, то загрузчик загружает регистр вершины стека величиной FFFEh.
В противном случае - исходя из заданного.
Модель FLAT используется в программах Windows-а, где для стека отводится отдельный сегмент.
9) Многозадачность обеспечивается самим процессором. Задача оси - подготовить соответствующие таблицы, загрузить их адреса в соответствующие регистры...
Кстати, при переключении задач, сохраняется буквально все...
10) За исключением установки флагов :) Если регистр нулевой, то взведется флаг Z
11) Мы записывает последовательность байтов.
Кстати, мы же можем записать dw 1234h,5678h ?
12) $ указывает на адрес за последним байтом строки
Create_dirmess - адрес слова перед строкой
Их разница - длина строки плюс два байта слова перед строкой.
Но нам интересна длина самой строки, поэтому длину слова (2 байта мы и отнимаем)
13) Наверное, имеется в виду, что приведенный код, где бы он не находился, даст в регистре ax адрес label1. Далее мы можем использовать его по своему усмотрению.
Очень часто подобный код используется программами, которые "приклеиваюся" к другим (например, вирусами). Из-за того, что длина основной программы заранее не известна,
то адрес начала "приклееной" программы так и определяется.
Все расчеты ведутся относительно полученного адреса. Т.о. программа работает с любого адреса, т.е. является перемещаемой.
А неперемещаемая программа работает только в определенных адресах.
К слову сказать, программы в формате EXE могут загрузиться в любой сегмент, но после того,
как они загрузились и настроились, их перемещать уже нельзя...
14) Путем некорректной работы с портами.
15) В ДОС-е да. Копируя символы в видеобуфер, мы не не используем функции ОС,
сами пишем...
В Windows надо пользоваться функциями, что предоставляет система, напрямую писать она не даст. Насчет функций, по-моему, пока рановато задоваться вопросом :)
Сначала надо разобраться с принципом функционирования программ под Windows.
Функции придут потом...
16) Оверлей означает загрузку в одно и то же место разных модулей. Для экономии места, так сказать.
17) Физический адрес - это реальный адрес памяти, в которой что-то там происходит.
Виртуальный - (речь идет о системах типа Windows, в чистом ДОС-е это понятие не имеет смысла) это адрес который известен программе.
Программа знает, что работает в одном адресе, хотя физически совершенно в другом.
Причем, этот физический адрес может меняться! Например, память, занятая программой была сброшена в swap, ее физическая память была отдана другой программе, а потом она же опять была подгружена, но уже в другой физический адрес! При этом виртуальный адрес остался тем же!
Процессор в защищенном режиме обладает мощным механизмом трансляции адресов, который обеспечивает четкую работу с памятью.
Чтобы разобраться во всем этом, надо изучить защищенный режим работы процессора...В двух словах и не скажешь.
А вот относительных виртуальных адресов ничего не скажу...
---------
Удачи!
Ответ отправил: Лысков Игорь Витальевич (статус: Специалист)
Ответ отправлен: 17.04.2008, 19:51

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

2)При выходе из программы с помощью команды RET или при неправильном возращении из подпрограмм при нарушении стека, управление передается по адресу CS:0000 в префикс программы(стандартный, который подставляет загрузчик), а там стоит команда INT 20h(т.е. при нарушении стека произойдет завершение программы). Все сказанное справедливо для СОМ-файлов.
3)Качаете masm32 v9, после установки в папке HELP будет файл Opcodes.hlp, в нем можно найти такую информацию, см. приложение.
4)Сожалею, но команды такого типа(mov sr,sr) нет, есть только mov sr,r(r,sr) (2-а байта) | mov sr, m(m,sr) (2-а байта + адрес). Таким образом вместо использования 4-х байт памяти можно обойтись только 2-я байтами (если использовать команды работы со стеком). Правда команды типа mov sr,r(r,sr) выполняются за 2-а такта, а команды mov sr, m(m,sr) и push sr(pop sr)за 8-мь тактов.
5)Для хранения одного би та памяти используются так называемые триггера имеющие 2-стабильных состояния 1 или 0 и маленьким временем перехода из одного состояния в другое.Один регистр процессора представляет собой совокупность таких тригеров и расположены они в самом процессоре.
6)Прерывания и Bios и Dos находятся в памяти по разным адресам и сегментам. При запуске компьютера Bios копирует сама себя в верхнюю область памяти(в сегмент 0F000h), а в таблицу прерываний записует адреса точек входа в сами обработчики. Dos поступает аналогично только в другом сегменте.
7)При запуске windows процессор переводится в защищенный режим и один из пунктов перевода есть создание глобальной таблицы исключений, аналог прерываний dos(но это разные вещи и в двух словах на этот пункт трудно ответить).
8)Когда создается программа с моделью памяти TINY на диск будет записано только код начиная с адреса 100h и данные. При запуске программы в первые 256 байт сегмента будет записан стандартный префикс программы, утстановится регистр SP и в стек запишется значение 0000h, а также для программы будет отдана вся дуступная память, т.е. помеченная как свободная. О модели FLAT, тоже можно говорить очень долго т.к. это связано с огранизацией памяти и адресации в защищенном режиме.
13)Дельта-переход. Компилятор команду типа CALL Label Near создает как относительный переход:
E8 0003 call LABELA
E8 0000 CALL LABELA
58 LABELA: pop ax

А в момент выполнения в стек записывается реальный адрес и этот адрес не известен, но есть возможность посчитать всё остальное относительно этого адреса и потом использовать вызовы типа CALL EBX(с зарание подсчитанным значением).
14)Если Вы не правильно перепрограммируете контролер видеокарты - можете начать собирать деньги на то и другое.
16)Оверлей представляет собой динамически загружаемый модуль, который может быть загружен во время работы программы, выполнен и потом выгружен из памяти, а на его место загруже н новый.

Удачи!

Приложение:

---------
И только наступив на грабли мы приобретаем драгоценный опыт!

Ответ отправил: Зенченко Константин Николаевич (статус: Профессионал)
Украина, Киев
Тел.: +380958380164
Адрес: Украина г.Киев
----
Ответ отправлен: 17.04.2008, 21:11


Вопрос № 132.762
Здравствуйте, Уважаемые!!!
Не поможете ли Вы составить следующую программку: «Написать резидентную программу на языке ассемблера, при активизации программа должна выдать сообщение методом прямого обращения к видеобуферу. В программе использовать прерывание 44 и вывести сообщение «Resident».
Отправлен: 18.04.2008, 00:12
Вопрос задала: Alena De Lon (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Лысков Игорь Витальевич
Здравствуйте, Alena De Lon!
Программа в приложении.
Сам обработчик прерывания и его вызов находятся в одном модуле.

Приложение:

---------
Удачи!

Ответ отправил: Лысков Игорь Витальевич (статус: Специалист)
Ответ отправлен: 18.04.2008, 10:36
Оценка за ответ: 5
Комментарий оценки:
Спасибо!!!:-)


Вопрос № 132.780
Здравствуйте!
Объясните пожалуйста, по принципу какой логической операции работает маска на атрибуты при поиске файлов (функции 4EH, 4FH – INT 21H).
Из справки я понял, вроде бы по принципу «логической И». Относительно папок, скрытых и системных файлов так и получается. В приведенном примере, где маска равна 6, должны быть найдены: скрытые и/или системные и еще обычные – почему находятся и «только для чтения»? И даже если маску сделать равной 0 – «только для чтения» все равно находятся. Да и если рассуждать в принципе, то, как правило, у всех файлов установлен бит «архивный» - т.е. в примере маску надо было заполнить: 26H, однако оказывается достаточно и просто 6.
Напрашивается вывод, что лучше бы этой маски вообще бы не было (никакого толку), все равно каждый найденный файл приходится проверять на его атрибут по адресу +15H от начала DTA.

Приложение:

Отправлен: 18.04.2008, 07:02
Вопрос задал: Бартосик Феликс Михайлович (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Airyashov
Здравствуйте, Бартосик Феликс Михайлович!
в 4Eh
cx-атрибуты файла, биты 0,5 игнорируются, если 3 установлент все остальные игнорируются
Ответ отправил: Airyashov (статус: 4-ый класс)
Ответ отправлен: 18.04.2008, 09:01
Оценка за ответ: 5
Комментарий оценки:
Спасибо. А то я думал - что то путаю.

Отвечает: Лысков Игорь Витальевич
Здравствуйте, Бартосик Феликс Михайлович!
Да, действительно, так и есть...
Мне кажется, что логика в этом следующая:
Файлы без атрибутов, с атрибутами "архивный" и "только для чтения" являются
как бы файлами "общего назначения". Все они должны ВСЕГДА находиться поиском...
Поэтому эти биты и игнорируются поиском...
Другое дело, что атрибуты "архивный" и "только для чтения" могут быть использованы
для детализации свойств файла.
Атрибут "архивный" был задуман, как пометка, что файл сархивирован, т.е. где-то сохранен.
"Только для чтения" понятен из названия.
---------
Удачи!
Ответ отправил: Лысков Игорь Витальевич (статус: Специалист)
Ответ отправлен: 18.04.2008, 09:56
Оценка за ответ: 5
Комментарий оценки:
Спасибо Игорь Витальевич. Теперь все прояснилось.


Вопрос № 132.803
Здравствуйте!
Начал знакомиться с ассемблированием под Windows и на первых же шагах не все понятно. Буду рассуждать на примере все того же MessageBox. Ниже я буду приводить фрагменты кода, чтобы не громоздить. Также нужно сказать, что все варианты работают – просто хочу разобраться.

Первый вариант сделал, по книге Зубкова.
Т.е. в своем файле написал:
.model flat
…………………
include user32.inc,
в этой же папке находится файл user32.inc, в котором написано:
includelib C:MASM32LIBuser32.lib
extrn __imp__MessageBoxA@16:dword
MessageBox equ __imp__MessageBoxA@16

Второй вариант наверное более традиционный:
в своем файле написал:
.model flat, stdcall
………………
include C:MASM32INCLUDEuser32.inc
includelib C:MASM32LIBuser32.lib

Непонятности:
1) Не получается одновременно использовать свой собственный файл user32.inc (директивой include user32.inc) и, скажем готовый файл include C:MASM32INCLUDEwindows.inc который с разными константами -- так как для готовых файлов (windows.inc) необходимо использовать слово stdcall, для мною созданных (user32.inc) наоборот не нужно.
2) В файле C:MASM32LIBuser32.lib есть такие строки
MessageBoxA PROTO :DWORD,:DWORD,:DWORD,:DWORD
MessageBox equ <MessageBoxA>
Что такое PROTO? Когда MessageBoxA превращается в _MessageBoxA@16 (именно такую запись я нашел в user32.lib)? Чем __imp__MessageBoxA@16 лучше _MessageBoxA@16?
3) Где MessageBox возвращает результат нажатой кнопки? И что собой объявляют слова dword в строках:
extrn __imp__MessageBoxA@16:dword
MessageBoxA PROTO :DWORD,:DWORD,:DWORD,:DWORD

Отправлен: 18.04.2008, 11:09
Вопрос задал: Бартосик Феликс Михайлович (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Airyashov
Здравствуйте, Бартосик Феликс Михайлович!
3) В EAX результат
Ответ отправил: Airyashov (статус: 4-ый класс)
Ответ отправлен: 18.04.2008, 11:18
Оценка за ответ: 4
Комментарий оценки:
Спасибо - хоть с этим теперь понятно. Хотя, честно сказать, интуитивно я так и подумал почему то - что результат в EAX

Отвечает: Лысков Игорь Витальевич
Здравствуйте, Бартосик Феликс Михайлович!
2) Данный вопрос связан с COFF-форматом объектных файлов
Перед вызовом функций необходимо описать прототип PROTO, описывающий число и тип параметров.
имя с @ и числом - такое имя функция имеет в библиотеке импорта.
Число - общее число байт параметров (фактически, число параметров * 4)
__IMP__ - префикс имени слова (опять же из библиотеки импорта), в котором адрес функции в DLL-ке

Более подробно рекомендую посмотреть здесь
И, вообще, на всем сайте есть много чего интересного

---------
Удачи!
Ответ отправил: Лысков Игорь Витальевич (статус: Специалист)
Ответ отправлен: 21.04.2008, 19:53
Оценка за ответ: 5
Комментарий оценки:
Спасибо Игорь Витальевич! Кажется начало проясняться. На сайте Wasm.ru действительно много интересного - с удовольствием читаю.


Вопрос № 132.900
Здравствуйте, уважаемые.
Вопрос такой: с какой книги стоит начать (или с каких), чтобы изучать с нуля ассемблер. Действительно ли рекламируемая на портале книжка так хороша? Желательно, чтобы все шло от простого к сложному и объяснялось как можно более подробно и нонятно.
Имеется: небольшой опыт работы на Паскале и большое желание учиться дальше.
Отправлен: 18.04.2008, 23:06
Вопрос задал: Vitaliy (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

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

Смотрите приложение, именно так выглядит эта процедура в модуле DOS(а где паскаль?).
Я начинал с книги С.В.Зубкова(первaя книга которую я купил, сейчас их 7-мь) и только после того как стал экспертом портала по ассемблеру, купил книгу "Ассемблер это просто!". И смотрел на неё как человек уже что-то знающий. Книга хорошая и полезная.

Самый лучший тренажер по языку программирования на портале- это быть экспером в этой области(посетители и модераторы Вас оценят), Вам приходят вопросы(лучший задачник) (учебников-задачников по ассемблеру нет, а любую задачу из учебника(любой язык) можно сделать на ассемблере, т.к. это ЯЗЫК процессора).
Удачи!

Приложение:

---------
И только наступив на грабли мы приобретаем драгоценный опыт!

Ответ отправил: Зенченко Константин Николаевич (статус: Профессионал)
Украина, Киев
Тел.: +380958380164
Адрес: Украина г.Киев
----
Ответ отправлен: 19.04.2008, 04:06
Оценка за ответ: 4


Вы имеете возможность оценить этот выпуск рассылки.
Нам очень важно Ваше мнение!
Оценить этот выпуск рассылки >>

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

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

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

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

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


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


© 2001-2008, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Техподдержка портала, тел.: +7 (926) 535-23-31
Хостинг: "Московский хостер"
Поддержка: "Московский дизайнер"
Авторские права | Реклама на портале

∙ Версия системы: 4.91 pre 5.0 RC1 от 13.04.2008

Яндекс Rambler's Top100
RusFAQ.ru | MosHoster.ru | MosDesigner.ru | RusIRC.ru
Kalashnikoff.ru | RadioLeader.ru | RusFUCK.ru

В избранное