Anagramm programmieren mit Assembler

Frank1

Grünschnabel
Hallo,
ich möchte ein Anagramm schreiben ,dass mit ein wort merehre wörter generieren.
Z.B. das wort MEHL,mit die Buschstaben dieser wort andere wörter erzeurgen.
Wär sehr nett wenn mir da jemand helfen kann!




Danke für dein Anwort,
die Wörter müssen generiert werden .


Hallo,
ich habe versucht ein Programm zu schreiben dass alle Anagramm eines wortes ausgibt.Hier ist das code,kann mir jemand weiterhelfen,da mein code ein paar davon generiert.
dosseg
.model small
.stack 100h
.data

msg db "EIS",0
string1 db "Es gibt f?r das Wort ",0
string2 db "m”glichen Anagramme.",0
string3 db "Die L„nge des Wortes betr„gt:",0
l„nge dw ?
zeichen dw ?
n dw ?


include macros.mac
jumps
perm macro
schleife:
mov al, msg[si]
mov Zeichen, ax
writeS Zeichen

boucle:
cmp di, si
je weiter
mov al, msg[di]
mov Zeichen, ax
writeS Zeichen
inc di
cmp di, l„nge
jb boucle

weiter:
inc di
cmp di, l„nge
jb boucle

nl
xor di, di
inc si
cmp si, l„nge
jb schleife

endm

.code

laenge_bestimmen proc ;Anweisung f?r Unterprogramm
xor si,si ;si-Register l”schen
loopo:
mov al, msg[si] ;Zeichen, wo si zeigt nach al laden
inc si ;si erh”hen
cmp al,0h ;vergleiche Zeichen in al mit Null-Byte, d.h Ende des String
jne loopo ;springe, wenn ungleich nach loop0
mov l„nge,si ;wenn gleich, lade si nach l„nge
dec l„nge ;l„nge erniedrigen um den Null-Byte nicht mitzuz„hlen
writeS string3
writez l„nge ;Ausgabe der L„nge der Zeichenkette

ret
laenge_bestimmen endp ;Ende des Untgerprogramms
start:
mov ax,@data
mov ds,ax

call laenge_bestimmen ;ERGEBNIS Stringl„nge
nl
;****************************************************************************
;Hier wird die Anzahl der m”glichen Anagrammen berechnet
;****************************************************************************
mov ax, l„nge ;ax mit l„nge des String laden
mov n, ax ;Variable n mit ax laden
sub ax, 1 ;ax um 1 erniedrigen
mov cx, ax ;Anzahl der Durchl„ufe fur loop-Befehl
mov ax, n ;n nach ax
fac: sub n, 1 ;n = n-1
mul n ;ax=ax*n
loop fac ;wiederhole fac bis cx=0

writeS string1
writeS msg
writeZ ax
writeS string2
nl
;****************************************************************************
;Ausgabe der Anagramme (die haben nicht unbedingt ein Sinn)
;****************************************************************************
xor bx, bx
mov di, l„nge
sub di, 2
mov si, di


perm

;****************************************************************************
pende: mov ax,4c00h ;Anweisung zur Terminierung des Programms
int 21h

end start
 
Zuletzt bearbeitet:
Hallo,

interessantes Projekt, aber einige Fragen werfen sich auf, müssen es Wörter sein, die generiert werden oder Buchstabenkombinationen also möchtest du HELM oder auch ein gewirr aus Buchstaben wie zum Beispiek LMHE sollte letzteres der Fall sein hab ich keine Idee wie man das mit Assembler realisieren könnte, da würde ich dann empfehlen auf eine Hochsprache umzusteigen und diese dann halt möglichst Assemblernah zu nutzen. Ist ersteres der Fall dann müsstest du halt zu erst einmal eine Art Bibliothek anlegen, in der jede Menge Wörter drinstehen. Hast du dieses musst du Anfangen indem du die Länge des Strings nimmst und den String bloß mit den Strings in der Bibliothek vergleichst, die gleich lang sind. Dann musst du Buchstabe für Buchstabe vergleichen. Also anfangen mit M dann den anderen String auf Ms untersuchen und so weiter. Sobald nix gefunden wird gleich abbrechen.

Ganz schöner Aufwand
Gruß stephsto
 

Neue Beiträge

Zurück