Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Приглашаем принять участие в работе над нашей Wiki.
  • Наша рассылка: subscribe.ru, content.mail.ru и Google groups.
  • Есть желающие вести новостную ленту "В мире технологий"?
  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
   Начало   Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1] 2 3  Все   Вниз
  Печать  
Автор Тема: Вопросы новичков в Assembler'е  (Прочитано 19085 раз)
0 Пользователей и 1 Гость смотрят эту тему.
AntiPetya
Гость
« : 02-04-2007 00:41 » 

Здрасти сем ) не ну какбы я ВБ изучил немнога, ПХП тоже, ну и делфи шпрехаю , но боше сево хачу ассемблю знать .. скачал ужо многа учебникав, там ну ничо не панятно... может плохие качал. ненаю) наверна плохие)
вот..

ну обьясните мне пажалустаблин ну как мне после трёх лет привыкания к ПХП понять ета  Не надо:
mov чётотам
dw dsf 'sdf'
db asda 1
start
ends

(Это была просто отбалды набранная хня)

Очень просьба, чуть мне обьяснить как ВЫЫЫЫЫ начале учить асм и с чего начать, просто ну не пойму я сразу ети сегменты памяти, чо куда двигать чтобы екзешник работающий получался ))

асм  хочу учить патамучто это СИЛЬНО )) и патамучто ета мала весит всё)))) ну кароче идеально но сложно..
 А черт его знает...
вот..

всё высказал)

 Внимание! Говорит и показывает...

мене в мыло можно песать, на antipetya@bk.ru или в асю на 339991881 или ещё куданибуть) а, ещё в майлагент на маё мыло можна песать. RTFM

типа хелп пожалуйста)
 Флаг тебе в руки!
« Последнее редактирование: 08-04-2007 20:43 от RXL » Записан
Serg79
Команда клуба

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 02-04-2007 05:49 » 

AntiPetya, Ты на русском языке писать умеешь, или нет?
Записан
RXL
Технический
Администратор

ru
Online Online
Пол: Мужской

WWW
« Ответ #2 : 02-04-2007 08:50 » 

AntiPetya, присоединяюсь к замечанию: пиши по-русски!

Вообще, начинать изучать ассемблер нужно не с "mov чётотам", а с архитектуры процессора.  Ведь на ассемблере ты фактически пишешь именно инструкции процессора, а не абстрактные команды некого языка. Т.ч. первым делом посети developer.intel.com и скачай доки по архитектуре и командам. В принципе, все это должно быть изложено в "учебнике по ассемблеру".

Кстати, к слову "ассемблер" нужно добавлять название процессора или семейства процессоров - их много, они сильно отличаются архитектурно и в написаниях мнемоник! В твоем случае это семейство x86.

А теперь о побудительной стороне.
Возможность написания более компактного и более быстрого кода компенсируется множеством других факторов: сложностью планирования и контроля за используемой памятью и регистрами, сложностью отладки и поиска ошибок, а также необходимостью отлично знать архитектуру целевого процессора и вариации в моделях. Еще раз подчеркну, что это возможности, а не гарантированные плюсы, за то негативные факторы - гарантированы. Как следствие, снижается КПД программиста по сравнению с языками верхнего уровня.
Теперь ты попрежнему хочешь учиться или запал пропал?
« Последнее редактирование: 02-04-2007 08:52 от RXL » Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.

Переводы технических терминов.
AntiPetya
Гость
« Ответ #3 : 02-04-2007 12:19 » 

Хочу всётаки дальше изучать .. просто у меня вот как:

я например PHP сначала вообще не понимал , потом вот верите нет,
проснулся одним прекрастным днём, установил денвер, попробовал выполнить print "ченибуть";
Сматрю - выполнилось, потом смотрю -переменные обьявлять можно,
а на данный момент PHP я знаю достаточно, я так думаю, )

Вот хочу также с ассемблером)

Ну послушаюсь вас, сейчасже начну изучать структуру и команды для процессора,

