Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

Programmeren

assembler

svdmeer
13 antwoorden
  • Ik ben van plan assembly te gaan leren, dus heb ik wat vragen over assembler:

    (1) maakt het uit welke processor je hebt?
    (2) kan ik het behalve met Qbasic ook met andere talen combineren? (C++?)
    (3) weet nog iemand een echt goed boek hierover (isbn) ?
    (4) heeft iemand nog een leerzaam stukje code voor mij?

    tnx,

    Mark


  • 1. Ja, volgens mij wel. Een Pentium III heeft tenslotte meer instructies dan een 8088.
    2. Niet dat ik weet.
    3. Waarover? Assembler, QBasic of C++? Wat C++ betreft: L. Ammeraal, Basiscursus C++, Academic Service, F. 29,50.
    4. Welke taal?
  • >(1) maakt het uit welke processor je hebt?

    Het kan alleen zorgen voor meer functies 'for your disposal', ter gebruik. Aan te raden is de Athlon, die heeft de meeste instructies, inclusief PRO, en 27 nieuwe op de MMX en de 3DNOW sets.
    Verder is het roeien met de riemen die je hebt, en als code het niet doet, eerst zelf uren staren, programmeerregels doorlezen en nog eens verbeteren, werkt dat niet, bij een ander proberen. Doet-ie het daar wel heb je een processor met een bug.

    >(2) kan ik het behalve met Qbasic ook met andere talen combineren? (C++?)

    C++:

    asm {mov ax, 0x4c00; int 21};

    de rest weet ik niet. Je kunt ook puur Assembler praten. Werkt wel zo handig.

    >(3) weet nog iemand een echt goed boek hierover (isbn) ?
    Kijk eens op http://www.amazon.com of in de post van Jeroen Leenarts (die met +- 40 posts), die gaat ook over ASM.

    >(4) heeft iemand nog een leerzaam stukje code voor mij?
    Nee, niet echt. Kijk eens in WOW3.BAS, die ik je heb gestuurd.

    >1. Ja, volgens mij wel. Een Pentium III heeft tenslotte meer instructies dan een 8088.

    Maar een programma dat op een 8088 draait draait ook op een Pentium III. Als je 8088-compatible code maakt doet het helemaal niet toe.

    >2. Niet dat ik weet.

    Staat inderdaad niet in Basiscursus C++, noch in Gevorderden C++ (uit de bieb). Maar het kan wel, zelfs onder windoos.

    >3. Waarover? Assembler, QBasic of C++? Wat C++ betreft: L. Ammeraal, Basiscursus C++, Academic Service, F. 29,50.

    >4. Welke taal?

    Driemaal raden welke taal. De titel van de thread is Assembler, en het is het meest voorkomende woord.

  • Sorry, voortaan maar wat eerder naar bed gaan. Was blijkbaar niet helemaal wakker.
  • 1. maakt het uit welke processor je hebt?
    Nee, niet voor een beginner.
    Je begint toch met de standaard instructies zoals MOV, DEC, INC, ADD, SUB, INT, JMP, Jxx, AND, OR, XOR etc… en die kun je al gebruiken op een XT. Alleen Tasm 5 vereist volgens mij minimaal een 386-er.
    Pas veeeeeeeeeeel later zou je zo ver zijn dat je kan profiteren van mogelijkheden van de Pentium, maar die krijg je pas echt als je met protected mode aan het werk gaat en als beginner begin je meestal in Real Mode assembly te oefenen.

    (2) kan ik het behalve met Qbasic ook met andere talen combineren? (C++?)
    Met QBasic combineren gaat juist heel slecht in vergelijking met veel andere talen. C++ en Pascal kunnen inline assembly aan, dat wil zeggen assembly door je gewone code heen. Turbo Pascal is daar het beste in, want die heeft vrijwel geen beperkingen. Alleen van SS, SP, BP, CS, IP en DS (mag je wel gebruiken, maar moeten aan het eind van het stukkie asm hun oorspronkelijke waardes weer hebben, dus PUSH en POP) moet je afblijven, de rest mag je naar hartelust gebruiken. ook C(++) is redelijk flexibel in combinatie met assembly.

    (3) weet nog iemand een echt goed boek hierover (isbn) ?
    Is heel persoonlijk. ISBN is lastig te geven. Ik raad je aan eens te kijken bij de Slegte of een andere 2e hands boekwinkel. Zoek oude boekjes voor een prikkie. Zo heb ik op de HCC dagen voor een rijksdaalter het boek 8086/8088/80286 assembleertaal gekocht. Maar al die boeken zijn niet aangenaam voor beginners. Droog gedoe met registers en rekenen is gewoon niet leuk. Ik heb het spelenderwijs geleerd en dat raad ik jou ook aan. Dus: Zorg er voor dat je Turbo Pascal kent. Je denkt: He, laat ik eens wat grafisch doen! En je merkt: De standaard grafische commando's van Pascal (BGI) zuigen dus ik moet wel assembly gebruiken.

    Dus programmeren wij:
    Asm MOV AX,$13; INT $10 End;
    En ze zitten in 320x200x256

    Netjes afsluiten:
    ReadLN;
    Asm MOV AX,3; INT $10 End; { Tekstmode }

    En als je pixeltjes wilt zetten:

    Procedure PutPixel(X,Y : Word ; Kleur : Byte) ; Assembler;
    Asm
    MOV AX,320; MUL Y
    ADD AX,X; MOV DI,AX
    MOV AX,$A000; MOV ES,AX
    MOV AL,Kleur; STOSB
    End;

    En dan testen:
    For T:=0 To 199 Do PutPixel(T,T,15);

    Dus: Leen een boek over systeemprogrammeren. Zelf zoek ik al heel lang naar het boek (om te kopen): PC Handboek voor Programmeurs geschreven door Jourdain. Is heel oud (+/- 1982) maar leuk! Spelender wijs legt de programmeur uit hoe je iets doet in Basic, Assembly via BIOS of assembly rechtstreeks via hardware. Zaken zoals videokaart programmeren, PC speaker, tijd, DOS-functies etc… Het boek is niet te vinden, maar in sommige bibliotheken (oa. Drachten (als je het daar haalt kun je m'n persoonlijke aantekeningen in de kantlijn uit 1995 terug vinden ) en Leeuwarden). Dus: Sneup in de bibliotheek.

    (4) heeft iemand nog een leerzaam stukje code voor mij?
    Ga leren onder DOS. Bovenstaand stukje inline asm Pascal code was al behoorlijk leerzaam voor een beginner.

    Helaas heb ik laatst m'n jeugd experimenten van de hdd gegooid, dus kleine stukkies heb ik niet meer. Download Ralph Browns interruptlist eens. Ik raad je aan om dan ook RBil view (voor Windows) te downen, is handig om te zoeken in de lijst. http://www.cs.cmu.edu/afs/cs.cmu.edu/user
    alf/pub/WWW/files.html

    Door interrupts aan te roepen kun je al wat leuke dingetjes doen. Interrupt 33h wordt gebruikt door de standaard Microsoft DOS-muisdriver. (en vele anderen, het is standaard). Als je daar leest zie je hoe die functies gaan.

    Bv.
    XOR AX,AX
    INT $33
    intialiseert de muis(driver).
    XOR AX,AX is hetzelfde als MOV AX,0 maar dan iets optimaler. Echte assembly programmeurs zijn ongeloofelijke zeikerds soms, ze tellen de bytes.

    En
    MOV AX,1
    INT $33

  • >Alleen Tasm 5 vereist volgens mij minimaal een 386-er.
    Alleen van TASM32.EXE is een versie 5. De gewone TASM.EXE is blijven steken bij 4.nogwat. Maar ik zou zo niet weten of TASM32.EXE een 386 nodig heeft om te draaien. Hij genereert 32-bits code, maar of ie zelf ook 32-bits is?

    >Dus: Haal/koop een goed boek
    Zo is het.
    Ik heb ooit een boekje ".ASM!" gehad, dat was best leerzaam.

    O, dit haal ik uit de NCC:

    Titel: PC handboek voor programmeurs / Robert Jourdain ; [vert. uit het Engels door Bart Verbeek]
    Jaar: cop. 1989
    Auteur(s): Robert Jourdain, Bart Verbeek
    Uitgave: Schoonhoven : Academic Service
    Reeks: PC-boeken
    Omvang: 542 p
    ISBN: 90-6233-443-1

    0001 uva amsterdam
    0003 kb den haag
    0006 univ utrecht
    0007 ob amsterdam
    0013 zb middelburg
    0027 dob den haag
    0076 ub twente
    0095 sb haarlem
    0141 ob groningen
    0144 ob tilburg
    0288 pbc groningen
    0766 hs to breda
    1876 ziekenhuisbibl
    1969 hbo west-brabant

    Ah, ook in Groningen (2x zelfs). Ga ik meteen lenen. Kijken of het interessant is.

  • > (1) maakt het uit welke processor je hebt?
    Jazeker, maar niet voor de Assembler zelf, maar voor de code die je ontwikkeld. Als je speciale instructies voor MMX en de Pentium II gebruikt, dan kun je je programma dus niet testen op een PC met een 80386 processor…
    Voor een beginner niet erg van belang omdat je de meer standaard instructies gaat gebruiken en zeer waarschijnlijk alleen DOS-programma's gaat maken.

    > (2) kan ik het behalve met Qbasic ook met andere talen combineren? (C++?)
    Delphi, Pascal, C, Cobol, Basic, Prolog, Forth, ect. Je kunt assembly combineren met iedere compiler die het mogelijk maakt om de *.OBJ bestanden die assembler maakt mee te linken in je applicatie. Sommige talen kunnen dit echter niet. De QBasic interpreter bijvoorbeeld (en niet de QB compiler) kan niet met assembler omgaan. Andere compilers staan zelfs inline Assembler instructies toe; assembler-instructies tussen je normale code. Delphi Turbo Pascal 6+ en veel C-compilers maken dit mogelijk.

    > (3) weet nog iemand een echt goed boek hierover (isbn)?
    Mastering Turbo Assembler, Second Ed. ISBN 0.672-30526.7
    Om er maar eens 1 te noemen. Gewoon even bij de boekhandel langsgaan. Overigens, voor f299,- heb je de Turbo Assembler inclusief een goede handleiding en een handig boekje met een overzicht van alle assembler-instructies. Een beetje duur, maar wel de moeite waard. Iets wat je mis loopt als je een kopie van iemand gebruikt…

    > (4) heeft iemand nog een leerzaam stukje code voor mij?
    Frame voor een executable:

    code:
    ; Turbo Assembler example. Copyright © 1993 By Borland International, Inc.

    ; EXEPROG.ASM - Template for writing .EXE files.

    ; From the Turbo Assembler User's Guide, Ch. 18

    P8086 ;select the processor
    MODEL SMALL ;select the model - can be any model
    DOSHEAP = 0 ;specify whether DOS heap is to be used, or
    ; internal heap; 1 indicates DOS heap; 0 internal
    STACK 200h ;reserve stack space as needed for application

    DATASEG
    ;<<Any initialized data is defined here>>

    UDATASEG
    ;<<Any uninitialized data is defined here>>

    CODESEG
    ;This marks the start of executable code
    STARTUPCODE
    ;EXE program has all available memory allocated to it

    IF DOSHEAP
    ;Release all memory except the amount currently being used
    ;End of stack is end of non-heap portion of program
    MOV BX,SP
    ADD BX,15 ;convert SP into paragraphs
    SHR BX,4
    MOV AX,SS ;calculate size of program using ES PSP address
    ADD BX,AX
    MOV AX,ES
    SUB BX,AX
    MOV AH,4AH ;resize memory block with PSP
    INT 21H ;address in ES
    ENDIF

    ;Now execute user code.
    ;The code can be placed here, but it looks better to call it;
    ;DoIt returns an exit value in AL, which corresponds to ERRORLEVEL in
    ;.BAT files.
    CALL DoIt

    ;Exit to DOS when complete
    MOV AH,4CH
    INT 21H
    RET

    ;Arguments to this procedure:
    ;ES=PSP address (for command-line arguments)
    ;Must return an exit value in AL
    DoIt PROC NEAR
    ;<<Your code goes here>>
    RET
    DoIt ENDP
    END


    Frame voor een *.COM executable:

    code:
    ; Turbo Assembler example. Copyright © 1993 By Borland International, Inc.

    ; COMPROG.ASM - Template for writing .COM files.

    ; From the Turbo Assembler User's Guide, Appendix A.

    P8086 ;select the processor
    MODEL TINY ;always must be TINY model

    DATASEG
    ;<<Any initialized data is defined here>>

    UDATASEG
    ;<<Any uninitialized data is defined here>>

    ;<<Set up room for user stack, if default stack is not desired>>
    DW 100H DUP (?)
    MyStack LABEL WORD

    CODESEG ;this marks the start of executable code
    STARTUP

  • Onno: PC handboek voor programmeurs / Robert Jourdain: Ik denk niet dat het voor jou een interessant boek is, voor mij ook niet meer. Ik wil het hebben vanwege het jeugdsentiment er van. Het is voor ons te simpel, maar voor een beginner ideaal.
  • [quote:70fa5adc61="Wh@zZ"]Ik ben van plan assembly te gaan leren, dus heb ik wat vragen over assembler:
    (3) weet nog iemand een echt goed boek hierover (isbn) ?
    (4) heeft iemand nog een leerzaam stukje code voor mij?[/quote:70fa5adc61]

    Met het volgende boek leer je van begin af assembler.

    Titel: "Programmeren van de 8086 t/m 80486"
    Auteur: Michael Thorne
    Uitgever: Addison-Wesley
    ISBN: 90 6789 306 4
    626 bladzijden!

    volgens mij hebben ze dat boek ook in de bibliotheek.

    Hoofdstuk 1: Assembleertaal
    Hoofdstuk 2: Organisatie van 8086-computers
    Hoofdstuk 3: Adressen en instructies die het geheugen beinvloeden
    Hoofdstuk 4: Assembleren, linken en uitvoeren van programma's
    Hoofdstuk 5: Debug-programma's
    Hoofdstuk 6: Rekenkundige vlaggen en operaties
    Hoofdstuk 7: Sprongen en lussen
    Hoofdstuk 8: De ontwikkeling van een besturingsprogramma
    Hoofdstuk 9: Het manipuleren van afzonderlijke bits
    Hoofdstuk 10: De ontwikkeling van grote programma's
    Hoofdstuk 11: Tekst en tabellen
    Hoofdstuk 12: Een eenvoudige editor
    Hoofdstuk 13: Addresseringsmodi en instructiecoderingHoofdstuk 14: Modulair programmeren
    Hoofdstuk 15: BCD-rekenkunde
    Hoofdstuk 16: De kenmerken van assembleertaal
    Hoofdstuk 17: STRUC en RECORD
    Hoofdstuk 18: Macro's en voorwaardelijk assembleren
    Hoofdstuk 19: Schijfbestanden
    Hoofdstuk 20: Device-drivers I: geprogrammeerde I/O en printers
    Hoofdstuk 21: Device-drivers II: Interrupt-I/O en het toetsenbord
    Hoofdstuk 22: Device-drivers III: Directe geheugenadressering I/O en het beeldscherm
    Hoofdstuk 23: Geavanceerde instructies voor de 80386 en hoger
    en nog wat Appendixes…
    ideaal begin.

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.