Nasm: SBC-86 Fehler im Programm ansprechen von Segmentdisplay
-
Also ich habe folgendes Programm geschrieben:
; Konstanten led equ 0h seg1 equ 90h seg2 equ 92h seg3 equ 94h seg4 equ 96h seg5 equ 98h seg6 equ 9Ah seg7 equ 9Ch seg8 equ 9Eh ; Startadresse org 100H mov bx, leer mov al, [bx] ;Symbol "Leer" laden ;Segmente zu beginn "Löschen" out seg3, al out seg4, al out seg5, al out seg6, al out seg7, al out seg8, al WDH: in al, 0 ;Einlesen von Binary Input mov cx, ax ;Kopie von Eingebenen Binärwert anlegen zur späteren Bitmanipulation out led, al ;Ausgabe an Dioden out seg1, al ;Ausgabe an ganz Rechte Segmentanzeige ;Niederwertige Bits in Hex ausgeben mov bx, hex and al, 00001111b add bx, ax mov al, [bx] out seg2, al ;Höherwertige Bits in Hex ausgeben shr cx, 4 ;FEHLER? Programm springt ausserhalb des mov bx, hex add bx, cx mov al, [bx] out seg3, al jmp WDH ;Stapelsegment leer db 00000000b ;Leere Anzeige hex db 00111111b ;0 db 00000110b ;1 db 01011011b ;2 db 01001111b ;3 db 01100110b ;4 db 01101101b ;5 db 01111101b ;6 db 00000111b ;7 db 01111111b ;8 db 01101111b ;9 db 01110111b ;A db 01111100b ;b db 00111001b ;C db 01011110b ;d db 01111001b ;E db 01110001b ;F
Also ich spreche bei dem Programm zunächst auf dem SBC-86 ne 8-Stellige Schalter Reihenfolge an und geben diese Positionen auf den 8 Dioden dahinter und auf einem 7 Segmentdisplay aus.
Nun steht im Stapelspiecher zunächst welche kombination von den 8 ziffern welche ziffer auf dem Segmentdisplay darstellt.
Außerdem soll man mit 4 Schaltern , eine entsprechende zahl binär eingeben und diese soll als hex ziffer von 0 bis F angezeigt werden.
Soweit so gut das geht bei mir genau einen Programmdurchlauf gut, aber direkt hinter der zeile
shr cx, 4
noch vor dem shr befehl springt das programm irgendwo auf eine Adresse ausserhalb des Bereichs und läuft dort in ner endlossschleife statt, in die endlosschleife im programm zu springen.
Nur woran könnte das ganze liegen?
Um das Programm vielleicht mal lauffähig zu sehen hötte ich den SBC-simulator + debugger: http://mpt3.et-inf.fho-emden.de/mnp/mnp.html
zu finden unter simulation, wenn sich mal jemand nen bild in der simulation von dem programm machen möchte :pHabs aber auch schon auf dem SBC-86 drauflaufen gehabt und da trat der selbe fehler auf...
-
Kann es sein, dass euer SBC-Dingens mit einer 8086/186-CPU laeuft? Die kennt nur shift-Befehle mit der fixen Laenge 1, also zB. shr cx, 1 - davon brauchst du dann eben 4 hintereinander.
-
hm das werde ich doch gleich mal testen,
ist in der tat nen 8086.hab schon vermutet das es an dem befehl irgendwo hakt
edit:
Vielen dank jetzt tut es, was es soll