кстате помоему с ассемблером очень плотная связь имеет утилита в виндовсе "DEBUG.exe"  .. сегменты памяти там смотреть всякие)

Я даж в ней ничо пока не понимаю,.. тока получилось несколько команд выполинть по образцу из учебника...

А вобще, я думаю , учебники пишут этакие батьки уже, и думают - вроде так понятно обьяснил, а на самом деле новичку  - ето блин эверест целый )
« Последнее редактирование: 02-04-2007 13:19 от AntiPetya » Записан
AntiPetya
Гость
« Ответ #4 : 02-04-2007 13:11 » 

ну извините, я просто так привык писать , даже бывает в школе в сочинениях пишу  "ЕТА" , или "НЕЧЕГА" )) больше не буду)
Записан
Tuborg
Команда клуба

ee
Offline Offline

« Ответ #5 : 02-04-2007 13:13 » 

Архитектура процессора - это только звучит страшно. На самом деле это и есть учебник по ассемблеру. Начинай с ассемблера для DOS. Разберись с моделями памяти и сегментной адресацией, дальше - как по маслу.
Записан
AntiPetya
Гость
« Ответ #6 : 02-04-2007 13:25 » 

Архитектура процессора - это только звучит страшно. На самом деле это и есть учебник по ассемблеру. Начинай с ассемблера для DOS. Разберись с моделями памяти и сегментной адресацией, дальше - как по маслу.

Спасиб, вот это я и хотел услышать, после чего ассемблер станет понятным а не иностранным языком.
))
если ну очень не лень, можно мне пожалуста мне и ссылочку на качественный учебник вот по этому:
"Разберись с моделями памяти и сегментной адресацией"
Буду очень благадарен)
Записан
RXL
Технический
Администратор

ru
Online Online
Пол: Мужской

WWW
« Ответ #7 : 02-04-2007 13:41 » 

AntiPetya, чем мучить себя debug.exe (наигавеннейший отладчик из тех, что я видел), поставь себе BC3++ - в комплекте идут tasm и отладчик (tdebug). Взять можно здесь: http://club.shelek.ru/viewfiles.php?id=6
Если нужно будет под винду, сгодится отладчик от MS VS или Borland.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.

Переводы технических терминов.
AntiPetya
Гость
« Ответ #8 : 02-04-2007 13:45 » 

Т.ч. первым делом посети developer.intel.com и скачай доки по архитектуре и командам.
ненашол( там ссылок стока, а я в английском не ас (
Записан
RXL
Технический
Администратор

ru
Online Online
Пол: Мужской

WWW
« Ответ #9 : 02-04-2007 13:46 » 

Поройся в книгах: http://www.ozon.ru/context/catalog/id/1070765/

Учи английский - большая часть документации на нем и идет.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.

Переводы технических терминов.
AntiPetya
Гость
« Ответ #10 : 03-04-2007 10:04 » 

Вчера скачал справочник спецально для таких как я - нелюбящих толсте книжки - там на двух страницах обьяснялось чо да как - я понял всё , кул. патом понял , как двигать значения в памяти, почти ) понял что такое push , дошло дело до компилирования, а учебник учит ассемблеру  для win32 и для компиляции нужен TASM,
я скачал его , там написано как кампилить, но у меня тока ети файлы создались:
sample.lst
sample.obj
sample.map

из sample.asm
а мне нужен исполняемый((
Вот код программы:
ну её не я делал, но я там всё понял чо зачем ))
Код:
.386
.model flat

extrn ExitProcess:PROC
extrn MessageBoxA:PROC

.data

Ttl db "First ASSEMBLER program",0h
Msg db 'Hello, World!!!!',0h

.code

start:
     push 0h
         push offset Msg
         push offset Ttl
         push 0h
         call MessageBoxA
         push 0h
         call ExitProcess
end    start


как в екзешник то перекомпелировать?

Записан
Tuborg
Команда клуба

ee
Offline Offline

« Ответ #11 : 03-04-2007 13:27 » 

В процессе получения исполняемого файла есть 2 основных этапа: 1) компиляция (в твоём случае получение obj из asm) 2) Линковка (получение из кучи obj'ов одного exe). Полученный obj-файл (объектник его ещё называют) скорми программе tlink.exe получишь искомый экзешник. Зря взялся за асм под Win32 там по сути просто вызов различных API вызовов с передачей им параметров, самого асма и не увидишь. Правда чтобы компилить под ДОС, тебе надо иметь машину с установленным DOSом или на крайняк VMWare =). Винда просто не даст выполниться многим хитрым вещам в асме (вызов и перехват прерываний, перепрограммирование контроллеров таймера и жёсткого диска) для этого надо в проге будет переходить в режим ядра и писать по сути - драйвер. А на этапе изучения асма, это всё только усложнит само понимание ассемблера.
Записан
AntiPetya
Гость
« Ответ #12 : 05-04-2007 11:53 » 

А мне асм в винду и нужен, вирусы писать да мож еще пригодиться для чего)
Записан
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #13 : 05-04-2007 12:13 » 

