Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Assemblerfrage: Inhalt eines Registers ausgeben

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Profi-Forum
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 11.06.2006, 21:41    Titel: Assemblerfrage: Inhalt eines Registers ausgeben Antworten mit Zitat

Hallo,

ich habe folgenden Code:
Code:
org 100h
section .text
 mov bx,0h
 start:
 mov dx,hello_world
 mov ah,09h
 int 21h

 add bx,1h
 test bx, 0fh
 jne start

 mov ah,4Ch
 int 21h

section .data
 hello_world: db 'hello, world', 13, 10, '$'

Das entspricht diesem QB-Programm:
Code:
bx%=0
START:
PRINT "hello, world"
bx%=bx%+1
IF bx%<>16 THEN GOTO start
END

Meine Frage dazu: Wie kann ich auch noch den Inhalt des Registers bx ausgeben, das ich ja zum Schleifenzählen benutze?

Der QB Code sähe so aus:
Code:
bx%=0
START:
PRINT LTRIM$(STR$(bx%)); "hello, world"
bx%=bx%+1
IF bx%<>16 THEN GOTO start
END


Viele Grüße!
Sebastian
_________________

Der Markt regelt das! | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
A.K.



Anmeldungsdatum: 02.05.2005
Beiträge: 467
Wohnort: HH

BeitragVerfasst am: 11.06.2006, 22:05    Titel: Antworten mit Zitat

Das kommt drauf an wie groß der Zähler BX wird.
Wenn er 1-stellig bleibt, also 0-9 dann kannst du folgendes dazwischensetzen:

Code:

PUSH BX 'BX zwischenspeichern
ADD BX,30 'da BX 0-9 ist, addieren wa 48 Dazu was dann als ASCII "0"-"9" ergibt
MOV AH,0E 'Unterfunktion Eh
MOV AL,BL 'AL = ASCII-Zeichen
MOV BL, 07 'BL = Farbe
INT 10 'INT 10h, BIOS-Interrupt, gibt ein Zeichen auf Cursor aus und rückt ein weiter
POP BX 'BX wieder herstellen


MFG A.K.
_________________

http://forum.IconSoft.de
http://www.pnpbb.de - hol dir jetzt dein eigenes kostenloses Forum *NEU*
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen Yahoo Messenger MSN Messenger
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 12.06.2006, 18:58    Titel: Antworten mit Zitat

Hi AK, danke für den Code. lächeln Wie würde es denn mit beispielsweise 16 funktionieren? In den meisten Tutorials wird das nicht behandelt. Ist die Ausgabe der "Variablen", also der Register so kompliziert?
_________________

Der Markt regelt das! | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
volta



Anmeldungsdatum: 04.05.2005
Beiträge: 1874
Wohnort: D59192

BeitragVerfasst am: 12.06.2006, 20:36    Titel: Antworten mit Zitat

Code:
..
mov cx,bx
cmp cx,9
jng ziffer   '<= 9 dann eine Zahl
sub cx,0ah   '10 abziehen dann ist 2 Zahl einstellig
mov ax,0e31h 'funktion 0e; ascii 31h anzeigen
mov bx,7
int 10
ziffer:
add cx,30h   'ist einstellig
mov al,cl
mov ah,0eh
mov bx,7
int 10
..


Gruß Volta
_________________
Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Profi-Forum Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz