Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Zahlenausgabe nicht möglich

Frage Entwicklung Assembler

Mitglied: supernicky

supernicky (Level 1) - Jetzt verbinden

10.03.2011 um 23:30 Uhr, 4186 Aufrufe, 5 Kommentare

Ergebnis einer Berechnung kann nicht ausgegeben werden....

Hallo,

Ich bischäftige mich erst seit kurzem mit Assembler, aber .........

es ist mir nicht möglich nach Eingabe zweier Zahlen das Ergebnis einer Berechnung auf dem Schirm auszugeben.
Mit Zeichenketten funktioniert das problemlos..

Auch in den Büchern werden nicht Ergebnisse ausgegeben, sondern immer nur nach einem Vergleich der jeweilige vordefinierte String.

Ist es denn nicht möglich???

(zahl1 = 5 und zahl2 = 12, also nur was kleines)

mov al, zahl1
mul zahl2
mov ergebnis, ax


mov dx,ergebnis
"mov dx, offset ergebnis und lea dx, ergebnis funktionieren auch nicht...."

mov ah,09h
int 21h

hiermit erreicht man ein paar Töne aber keine brauchbare Ausgabe auf dem Schirm

Wäre nett wenn jemand Licht ins Dunkel bringen könnte.

Gruß, Nicky
Mitglied: 76109
11.03.2011 um 01:08 Uhr
Hallo supernicky!

So einfach geht das nicht.

Du musst Zahlenwerte vorher in einen String im ASCII-Format konvertieren. Dazu schreibt man in der Regel Konvertierungsroutinen, die eine Zahl in einen ASCII-String umwandeln.

Beispiel: die Zahl 0 entspricht dem ASCII-Wert 30h, die Zahl 9 dem ASCII-Wert 39h

Bei zweistelligen Zahlen bis 99 (AX) und vierstelligen Zahlen bis 9999 (EAX) gehts noch relativ einfach:

01.
Test Proc Pascal Near 
02.
 
03.
    Local buff:Byte:32  ;Buffer 32 Byte (Stack-Variable) 
04.
     
05.
    mov ax, 99          ;AX = Zahl 99 
06.
    aam                 ;AH = Zahl 9, AL = Zahl 9 
07.
    add ax, 3030h       ;AH = ASCII 9, AL = ASCII 9 
08.
     
09.
    mov [buff], ax      ;ASCII 99 in Buffer 
10.
    mov [buff+2], '$'   ;Stringende mit $ angeben sonst Piepts höchstwahrscheinlich 
11.
    lea dx, [buff]      ;DX = Offset Buffer 
12.
     
13.
    mov ah, 9           ;Funktion Stringausgabe 
14.
    int 21h             ;Dos-Int 21h 
15.
     
16.
    ret 
17.
 
18.
Endp
Versuchs mal (ich kanns bei mir nicht testen)

Gruß Dieter
Bitte warten ..
Mitglied: supernicky
11.03.2011 um 01:32 Uhr
Hallo Dieter,

es geht.

ich werde mal ein paar Versuche starten und noch etwas im Buch lesen..

den aam Befehl kenne ich noch nicht...
wieso eine addition mit 12336 aus einer Binär eine Dezimalzahl macht weiß ich auch noch nicht.. aber ich bekomme es noch raus

Erstmal danke für den Code..

Nicky
Bitte warten ..
Mitglied: supernicky
15.03.2011 um 23:11 Uhr
Hallo nochmal,,

mit der Zahlenausgabe klappt es jetzt... aber..

wenn ich mit einem Buffer arbeite (5 Byte groß) und ich überschreibe ein Byte mit einem neuen Wert
z.B. String "Nicky", "$"

mov bx, offset String
mov [bx], "M"

dann sollte eigentlich nur das N durch ein M ausgetauscht werden, was auch passiert. Jedoch wird dabei immer das nächste Byte gelöscht.
Sobald ich nun beim y ankomme und mache daraus ein i, wird das "$" ebenfalls gelöscht und ich erhalte wieder Signale aus dem All.

Kann hier vielleicht jemand sein Wissen veröffentlichen?

Danke, Nicky
Bitte warten ..
Mitglied: 76109
15.03.2011 um 23:24 Uhr
Hallo Nicky!

versuchs mal mit:
01.
mov byte ptr [bx], 'M'
Gruß Dieter

PS. Das '$' musst Du bei der Buffergröße auch mitzählen. Es schadet auch nicht, wenn er größer ist, als benötigt wird
Bitte warten ..
Mitglied: supernicky
15.03.2011 um 23:35 Uhr
jetzt wo ich es lese fällt es mir wieder ein...

klappt wieder einmal...

danke
Bitte warten ..
Neuester Wissensbeitrag
Microsoft

Lizenzwiederverkauf und seine Tücken

(5)

Erfahrungsbericht von DerWoWusste zum Thema Microsoft ...

Ähnliche Inhalte
Windows Netzwerk
Kein RDP über VPN per MS-TSC möglich (9)

Frage von survial555 zum Thema Windows Netzwerk ...

Microsoft
Keine Anmeldung mehr möglich (Server 2012 R2) (4)

Frage von Shnuuu zum Thema Microsoft ...

Heiß diskutierte Inhalte
Windows Netzwerk
Windows 10 RDP geht nicht (16)

Frage von Fiasko zum Thema Windows Netzwerk ...

Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...

Microsoft Office
Keine Updates für Office 2016 (13)

Frage von Motte990 zum Thema Microsoft Office ...