А мне асм в винду и нужен, вирусы писать да мож еще пригодиться для чего)
AntiPetya, Вирусы говориш Улыбаюсь Ню ню. Ты наверно точно правил не читал
Записан

Не будите спашяго дракона.
             Джаффар (Коша)
Алексей1153++
кот глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Златоуст, Россия Сообщений: 13


« Ответ #14 : 05-04-2007 13:04 » 

AntiPetya, уже вижу:  Бойтесь , люди, идёт новый вирус "Петя" !!!
 Приобретайте Антипетю...
Записан

AntiPetya
Гость
« Ответ #15 : 05-04-2007 20:26 » 

Ну и просто .интересно новый язык изучить...
кстате насчет компиляции...

tlnk'ом пользовался , да там библиотека нужна  вотэта import32.lib
Де её взять?

Я блин по все мпоисковикам искал... так либо каку выдают, либо TASM 5 0 а када скачаю, так там нет етай библеотеки, а без неё компилю - TLINK ошибку пишет что неизвестные типа штуки  - MessageBoxA и ExitProcess - вот кто под вин 32 работает в АСМе , (ну чтобы мой код, каторый выше я выложил =) ) вот чтобы его скомпилить... чем да как??? подскажите) пажалуста. )
Записан
AntiPetya
Гость
« Ответ #16 : 05-04-2007 20:29 » 

А мне асм в винду и нужен, вирусы писать да мож еще пригодиться для чего)
AntiPetya, Вирусы говориш Улыбаюсь Ню ню. Ты наверно точно правил не читал

неа, я на форумах никагда правила не читаю... ))) да и может хобана - чонить дельное написать смогу потом... вон например скачал прогу на АСМе - класс - кароче нада тебе например не весь зип архив с нета качать а тока один файл из него или несколько - ссылку пишеш и он тебе содержимое выдаёт, и всё отдельно можно скачать ... полезная вещь) я б прикрепил програмку, ток незнаю как тут у вас прикреплять, а на rapidshare.de - ой фу.... ненавижу!
Записан
AntiPetya
Гость
« Ответ #17 : 05-04-2007 20:37 » 

а да еще, :
     db - 1 байт
     dw - 2 байта - 1 слово
     dd - 4 байта - 2 слова
     dq - 8 байт - 4 слова
     dt - 10 байт
тоесть када я буду в память сувать значения, то нада я так понял указать с помощью db или dw или dd и т.д  - какого размера значение, засовываемое в память?

тоесть если я кладу значение обьемом 9 байт то надо dt делать?
я прально понял? .... и ответтьте пожалуйста на вопрос который вверх через одно находится сообщение .

Вот я ща узнаю ответы на ети два вопроса и всё.. ничё больше от жизни ненада)) ха
зарание спасиба
« Последнее редактирование: 05-04-2007 20:39 от AntiPetya » Записан
Tuborg
Команда клуба

