8086 masm-Programm für Palindrom prüfen
.code
>
> start:
> mov ax,03h
> int 10h
> mov ax,seg msg1
> mov ds,ax
> mov dx,offset msg1
> mov ah,09h
> int 21h
> mov si,offset str
> read:
> mov ah,01h
> int 21h
> cmp al,0dh
> je next
> mov [si],al
> inc si
> inc count
> jmp read
> next:
> mov di,offset str
> mov al,count
> mov cl,al
> mov ch,00h
> dec si
> check:
> mov al,[si]
> cmp al,[di]
> jne nt
> dec si
> inc di
> loop check
> mov ax,seg msg2
> mov ah,09h
> int 21h
> jmp exit
> nt:
> mov ax,seg msg3
> mov ds,ax
> mov dx,offset msg3
> mov ah,09h
> int 21h
> exit:
> mov ax,4c00h
> int 21h
> END start
Dies ist Teil des 8086 masm-code für die überprüfung, ob ein string ein Palindrom ist oder nicht.msg1 ist "Enter Text", msg2 ist 'string Palindrom',msg3 ist 'string ist nicht palinrome'
Was bedeutet "cmp al,0dh' führt in diesem code?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es ist nicht erwähnt, wo dieser code herkommen, aber es ist unvollständig (z.B. wie Mario Punkte aus: keine
next:
label) vorhanden. Aber wir können Stück es zusammen:Alles, was der code tut, wird eine Meldung angezeigt, um den Benutzer auffordern, eine Zeichenkette einzugeben, beendet durch ein line feed (0dh) und liest den string in (Ort
str
). Es bietet auch die Anzahl von Zeichen Lesen Sie incount
. Wostr
,count
, undmsg1
definiert sind, sind nicht gegeben.Dem obigen Stück assembler-sagt alles und nichts. Es ist wahrscheinlich ein Stück code, der verwendet wird, indem die (Microsoft -) DOS, wo die "int 21h", war der König der Eintrag Punkte.
http://en.wikipedia.org/wiki/MS-DOS_API
Durch die Art und Weise, wie die docs sagen, der Aufruf oben bezieht sich auf die service-01h (=AH), und ruft einfach ein Zeichen von der Konsole aus. Sobald die "int 21h" gibt, ist der eigentliche eingegebenen Zeichen gespeichert, im low-byte des Akkumulators, das ist AL.
Zu diesem Zeitpunkt die "cmp" - Anweisung vergleicht die AL mit festen code 0Dh (d.h. CR=carriage return). Da der Vergleich erfolgt durch eine Subtraktion von AL minus 0Dh, wäre das match erfolgreich sein, wenn das Ergebnis null ist. Wenn ja, springt das Programm zum label "next".
Ich konnte wirklich nicht mehr sagen, aber es gibt keine "Palindrom" - Prüfung auf alle in diesem snippet!
UPDATE: es sieht aus, dass das snippet geändert wurde!
Gut, auch mit dem neuen code scheint es, dass es kein Palindrom überprüfen, zumindest auf den ersten Blick.
http://en.wikipedia.org/wiki/INT_10H
Sieht es aus wie eine Zeicheneingabe mit echo. Allerdings bin ich ein wenig eingerostet und ich konnte Fehler.
Dieser code bekommt einen String aus der Benutzer und überprüft, ob es eine Palindrom oder nicht.