professor
15.4.2008, 15:40
Напала на мене дурка - вивчити те, чого так і не змогли мене навчити в універі, а саме - асм.
Ну себто вчились ми на такому собі середовищі склепаному в турбовіжині, схожому чимось на трубопаскакаль... І ще там була система макросів, для початку проги, для кінця проги... Для інпуту-аутпуту... Може воно то було і класно, чисто програмити зручніше, але! Який тоді понт взагалі в тому асемблері? Зразу вже тоді треба було на високий рівень, до паскаля-сіплюсів, і без ніяких. Про переривання нам ніхто розказати не удосужився, і через ті макроси в мене було дивне відчуття, що чогось я таки не довчив, чогось бракує. В результаті натикаючись десь на асмовий код, я навіть не намагався в ньому розчехлитись...
А слабо з нуля ком-програмку в хекс-редакторі накидати? Мені було слабо) Но! Тепер я знаю про переривання! Тепер я знаю про особливості адресації в ком-програмах! І все це за один вечір! Я тепер навіть при бажанні можу без транслятора мінімальні проги писати)))
Вердикт - нафік викинути з універського курсу середовище Черняхівського.
professor
15.4.2008, 15:42
п.с. Ну може не середовище, а тільки знамените libmacro
Мені здається, що ти не зовсім правий. Так як в універі на прикладній готують, так би мовити "чистих" софтверників, то переривання і решта подібних речей, які мають більше відношення до заліза, нам не викладали, для того треба іти в політех, там і "залізо вчать"

А ми вчили асемблер тільки для того, щоб оптимізувати деякі обчислення, чисто математичні, для того переривань не треба. проблема в тому, що за один семестр, маючи одну пару на тиждень навіть то нормально вивчити важко. Тільки ази, які потім і так забудуться без практики.
Як на мене той курс зараз не актуальний і не відображає потребу ринку.
П.С. Єдине, що мені закарбувалося з того курсу - це то, що перевірка типу "не рівне" працює в чотири рази швидше ніж перевірка на "рівне"
professor
15.4.2008, 16:05
ЦИТАТА(Pegasus @ 15.4.2008, 16:53)

Мені здається, що ти не зовсім правий. Так як в універі на прикладній готують, так би мовити "чистих" софтверників, то переривання і решта подібних речей, які мають більше відношення до заліза, нам не викладали, для того треба іти в політех, там і "залізо вчать"

А ми вчили асемблер тільки для того, щоб оптимізувати деякі обчислення, чисто математичні, для того переривань не треба. проблема в тому, що за один семестр, маючи одну пару на тиждень навіть то нормально вивчити важко. Тільки ази, які потім і так забудуться без практики.
Як на мене той курс зараз не актуальний і не відображає потребу ринку.
П.С. Єдине, що мені закарбувалося з того курсу - це то, що перевірка типу "не рівне" працює в чотири рази швидше ніж перевірка на "рівне"

На рахунок переривань ти неправий. По меншій мірі для цілісності картини писати IO на асмі треба теж через переривання.
І щодо оптимізації. Ти знаєш, як написати асемблерну вставку в паскалі чи на сях? я не про синтаксис питаю, а про то, як склеїти їх з високорівневим кодом. Тебе вчили, що приходить зі стеком в процедуру? тебе вчили, як правильно повертати результати? Та нас навіть засовувати реєстри в стек не навчили - не те що підпрограма, якийсь чуть складніший цикл на асмі це був "вищий пілотаж" (с) Дудзяний
ІО - це залізо, ми реально ІО тільки для запису в файли використовували(я не про асемблер а вцілому) і ціллю було не саме ІО, а просто в файл треба було писати;) Це в політесі на домашнє завдання дають свою файлову систему написати

Це на рахунок переривань.
На рахунок вставок, тоді знав, ну принаймі з asm....end; якось так в Delphi бавився

І точно пам'ятаю, що хтось там заікався, що на старших курсах щось оптимізували і використовували в Delphi асемблерні вкраплення.
Про процедури і стек, ТОЧНО про то розказували, але не показували і ти далі мене не розумієш, нам асемблер подавали ТІЛЬКИ для оптимізації обрахунків, все навчання в універі - це обрахунки і їх оптимізація і асемблер не виняток

Типу на Delphi ми щось концептуально інше робили???
PUSH AX - хіба це не засуває реєстр в стек?
П.С. якщо твій пост іде прямо за постом на який ти відповідаєш, цитувати не треба
Нехай Професор попробує вклепати асемблерну вставку в джава код або в сі-шрапний, і якщо це можливо - запостає як це робиться.
А якщо такого не можна, то і нема про що говорити. Дельфа і так вже здохла.
А на Бога Програмування наїжджати... ууу... це зле.
professor
15.4.2008, 16:52
А про команди pusha/popa і розширення *aw, *ad ти чув?
Щодо io - тут ти не праф) іо це також ввід-вивід на клавіатуру, що ми робили макросами, і для чого є відповідні переривання (чув про 21е?

)
professor
15.4.2008, 16:56
ЦИТАТА(TIGER @ 15.4.2008, 17:51)

