Avatar billede intel4004 Novice
02. december 2002 - 15:11 Der er 22 kommentarer og
3 løsninger

Spørgsmål ang. Assembler-sproget

Jeg studerer på Allborg Universitet Esbjerg og er nu ved at afslutte mit kapitel om crackning (vi skriver rapport om Beskyttelse af software).
Jeg står på lidt bar bund ang. nogle småting om Assembler:

1). Når man programmer programmer til x86 cpu'en er det så nødvendigt at compile assembler-kildekoden bagefter. Har jeg misforstået noget hvis jeg påstår at det ikke er nødvendigt af kompile?

2). Hvilken forskel er der på det man ser i assembler-kildekoden, og det man får når man disassembler programmet?? Det ligner hinanden en smule dog.

3). Bruges assembler overhovedet mere idag??

Mvh Intel4004
Avatar billede jensendk Nybegynder
02. december 2002 - 15:15 #1
1/ Du skal kompilere din assembler ja, maskinen forstår kun maskinkode (Binært) og din assembler kode er i ascii.

2/ Forskellen er at f.eks dine labels har forskellige navne, i disassembleret kode er det disassembleren, der bestemmer dine labels, i din oprindelige kode er det dig selv.

3/ Jeps,  jeg laver en del til f.eks 8051 familien..
Avatar billede arne_v Ekspert
02. december 2002 - 15:17 #2
1)  Man compiler ikke .asm -> .obj - man assembler
    .asm -> .obj - men det er samme process man
    kalder det bare noget andet når det er assmbler
    end når det er et high-level sprog.

2)  En god assembler har en del praktiske direktiver,
    som gør assembler kildeteksten nemmere at læse
    og vedligeholde. Disassmbler er helt råt.

3)  Meget lidt. Men jeg tror stadig at der
    er enkelte steder.
Avatar billede henning-kilroy Nybegynder
02. december 2002 - 15:19 #3
1) Kildekoden skal via en assembler ( svarer til andre sprogs Compiler )
for at blive checket, og linket sammen med anden code for at kunne behandes af en 'loader' der kan anbringe koden et passende sted i lageret, og starte udførelsen.

2) Alle kommentarerne mangler f.ex.  !!!

3) F. ex af folk der skriver drivere til hardware, der kan kobles på.
Avatar billede intel4004 Novice
02. december 2002 - 15:29 #4
arne_v >

Hvad mener du med at disassembler er helt råt??

Intel4004
Avatar billede arne_v Ekspert
02. december 2002 - 15:48 #5
Der mangler naturligvis kommentarer.

Der mangler labels.

Data typer er ikke nødvendigvis korrekte.

Nogle af assemblerens direktiver vil ikke
blive genkendt som sådan.

Disassembler output kan assembles til det samme
som blen disassemblet, men læsbarheden vil ofte
være så som så.

Meget "råt",

I værste fald kan disassembleren ikke kende forskel
på kode og data og så bliver det rigtigt forvirrende !
Avatar billede intel4004 Novice
02. december 2002 - 16:33 #6
Jeg sidder og vil give et eksempel i assembler-kode:

Giver dette mening??:

MOV EAX,00000002
MOV EBX,00000003
ADD EAX,EBX

At EAX = 0x2, EBX = 0x3 og tilsidst EAX = 0x5

Er der noget jeg bør være opmærksom på i dette eksempel??

Intel4004
Avatar billede flarup Nybegynder
06. december 2002 - 22:51 #7
Jo, assembler bruges da af storset alle compilere ;-)

Og jeg har da af og til også fingrene i assembler koden, men dog mest for at verificere om compileren har lavet fejl. Det sker også at man må debugge sig igennem et stykke assembler.

Man kan også blive nødt til selv at skrive funktioner som memcpy i assembler, når der er fejl i libraryet. Specielt hvis man arbejder med embedded software.

Og endelig, hvis du interesserer dig for compilere og program optimering, så er assembler lige sagen. De compilere man lærer at skrive på skolerne er jo ikke meget bevendt, da de allesammen bruger C som mellemkode.

Men mine kolleger står som regel af når jeg tager assemblerbøgerne frem.
Avatar billede intel4004 Novice
06. december 2002 - 23:29 #8
flarup> Dvs. at hvis man synes assembler-sproget lyder spændende, så er det ikke blot tidsspilde at gå igang med?? Hvilken form for assembler-sprog skal jeg starte med? Hvad med HLA (high-level-assembler) eller MASM32 - er det noget jeg kan bruge senere?

