• Здраво и добредојдовте на форумот на IT.mk.

    Доколку сеуште не сте дел од најголемата заедница на ИТ професионалци и ентузијасти во Македонија, можете бесплатно да се - процесот нема да ви одземе повеќе од 2-3 минути, а за полесна регистрација овозможивме и регистрирање со Facebook и Steam.

Има ли asembler програмери?!

milos

Intern
7 април 2007
8
0
www.myspace.com
Еве, се јавувам ;)

Досега имам програмирано во асемблер за 8085 и 8086 Интелови процесори.
 
  • Ја почнал/а темата
  • #4

n3tG0d

Intern
9 април 2007
115
1
Pa pametni bi bilo... ako veke nekoj se bavi so bezbednost.... neli?
 
  • Ја почнал/а темата
  • #7

n3tG0d

Intern
9 април 2007
115
1
Za nekoj pocetnik a koj saka da sovlada asm programiranje a isto taka kombiniranje na asm i c dobra kniga e "Springer - Guide to Assembly Language Programming in Linux"
Pozdrav
 

Password

Intern
10 април 2007
393
9
Ke mi kaze li nekoj sto potocno se programira so assembly!? Kakov vid programi se pravat i slicno. Tnx
 

CyberLord

Intern
16 април 2007
135
2
Pa pametni bi bilo... ako veke nekoj se bavi so bezbednost.... neli?
Не паметно, туку задолжително... ;) Shellcoding, Exploiting... Мора да се знае да се пишува ASM операциони кодови, па да се напише shellcode... :) Затоа секој што професионално се бави со безбедност мора да знае ASM... :)
 

vasildb

Intern
17 април 2007
209
6
Се што ќе направиш со HLL(High-Level Language) можеш и со ASM и повеќе... ASM програмите, за разлика од програмите пишани во HLL се помали и побрзи... :cool:
Кодот во Asembler е многу поголем од кодот напишан во виш програмски јазик. Но во Asembler можеш да бидеш попрецизен во дефинирањето на командата што сакаш да се изврши. И плус треба да се знае многу повеќе за хардверските компоненти на компјутерот ако се програмира во Asembler додека тие што програмираат во виш програмски јазик и не мора да имаат некои големи познавања.
Сепак е добро да се знаат повеќе програмски јазици.
 

CyberLord

Intern
16 април 2007
135
2
Кодот во Asembler е многу поголем од кодот напишан во виш програмски јазик. Но во Asembler можеш да бидеш попрецизен во дефинирањето на командата што сакаш да се изврши. И плус треба да се знае многу повеќе за хардверските компоненти на компјутерот ако се програмира во Asembler додека тие што програмираат во виш програмски јазик и не мора да имаат некои големи познавања.
Сепак е добро да се знаат повеќе програмски јазици.
Точно е дека ASM изворниот код е поголем од кодот напишан во HLL... Но со ASM добиваш помала и побрза извршна програма споредена со еквивалентна напишана во HLL...
 

vasildb

Intern
17 април 2007
209
6
Да. Сепак се користат за различни примени. Затоа и реков дека е добро да се знаат повеќе програмски јазици.
 

vlatkorun

Intern
8 јуни 2007
633
14
Кодот во Asembler е многу поголем од кодот напишан во виш програмски јазик. Но во Asembler можеш да бидеш попрецизен во дефинирањето на командата што сакаш да се изврши. И плус треба да се знае многу повеќе за хардверските компоненти на компјутерот ако се програмира во Asembler додека тие што програмираат во виш програмски јазик и не мора да имаат некои големи познавања.
Сепак е добро да се знаат повеќе програмски јазици.
Koi se tie bisi programski jazici?
Na sto mislis треба да се знае многу повеќе за хардверските компоненти на компјутерот ако се програмира во Asembler podetelno ako sakas ok.
 

CyberLord

Intern
16 април 2007
135
2
Koi se tie bisi programski jazici?
Na sto mislis треба да се знае многу повеќе за хардверските компоненти на компјутерот ако се програмира во Asembler podetelno ako sakas ok.
Виши програмски јазици : C++, Java, C#, Pascal, BASIC и сл.

Хардверски компоненти ??
За почеток, најважно е да ја знаеш архитектурата на процесорот за кој програмираш. Неговите регистри, неговите карактеристики, инструкциите.
 

minimoog

Intern
14 јули 2007
317
16
Има, има, само не сум работел веќе подолго време во чист асемблер.

