Nederlog        

 

20 januari 2008

                                                                 

Moi, j'aime Rosa + Words of Wisdom

 

 

Ik schreef eerder over mijn lief Rosa, a.k.a. RosAsm, een zeer verbazende en fraaie assembler.

Met al dat gedoe met de gemeente, allemaal in Nederlog en in ME in Amsterdam te vinden (helaas, maar het kn niet anders wil ik overleven in Amsterdam), en met mijn beroerde gezondheid, heb ik weinig aandacht aan mijn lief kunnen besteden, maar het ging nu even.

In dit verband:

En van de dingen die ik zeker beter kan met een betere gezondheid is programmeren, want ik ben daar vaak te moe voor, en mensen met M.E. hebben ook problemen met hun geheugen, dat nogal belangrijk is voor programmeren.

Maar het ging weer eens, en ik heb een eenvoudig Windows-programmaatje in RosAsm gemaakt, dat ik WoW.exe heb genoemd.

"WoW" staat voor "Words of Wisdom", en dat is precies wat het produceert: 100 citaten met auteurs, ontleend aan het begin van Quotations in mijn Philosophical Dictionary, at random.

En per keer, en dan moet u het programmaatje weer starten voor een nieuw verheffend citaat. Tot u ze alle 100 kent, of er genoeg van krijgt.

Het bijzonder mooie van Assembler is dat het zeer kort en zeer krachtig is, en het bijzonder mooie van RosAsm - die bij mij thuis dus Rosa heet - is, onder zeer veel ander fraais, de ingebouwde debugger, die precies, tot op de bit nauwkeurig, laat zien wat de computer doet op het moment zelf dat het gebeurt, met de programma-code ernaast, op het deel dat uitgevoerd wordt. Insight! Real insight!

Het volgende stukje zal niet erg helder voor de meeste van mijn lezers zijn, maar alle code die ertoe doet in WoW.exe bestaat uit de volgende assembler-code, die een random citaat vindt:


Main:
call RunMe                                              ; Show opening window of Wow

call 'MSVCRT.time' &NULL                   ; time as seed for Random utility
call 'MSVCRT.srand' eax                      ; randomize 
call 'MSVCRT.rand' 100                        ; max integer
mov edx 0                                             
mov ebx 100
div ebx                                                   
; edx is now between 0 and 100
mov eax edx                                          ; edx in eax for finding strings

mov edx, DWORD[Qnames+eax*4]  ; Using pointers to strings
mov eax, DWORD[Quotes+eax*4]    ; Now show quote+author:

call 'USER32.MessageBoxA' &NULL, eax, edx, &NULL

push 0
call 'KERNEL32.ExitProcess'                 ; end


Zo ziet de zuivere wiskunde van programmeren er dus uit, in RosAsm.

U vindt WoW.exe hier, als 17 Kb zip file    :  WoW.zip
U vindt RosAsm hier, als ruim 2 MB zip file :  RosAsm (downloadpage)

WoW.exe ontzipt is 35 Kb maar daar zitten alle 100 citaten met auteurs bij, als data in de executable.

Bovendien - iets ander bijzonder fraais van RosAsm - kunt u Wow.Exe openen met RosAsm en alle programma-code zit k in het exe bestand. Ik heb deze code ook apart bijgevoegd in WoW.zip, zodat u deze desgewenst kunt bekijken zonder RosAsm.

Trouwens, wat de bovenstaande broncode aangaat... wie C of C++ kent herkent wellicht in deze assembler-code calls naar bekende Windows-routines - veel programmeren is delegeren. (En RosAsm produceert tot nu toe alleen executables voor Windows.)

Maar goed. Als u Windows als OS heeft, dan kunt u Wow uitproberen, en 100 fraaie citaten in doses van n aan uzelf toedienen. Het is een zeer simpel maar toch behoorlijk leerzaam Windows-programmaatje. (*)

En wie van programmeren houdt zou RosAsm moeten uitproberen. Bijzonder mooi en met groot potentieel voor het verhelderen van zeer veel dat computers en programmeren betreft op het allerdiepste niveau!

Ik kan nu ook in beginsel alle citaten uit het Philosophical Dictionary in een latere WoW zetten, want dat vergt alleen copy & paste.

Wie weet... en dit is nu n van de dingen die ik mooi en leuk vind, om nogal wat redenen.


(*) Omdat het assembler betreft: Nee, het programmaatje doet niets dan at random een citaat + auteur kiezen en tonen. (WoW.exe in de Verkenner selecteren gevolgd door Enter, en dat laatste zo lang als u het leuk vindt. C'est tout.)

P.S. 30 jan 2008: Er is een nieuwe versie, die de oude vervangt.

Maarten Maartensz

        home - index - top - mail