Нехай Професор попробує вклепати асемблерну вставку в джава код або в сі-шрапний, і якщо це можливо - запостає як це робиться.
А якщо такого не можна, то і нема про що говорити. Дельфа і так вже здохла.
А на Бога Програмування наїжджати... ууу... це зле.

По перше. Дельфа здохла, але плюси живі. Там то використовується.
По друге. Асм потрібний не тільки для програмування, а ше і для дебагу.
Щодо шарпу і джави - там це неможливо (учи матчасть, неможливо, патаму шо неможливо взагалі).
П.с. На шарпі є спеціальний ассемблер, так званий ilasm, він не надто вискорівневий, якшо дуже приспічить, можна писати на ньому.
ІО пов"язане з клавою, до нас має таке саме відношення як ІО пов"язани з файлами

для нас - це ЗАСІБ, а НЕ МЕТА!!!!!! Так, можна повчити засоби якими користуєшся, для загального розвитку, але це не обов"язков, згідний?

Скільки разів тобі прийшлось на роботі розбиратись з низькорівневим записом у файл, чи низькорівневим опрацьовуванням клавіатури?
professor
15.4.2008, 17:05
Та ніскільки... Просто той лібмакро забирав відчуття цілісності. От дивися. Ти наклепав прогу на асмі з тою макролібою. Щось її пережувало, і утворилось якесь файло, яке запускаєш, і воно щось робить (ну або не робить, то вже залежно від кривизни рук). Звідки воно взялося, як воно працює?...
А подебагати таку прогу? то-то же... А якщо ти пишеш всю прогу від початку до кінця, якщо ти розумієш кожен байт бінарника - звідки він взявся, як він буде працювати, і взагалі нафіга він там, то зовсім інша історія. Імхо це дуже сильно помагає догнати роботу компа.
То про що ти кажеш, неможливо викласти за семестровий курс, коли одна пара на тиждень.
professor
15.4.2008, 17:14
Я розгріб це за один вечір, хоча останній раз стикався з асемблером на першому курсі.
Думаю, на те, щоб то всьо хоча б на пальцях пояснити пішла б пара, максимум дві.
Якби тоді так зробили, я б зараз ставився до асму геть по іншому.
Я вже вище писав, що на пальцях все-таки пояснили, я наприклад то пам"ятаю

Просто дехто не слухав
professor
15.4.2008, 17:39
Слухав я думаю, не гірше за тебе. Про переривання ніфіга не пояснювали. От то мені і не сподобалось...
Але як показав досвід, тобі то і так не знадобилось

А "елетрони не можуть помилятися"
professor
15.4.2008, 17:42
Ну чекай... Не все ж життя мені бізнес-логіку під аспом писати. Рости треба... Причому інколи - вниз.
Я скажу навіть ширше, не все життя тобі писати

І протягом того періоду, в якому ти пишеш, ти можеш і ніразу не використати ассемблер

Але то вже інша, філософська тема, думаю ту розмову краще перенести в "Теревені"
ЦИТАТА(Pegasus @ 15.4.2008, 18:49)

Я скажу навіть ширше, не все життя тобі писати

І протягом того періоду, в якому ти пишеш, ти можеш і ніразу не використати ассемблер

Але то вже інша, філософська тема, думаю ту розмову краще перенести в "Теревені"

Кого цікавить асм - рекомендую книжку Абеля почитати - дуже хороша.
Думаю що при теперішньому стані речей Асемблер вчити все таки варто, але в якості наочного прикладу роботу заліза на найнижчому рівні. Мабуть всі погодяться що зараз без асемблера можна розрулити поставлену задачу в 99.9% ситуацій. І до того 0.01% можна і не дожити.
Ну власне, то чи варто робити стільки гамору з приводу асемблера? Для загального розвидку корисно, а так....
QUOTE
Нехай Професор попробує вклепати асемблерну вставку в джава код або в сі-шрапний, і якщо це можливо - запостає як це робиться.
QUOTE
Щодо шарпу і джави - там це неможливо (учи матчасть, неможливо, патаму шо неможливо взагалі).
То для всяких умніків
Using Unmanaged code and assembler in C#:
http://www.codeproject.com/KB/cs/unmanage.aspx
professor
17.4.2008, 11:19
Умнік - це я, чи ти?