ee
Offline Offline

« Ответ #18 : 06-04-2007 07:24 » 

1) lib. Ты весь тасм качаешь? там должно быть по крайней мере 3 папочки bin, include и lib. вот в папке lib лежит как раз тобой искомое.
2) 9 байт. Нет, ты понял не совсем правильно. db, dw, dd используются как адресация (через байт, если массив хочешь читать по-байтно, через слово, если массив хочешь читать по-словно и т.д.) а чтобы например задать константу 9 байтную пиши так: 
   my_const db 1,2,3,4,5,6,7,8,9

в памяти это будет выглядеть так: 01 02 03 04 05 06 07 08 09

если же ты задашь через dd, например:
   my_const dd 1,2,3,4,5,6,7,8,9   
то в памяти будут хранится следующие значения (указываю перевёрнутое значение, а не как на самом деле хранится в памяти)  00 00 00 01   00 00 00 02  00 00 00 03  00 00 00 04  00 00 00 05 и т.д.

  вообще найди например Зубков С.В. "Assembler. Язык неограниченных возможностей". Там всё обстоятельно рассказано с азов под DOS и до Винды с Юниксом.
« Последнее редактирование: 06-04-2007 07:28 от Tuborg » Записан
AntiPetya
Гость
« Ответ #19 : 06-04-2007 09:53 » 

Спасиб , очень понятно обьяснил .. круто.. ) ток вот насчёт библиотеки... ет я ж не дурак.. знаю что там ДОЛЖНА быть (в lib) эта библиотека а её блин козы такой нету нигде((
Записан
Tuborg
Команда клуба

ee
Offline Offline

« Ответ #20 : 06-04-2007 12:55 » 

Попробуй найти Borland C 3.1 . Там полный TASM.
Записан
AntiPetya
Гость
« Ответ #21 : 06-04-2007 16:10 » 

Спасиб, всё уже.. на фтп нашол ... гы.. на диалапе качал 10 мегабайт (ТАСМ) 3 часа)), файл 100 кб качается 6-8 секунд а вот запрос к файлу идёт около минуты... какойто глючный фтп ))
всем спасиба
Записан
AntiPetya
Гость
« Ответ #22 : 06-04-2007 17:13 » 

Ёпрст!!!!!!!!!!!!!!

непашет!

екзешник получается но компилятор выдает ощибку ну и екзешник канешна тоже

Код:
Turbo Link  Version 1.6.71.0 Copyright (c) 1993,1996 Borland Internation
Error: Unresolved external 'MessageBoxA' referenced from module new.ASM
Error: Unresolved external 'ExitProcess' referenced from module new.ASM

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

В справочнике и в том и втом написано разное.. итак и сяк пробовал - нехочет блин, пользуюсь хелпом самого компилятора, так блин он тупой... написано -

C:\TASM\BIN\TLINK32 /Tpe /aa %1 %1 %1 C:\TASM\LIB\IMPORT32.LIB

(эт батник)

каторый нехрена не работает!!! ааааааааааааа! палево!

тупые компиляторы...

неужели блин я так и несмогу скомпилировать этут тупую простейшую фичу "Hello world!!!"


блин СТЫДНА)))
Записан
AntiPetya
Гость
« Ответ #23 : 06-04-2007 17:16 » 

Нада придумать такое, чтобы жмёшь "Обзор..." - находиш sdfsdfsdfs.asm , жмёш "Do it!" и чтобы всё готово было! , ужОс
Записан
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #24 : 06-04-2007 20:03 » 

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

Цитата
Error: Unresolved external 'MessageBoxA' referenced from module new.ASM
Error: Unresolved external 'ExitProcess' referenced from module new.ASM
Эти ошибки говорят о том, что при линковке не подключена одна из основных библиотек. В которой описаны функции MessageBoxA, ExitProcess.

Цитата

