Ein paar Beispielprogramme in x86 Assembler für DOS - Teil 1: Sound abspielen mit dem Lautsprecher

  • Ich fange mal an, Beispielprogramme in x86 Assembler hier zu posten, meistens als .COM Datei (small is beautiful!).


    Teil 1 - Abspielen von Tönen (Noten), rechnergeschwindigkeitsunabhängig (also auch in DOSBOX funktionsfähig)


    Dazu werden zwei Peripheriebausteine gequält, nämlich der 8253 und der 8255.

    Der 8253 ist ein programmierbarer Intervall-Timer und ist eigentlich in jedem PC-kompatiblen Rechner vorhanden, wenn nicht als Einzelbaustein, dann integriert im Chipsatz. Die I/O Adresse der Register dazu lauten 42h und 43h.

    Der 8255 ist ein programmierbarer Peripherie-Schnittstellen-Baustein und hat einer seiner Ports an I/O Adresse 61h.


    Für das Delay war ich zu faul, das selbst zu programmieren, da habe ich mich bei einer BIOS-Funktion bedient.

    INT 15h Funktionswert 86h ist ein Delay Routine wo der Wert in Mikrosekunden in Register CX und DX angegeben wird.


    Der Quellcode, das assemblierte Maschinenprogramm und eine kleine Batchdatei findet sich dazu im ZIP.

    Als Assembler sollte MASM 5.0 / 5.10 genutzt werden. Wenn MASM 6.0 oder höher genutzt wird, sieht die Syntax etwas anders aus (der Quellcode muss also angepasst werden).


    Der nächste Beitrag in meiner geplanten Serie hat dann was mit einer Videokarte zu tun.