Ga naar inhoud

assembler


Aanbevolen berichten

>(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.

Link naar reactie
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/ralf/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

Link naar reactie
>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.

Link naar reactie
> (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 (c) 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 (c) 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

Link naar reactie
  • 2 jaren later...
[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.
Link naar reactie
  • 3 weken later...

Om een reactie te plaatsen, moet je eerst inloggen

Gast
Reageer op dit topic

×   Geplakt als verrijkte tekst.   Herstel opmaak

  Er zijn maximaal 75 emoji toegestaan.

×   Je link werd automatisch ingevoegd.   Tonen als normale link

×   Je vorige inhoud werd hersteld.   Leeg de tekstverwerker

×   Je kunt afbeeldingen niet direct plakken. Upload of voeg afbeeldingen vanaf een URL in

  • Populaire leden

    Er is nog niemand die deze week reputatie heeft ontvangen.

  • Leden

    Geen leden om te tonen

×
×
  • Nieuwe aanmaken...