Intel4004
Avatar billede flarup Nybegynder
07. december 2002 - 00:02 #9
Nu skal jeg jo ikke lokke dig i fordærv!
Jobmulighederne hænger ikke just på træerne blot fordi man kan assembler.
Det vigtigste er at du ender op med mindst en kandidat grad. Hvor jeg er ansat har de fleste bit pillere en kandidat uddannelse.
At du har valgt den udvidede bitpiller linie vil så kunne overbevise dine kommende arbejdsgivere om at her kommer en person der ikke er bange for at tage fat i de tungere og mere grundlæggende grene af datalogien. Det er jo langt fra sikkert at du kommer til at arbejde med det du har skrevet projekter om. Men det er ikke lige en profil der stiler mod et direktør job, nærmere som teknisk ekspert men der mener jeg nu også er sjovere.

Problemet er blot at der vil blive færre og færre af den slags jobs, i takt med at software udvikling bliver mere og mere komponent baseret. Men der skal jo også nogen til at lave både nye komponenter og compilere. Det er bare ikke sikkert at det er i Danmark, men det er jo blot et spørgsmål om geografi.
Avatar billede arne_v Ekspert
07. december 2002 - 07:52 #10
Du skal ikke lære assembler for at få et job. Det vil ikke give
nok resultat i forhold til indsatsen.

Du skal lære assembler, fordi du har lyst til virkeligt at
forstå, hvordan en computer arbejder.
Avatar billede intel4004 Novice
07. december 2002 - 11:45 #11
flarup og arne_v >
Tak for den brugbare info. Dog bør jeg nok pointere at jeg startede på universitet i september i år, så det er begrænset hvor meget jeg ved om tingende endnu. Men jeg synes at assembler-kode virker spændende, men min hovedvejleder mener nu nok at det ville være lidt tidsspilde (han underviser i C++). Selvfølgelig har jeg tænkt mig at fokuserere på c/c++ også. Men jeg interesserer mig faktisk for de grundlæggende begreber i en computer, og derfor bærer mit P1 projekt nok også præg af det.

Men indtil videre regner jeg med at fortsætte alle 5 år og stå færdig som civilingeniør. Men specialet ligger jo alligevel et par år ude i fremtiden :)

Men assembler er altså ikke dødens pølse endnu, men hvad så efter 2007??

PS: Hvad med .NET - det er der vel også udfordring i??

Intel4004
Avatar billede flarup Nybegynder
07. december 2002 - 12:01 #12
Der er udfordring i alt.
Da jeg studerede fik jeg at vide at hvert 10. år ville jeg totalt havde udskiftet den værktøjskasse, altså sprog og programmer, som jeg bruger til mit arbejde. Med C++ som den mest markante undtagelse kom dette til at holde stik.

Det jeg har med fra universitetet er den grundlæggende teori, for den ændrer sig ikke lige sådan. Så jeg kan kun ønske dig held og lykke med dit studium.
Avatar billede wolfborn Nybegynder
03. december 2004 - 12:27 #13
Assembler sproget er da meget sjovt, men jeg vil kun råde dig til at gøre det fordi at du syntes at det kunne være skægt at lære.
I industrien bliver det da brugt, man bruger det til mange kredse, dog kan man som regel også skrive koden i C sproget.
Man plejer at skrive koden i et "main" program for derefter at konvertere koden til hex, dernæst bliver det kodet ned i en IC via. et andet program, som sender signalerne ud fra computerens com, usb eller parallelport til selve programmerings hardwaren.
Avatar billede intel4004 Novice
03. december 2004 - 14:53 #14
wolfborn>

Dette spørgsmål blev skrevet dec 2002 da jeg gik på 1. semester. Jeg går nu på 5 semester og har siden lært utrolig meget om C, C++, Java, og sågar også assembler. Faktisk sidder jeg i øjeblikket og programmerer en microcontroller (TI MSP430) ved brug af C.

Mhv Intel4004
Avatar billede wolfborn Nybegynder
03. december 2004 - 18:32 #15
Havde ikke lige set datoen :)
Jeg er rimelig ny indenfor faget, har beskæftiget mig et års tid med assembler og c.

Held og lykke med fremtiden

MVH