А ти читав те, що викладуєш?
Може ти не помітив, що асемблер там був в C++ коді, який збирався в звичайну анменеджед dll, і потім та ліба вже юзалась з-під дот-нету.
В одну длл неможна зібрати менеджед і анменеджед код. Це закон .Net-у.
Помітив і про то тобі в аську написав, але не тре писати "що неможливо, тому що неможливо"

питання звучало як асамблерний код в .неті або в джаві заюзати
professor
17.4.2008, 11:33
Оригінальне питання звучало оттак:
ЦИТАТА(TIGER @ 15.4.2008, 17:51)

Нехай Професор попробує вклепати асемблерну вставку в джава код або в сі-шрапний, і якщо це можливо - запостає як це робиться.
Яке питання - така відповідь. Заюзати - можна. Вставити - ні.
mveselovski
17.4.2008, 11:43
а нас теж ніц ненавчили на асм-і писати. я один раз в 11 класі пробував в паскаль запхати вставку ніц не получилось і зтого часу я став адміном щоб не паритись з тим як вставити асм у якусь мову програмування))))) зате тепер мене турбує як вставити КДЕ4 на свій робочий комп))))
professor
17.4.2008, 11:59
Ех... Не поняти вам всьої глибини, всьої краси бінарного кода, коли в хекс-едіторі набиваєш програму, прямо в ком файл, коли його дебажиш, і коли він нарешті (з третьої попитки) каже Hello, World!...
Порівняно з тим навіть асемблер Черняхівського здається мовою високого рівня:)
Давно я вже так не кайфував від написання коду!
Sulamith Lusor
17.4.2008, 16:26
а ми на парах писали код в блокноті, потім дебажили тасмом чи масмом, потім перевіряли то все в командній строці )))
правда, як виводити хело ворлд, я вже забула )))
пам"ятаю команди add, mov, push, pop, div, mul і все ))) але то все через то, шо я - такий от нерадивий штудент )
professor
17.4.2008, 16:37
Дебажили тасмом чи масмом?
Може транслювали?
Тим більше якщо потім в команд-лайні перевіряли:)
Sulamith Lusor
17.4.2008, 17:04
ой, точно! транслювали )))))))))
мені соромно
professor
18.4.2008, 13:33
Hello, World! на голому асмі.
CODE
B4 09 mov ah, 9 ;код функції виводу рядка для 21 переривання
BA 0D 01 mov dx, 10D ;адрес звідки виводити = номер байта програми + 100h - службова область пам'яті для com програм
CD 21 int 21 ;переривання 21 - сервіс DOS'а
B4 00 mov ah, 0 ;код функції читання клавіші для 16 переривання
CD 16 int 16 ;переривання 16 - io клавіатури
CD 20 int 20 ;переривання 20 - завершити програму, без параметрів. Тут програма фактично закінчується, далі іде область даних.
48656C6C6F2C20576F726C6421;"Hello, World!"
24 ;Символ $ вказує на кінець рядка
professor
18.4.2008, 13:36
п.с. Це - вміст ком-файлу. Тобто якщо хтось натопче в хекс-едіторі таку послідовність байтів - воно б мало навіть запрацювати.
Ну, ну цікаво до чого ти допрограмуєшся на ком

Ти не в курсі, чому зараз всюди exe, а не com файли?

У ком є одне обмеження, яке прирекло ком

З часів ДОСу нічого комівського не бачив...
professor
18.4.2008, 13:45
Я не волшебник, я тока учусь:)
А щодо ком - ну це ж тіко хелло-ворлд-екзампл...
І ясне діло, я не збираюсь писати екзешніки в хекс-едіторі.
QUOTE
Ну, ну цікаво до чого ти допрограмуєшся на ком Ти не в курсі, чому зараз всюди exe, а не com файли? У ком є одне обмеження, яке прирекло ком З часів ДОСу нічого комівського не бачив...
не согласен:) маленькие утилитки можно писать и как com-исполнимые... от exe отличаются, если не ошибаюсь, только размером (максимум - до 64кб ) и наличием в коде только одного сегмента... кстати... вот список com-подобных тулз, которые я нашёл в WinXP:
C:\WINDOWS\system32\chcp.com
C:\WINDOWS\system32\command.com
C:\WINDOWS\system32\diskcomp.com
C:\WINDOWS\system32\diskcopy.com
C:\WINDOWS\system32\edit.com
C:\WINDOWS\system32\format.com
C:\WINDOWS\system32\graftabl.com
C:\WINDOWS\system32\graphics.com
C:\WINDOWS\system32\kb16.com
C:\WINDOWS\system32\loadfix.com
C:\WINDOWS\system32\mode.com
C:\WINDOWS\system32\more.com
C:\WINDOWS\system32\tree.com
C:\WINDOWS\system32\win.com
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please
click here.