Нада придумать такое, чтобы жмёшь "Обзор..." - находиш sdfsdfsdfs.asm , жмёш "Do it!" и чтобы всё готово было! , ужОс
Ты родился слишком рано.  Искуственный интелект (Artificial Intelligence: AI) еше не был изобретен. Улыбаюсь
Записан

Не будите спашяго дракона.
             Джаффар (Коша)
AntiPetya
Гость
« Ответ #25 : 06-04-2007 20:44 » 

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

Цитата
Error: Unresolved external 'MessageBoxA' referenced from module new.ASM
Error: Unresolved external 'ExitProcess' referenced from module new.ASM
Эти ошибки говорят о том, что при линковке не подключена одна из основных библиотек. В которой описаны функции MessageBoxA, ExitProcess.

Цитата

Нада придумать такое, чтобы жмёшь "Обзор..." - находиш sdfsdfsdfs.asm , жмёш "Do it!" и чтобы всё готово было! , ужОс
Ты родился слишком рано.  Искуственный интелект (Artificial Intelligence: AI) еше не был изобретен. Улыбаюсь


а разве я сказал что эти ошибки я не понимаю?Не понял

я их отлично понял, просто я подумал ... если я у опытных то спрашиваю.. то вы наверно сразу поймёте...

у меня фишка в чём, этаа библиотека не подключается((

если в параметре при компиляции указать неправильный путь, то компилятор орёт что типа нету там библиотеки, а если правильный путь до import32.lib то орёт что это неправильный OBJ файл... вот это вот как опнять я уже не знаю... логика левая )
Записан
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #26 : 06-04-2007 20:54 » 

По своему опыту могу сказать, что как правило библиотеки подключаются через опции линковшика. Так верно для С/С++. Просмотри в хелпе линковшика как это делать. Например для gcc опция -I. И команда на линковку будет выглядеть примерно так
Цитата
gcc -I  C:\TASM\LIB\IMPORT32.LIB ............


Offtopic:

AntiPetya, Нескромный вопрос: Твой опыт работы в программировании? Ассемблер это твой первый язык программирования из универсальных?
Просто как правило программирование учат с более простых языков для понимания. Например Паскаль.
Поставлю в угол.
Записан

Не будите спашяго дракона.
             Джаффар (Коша)
AntiPetya
Гость
« Ответ #27 : 06-04-2007 20:59 » 

Ну я бейсик сначала в школе, патом интересна стало, делфи, визуал бэйсик, терь вот еще и PHP  знаю... даже JavaScript ы)) ну из всех этих PHP я знаю отлично., да насчёт параметра для задания пути к библиотеке -
вот в том то и дело - нету параметра - там их просто в тупую через запятую указывать нада ,

и тамм написана в каком порядке, а я его междупрочем Соблюдал )

Syntax: TLINK32 objfiles, exefile, mapfile, libfiles, deffile, resfiles

я делал: tlink32 new.obj,new.exe,new.map,C:\TASM\LIB\IMPORT32.lib

и вместо запятых пробелы пробовал...

непомагает(((( Здесь была моя ладья...  А черт его знает...
« Последнее редактирование: 06-04-2007 21:04 от AntiPetya » Записан
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #28 : 06-04-2007 21:06 » 

Набери
Код:
tlink /help >>demo.txt

Может быть
Код:
tlink /? >>demo.txt

У тебя должен появится в каталоге файл demo.txt  с Help по линковшику. Приатач его сюда. Я просматрю
Записан

Не будите спашяго дракона.
             Джаффар (Коша)
AntiPetya
Гость
« Ответ #29 : 06-04-2007 21:09 » 

ой... а чо TASM'овские файлы можно в gcc компилить в екзешки?Не понял


если да то мне ж блин просто комп перезагрузить  и линуху запустить))
Записан
Страниц: [1] 2 3  Все   Вверх
  Печать  
 

Powered by SMF 1.1.16 | SMF © 2011, Simple Machines