Peter
Avatar billede michael_stim Ekspert
03. december 2004 - 18:42 #16
Synes du stadig assembler er sjovt?
Da jeg läste var der ikke én eneste i klassen (ca 30 stk) der synes det sjovt, tvärtimod :D Det var bare en del af uddannelsen der skulle overstås.
Avatar billede intel4004 Novice
03. december 2004 - 19:42 #17
michael_stim>

Assembler har ikke været obligatorisk for mig endnu :) Men jeg tror faktisk jeg vil kunne lide det - men måske ikke :)

Det er egentligt sjovt at se sine gamle eksperten-spørgsmål igen - giver et billede af hvor meget man egentlig lærer igennem årene på en længerevarende uddannelse. At sige at jeg kan programmere assembler ville være at overdrive. Men jeg føler at jeg har fået en god forståelse for hvad assembler er og hvor langt væk der er til C sproget (som jeg efterhånden kender ret godt).

Min C og assembler erfaring stammer hovedsagelig fra programmering af microcontrolleren MSP430 de sidste 2 semestre. Ang. assembler kigger jeg lidt i manualen for at se hvad MSP'en understøtter af instruktioner. Herefter tjekker jeg hvad C-kompileren egentlig får ud af min kode. Ret interessant at se forskellen i assembler bagefter (jeg kan debugge assembler-instruktionerne i realtime).

Men hvor lærer man meget på 2 år indenfor denne branche! Og der er 2 1/2 år tilbage endnu :)

Intel4004
Avatar billede wolfborn Nybegynder
04. december 2004 - 19:09 #18
Ja jeg elsker at skrive kode....Men jeg er også lidt af en rendyrket nørd :)
Det sjove er når man får en ide, og så man realiserer den ud fra ens teoretiske viden.
Jeg er i øjeblikket igang med at lave en dot matrix driver. Så jeg er i fuld sving med at lave det således at den kan skrive alle tegn fra A-Å samt 1-9. Så når jeg har lavet det vil jeg kunne skrive alt på nogle matrix segmenter.
Hvad skal jeg så bruge det til? tænker du sikkert... Simpelt nok! at give mig et visuelt billede at de projekter jeg kommer til at lave i fremtiden. Så hvis jeg vil lave en temperatur styring, kunne jeg sætte dette kredsløb i sammenhæng med, for derefter at vise f.eks. teksten "Temperatur 35 grader".
Det skal dog siges at jeg lave alt dette på hobby basis, da vi har ingeniører i virksomheden til at lave disse ting... jeg er bare elektronik tekniker, som elsker sit arbejde :)
Avatar billede nillinx Nybegynder
30. maj 2006 - 08:48 #19
Er der stadig nogen herinde?
Avatar billede arne_v Ekspert
30. maj 2006 - 12:55 #20
ja
Avatar billede nillinx Nybegynder
31. maj 2006 - 08:11 #21
Super, hvis man nu gerne vil lave et operativ system, eller noget i den stil, hvordan får man så sin C kode kompilet så man ex. kan smide det ned på en diskette og boote fra den?

Her snakker jeg om hvilke programmer der bruges, ikke hvilken viden indenfor C.
Avatar billede nillinx Nybegynder
31. maj 2006 - 08:12 #22
Og er det en god idé at have noget af det skrevet i asm?
Avatar billede michael_stim Ekspert
31. maj 2006 - 08:49 #23
denne tråd er 2 år gammel. Hvorfor opretter du ikke et nyt spørgsmål????
Avatar billede dumbledore Nybegynder
09. marts 2008 - 16:58 #24
Årerne går og går, stadig aktiv intel4004?
Hvordan var din uddannelse og hvad laver du nu?
Avatar billede intel4004 Novice
09. marts 2008 - 20:25 #25
dumbledore>

Ja jeg er stadig herinde i ny og næ. Jeg bliver færdig med mit afgangsprojekt på universitetet til Juni. Jeg beskæftiger mig med 3D computer vision og overvejer at fortsætte med en erhvervsphd. Finder forskning ret interessant.

Utrolig som ens gamle spørgsmål kan opfriske fortiden :) Dengang forstod jeg ærlig talt ikke særlig meget om assembly eller programmering generelt. Siden har jeg dog fået en solid erfaring i mange forskellige sprog, software-udviklings principper, samt problemløsnings-værktøjer såsom matlab og mathematica. Hehe, jeg gik på 1. semester da jeg skrev dette spm. :) Tiden går.

Intel4004
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester