Assembler Taschenrechner

bbykn

Newbie
Registriert
Jan. 2012
Beiträge
6
Hey leute ich habe einen Taschenrechner im Assembler geschrieben, ich bekomme aber fehlermeldung ich weiss nicht warum. also ich möchte zwei zahlen, die vom Benutzer eingeben worden sind, speichern dann addition,sub,mult,div durchführen.
Code:
include  macros.mac
jumps

	.CODE
	



Start: 	mov ax,@Data 	;Initialisierung Datensegment
	mov ds,ax
	
	




	writeS Begruessung 
	nl 
	nl
	nl
	
	mov ah,01h
	int 21h
	
	
	cmp al,Komma
	je Ende

	nl
	
	print "Erste Zahl:"

	readZ Zahl1
	
	
	print "Zweite Zahl:"

	readZ Zahl2
	
	
	print "Welche Operation möchten Sie durchführen?" 
	

	readZ op		;Operator einlesen
	cmp op, 031h 		;Vergleich 1 mit op
	je Addit		;falls gleich springe Addit

	cmp op, 032h 		;Vergleich 2 mit op
	je Subt			;falls gleich springe Subt


	
	cmp op, 033h 		;Vergleich 3 mit op
	je Multip		;falls gleich springe Multip

	
	cmp op, 034h 		;Vergleich 4 mit op
	je Divid		;falls gleich springe Divid

	cmp op, 035h 		;Vergleich 5 mit op
	je Ende			;falls gleich springe 	

Addit:

	mov ah,Zahl1
	add ah,Zahl2
Subt:

Multip:

Divid:

Ueberlauf:

	print "Ueberlauf...!"
	jmp Start
Ende:	

			
	mov	ax,4c00h		;Programmende
	int	21h
	end	Start

also ich bin noch nicht fertig, ich komme hier nicht weiter, wo muss ich den code schreiben, dass ich zwei zahlen erstmal speichere?
mov ah,Zahl1
add ah,Zahl2

da liegt fehler...
 
Zuletzt bearbeitet:
Morgen,
Syntaxfehler schließe ich jetzt schonmal aus, ohne den Code zu lesen. Das müsste ann ja der Compiler anzeigen.
 
Warum schreibst Du das Programm in Assembler? Damit ist es so gut wie nicht portierbar.
Nimm lieber C.

Früher habe ich auch in Assembler programmiert (Sharp PC-1500A). Nette Funktionen nachprogrammiert wie n! (Fakultät), die dem orginal Gerät fehlten.

In C hast Du eine recht große Chancen deine Programme auf anderen Plattformen weiter nutzen zu können.

Leider hast Du uns den Compiler und das OS nicht verraten.

print und writeS gibt es nur in Hochsprachen, wie Pascal. Da fehlt noch eine ganze Menge.
 
Zuletzt bearbeitet von einem Moderator:
ich benutze Turbo assembler TASMX, 8086
das ist eine Aufgabe, ich muss es in Assembler schreiben (da ich auch Klausur schreiben werde)
ich habe ja doch geschrieben, das es noch nicht fertig ist. bin grad dabei zu programmieren.
 
Zuletzt bearbeitet:
Da DU für eine Klausur lernst, viel Spaß.

Die Lust am programmieren kommt während des schreibens des Codes.

Viel Hilfe kannst Du hier nicht erhoffen. Wir machen schließlich nicht deine Arbeit.
 
ich hab ja nicht erwartet, dass ihr mir die ganze Code schreibt. Ich habe nur gefragt, wie ich das anders schreiben könnte, weil ich da fehlermeldung bekomme.

Ihr müsst doch nicht zurückschreiben, wenn Ihr nicht mal helfen wollt. Natürlich kann ich Frage haben oder Hilfe brauchen, wenn ich für die Klausur lerne, schließlich sind wir alle Menschen und keine Maschinen.. Also bitte mal bisschen Toleranz zeigen..

Ausserdem habe ich natürlich Lust auf Programmieren, das macht mir spass. so schönen Tag noch
 
Zuletzt bearbeitet:
Welche Fehlermeldung du bekommst möchtest du uns aber nicht mitteilen?
Achte auf Groß-/klein Schreibung: writeS writes
 
hey robot in assembler ist es egal, ob du gross oder klein schreibst. außerdem habe ich das Programm fertig programmiert. nur division funktioniert irgendwie nicht ansonsten läuft alles. vg
 
Zuletzt bearbeitet:
dass du in schule/uni mit intel 16-bit assembler für ms-dos programmierst finde ich schon leicht grotesk. für die division liegt ein ähnlicher fall vor wie für die multiplikation. du verwendest dazu div/idiv <reg>. es wird
der 32-bit-wert in dx:ax durch den 16-bit-wert in <reg> dividiert. das ergebnis befindet sich dann in ax (quotient) und in dx (rest).
 
Zurück
Oben