Лесно се учи x86 асемблерот но многу тешко и споро се програмира. Осум регистри (седум ефективно) и операции над нив, условно скокови, и не ти треба повеќе. Класичниот FPU e УЖАС за програмирање, но некаде SSE помага (но нема трансцедентни функции).

Програмите во асемблер се помали зошто не се користат класичните библиотеки (libc, stdlibc++) него мора директно да се користи Windows API-то (не знам како е во *nix). На пример, нема во асемблер malloc, него мора да се користи HeapAlloc или VirtualAlloc.

А дали е кодот побрз од класичен компајлер, зависи од вештината на асемблеристот, но мора во детали да ги знае оптимизациските водичи од Intel и AMD. Не вреди за маката, би се рекло.
 

CyberLord

Intern
16 април 2007
135
2
Има, има, само не сум работел веќе подолго време во чист асемблер.

Лесно се учи x86 асемблерот но многу тешко и споро се програмира. Осум регистри (седум ефективно) и операции над нив, условно скокови, и не ти треба повеќе. Класичниот FPU e УЖАС за програмирање, но некаде SSE помага (но нема трансцедентни функции).

Програмите во асемблер се помали зошто не се користат класичните библиотеки (libc, stdlibc++) него мора директно да се користи Windows API-то (не знам како е во *nix). На пример, нема во асемблер malloc, него мора да се користи HeapAlloc или VirtualAlloc.

А дали е кодот побрз од класичен компајлер, зависи од вештината на асемблеристот, но мора во детали да ги знае оптимизациските водичи од Intel и AMD. Не вреди за маката, би се рекло.
Да, лесно се учат регистрите и основниот сет на инструкции на 8086-ката и програмирање во реален режим (real-mode). Ама не би рекол дека толку лесно се учи програмирање во заштитен режим. :)

Под UNIX оперативните системи нема API, се работи со прекини int 80h, слично на DOS-овиот int 21h.
 

minimoog

Intern
14 јули 2007
317
16
Не, јас зборувам за Windows програмирање во асемблер. Не за 8086, туку за 80386 нагоре. И тоа во 32 битен protected mode (во тоа работи нели Windows-от), ама во ring 3 (или 2 беше, сеедно последниот user mode го викаат).
 

CyberLord

Intern
16 април 2007
135
2
Не, јас зборувам за Windows програмирање во асемблер. Не за 8086, туку за 80386 нагоре. И тоа во 32 битен protected mode (во тоа работи нели Windows-от), ама во ring 3 (или 2 беше, сеедно последниот user mode го викаат).
Во ring 3 работат програмите, во ring 0 работи јадрото на Windows и драјверите.

Под програмирање во protected-mode (заштитен режим) јас подразбирам да се знае за multi-tasking, task switching, protection levels, memory management и др. :) Ако пишуваш некој boot-loader или некој мини OS кој работи во заштитен режим мора да се знаат овие работи. Затоа реков и дека не е баш толку лесно програмирање во protected mode. :))

Инаку Windows програмирање во асемблер и не е баш толку тешко. Нема сегменти, бидејки се користи рамен (flat) мемориски модел слично како кај COM програмите (CS=DS=SS=ES).
MASM има HLL команди (if, while, repeat..until, invoke) кои многу го олеснуваат програмирањето.

Еве краток пример во C:
Код:
switch (uMsg)
{
case WM_CLOSE:
     EndDialog(hWnd, NULL);
     break;

case WM_COMMAND:
    switch(LOWORD(wParam))
    {
     case IDC_IZLEZI:
        SendMessage(hWnd, WM_CLOSE, NULL, NULL);
        break;
    }
}
еквивалент во MASM со HLL наредби:
Код:
.if uMsg == WM_CLOSE
     invoke EndDialog, hWnd, NULL
.elseif uMsg == WM_COMMAND
     mov eax, wParam
     .if ax == IDC_IZLEZI
           invoke SendMessage, hWnd, WM_CLOSE, NULL, NULL
     .endif
.endif
 

CyberLord

Intern
16 април 2007
135
2
Првиот код е во C, вториот е во асемблер (со HLL команди). И во двата кода се повикуваат Windows API функции.
 

minimoog

Intern
14 јули 2007
317
16
Постои Windows API. И можат да бидат повикани од C. Само треба да бидат линкирани посебни DLL-ки...
 

Нови мислења

Последни Теми

Статистика

Теми
43,518
Мислења
822,423
Членови
28,049
Најнов член
Mandej
На врв Дно