Umlaut in NASM
-
Hi,
Eine Aufgabe besteht darin, Umlaute zu formatieren (also z.B. soll ae zu ä umgewandelt wird). Das Programm ist soweit fertig, mein Problem besteht dabei, den Umlaut einzufügen.
Ich benutze dafürmov [buffer], word 0xe4
Allerdings wird anstelle des "ä" ein � ausgegeben.
Assembler: NASM
OS: ubuntu 12.10
shell: konsole (kde)
-
Zeigt
perl -e 'print pack("H*", "e4"), "\n"'
Auch so einen Mist an öder ein hübsches ä?
-
Zeigt das gleiche hässliche Fragezeichen an.
-
Cyres schrieb:
shell: konsole (kde)
Und welche Zeichenkodierung benutzt deine Shell? Davon hängt ab, was du ausgeben musst.
-
MFK schrieb:
Cyres schrieb:
shell: konsole (kde)
Und welche Zeichenkodierung benutzt deine Shell? Davon hängt ab, was du ausgeben musst.
Oh, habe ich vergessen anzugeben: UTF-8
-
Vielleicht hilft das:
aus der NASM-Dokumentation:
Unicode characters specified with \u or \U are converted to UTF-8. For example, the following lines are all equivalent:
db
\\u263a
; UTF-8 smiley face
db\\xe2\\x98\\xba
; UTF-8 smiley face
db 0E2h, 098h, 0BAh ; UTF-8 smiley face
-
gigg schrieb:
Vielleicht hilft das:
aus der NASM-Dokumentation:
Unicode characters specified with \u or \U are converted to UTF-8. For example, the following lines are all equivalent:
db
\\u263a
; UTF-8 smiley face
db\\xe2\\x98\\xba
; UTF-8 smiley face
db 0E2h, 098h, 0BAh ; UTF-8 smiley faceDas hat leider nicht geholfen. Geholfen hat allerdings
mov [buffer], word 'ä'
Trotzdem danke für die Hilfe
-
Cyres schrieb:
Zeigt das gleiche hässliche Fragezeichen an.
Komisch. Zeigt bei mir ein häsches ä an.
Dachte eigentlich, ich hätte auch UTF8.Mal schauen, was Dein Fragezeichenkästchen bei mir ist.
$ echo � | hexdump 0000000 bfef 0abd 0000004
Und kann ich es reproduzieren?
$ perl -e 'print pack("H*", "efbfbd"), "\n"' �
Jo.
Und das normale ä von der Tastatur gibt
$ echo ä | hexdump 0000000 a4c3 000a 0000003
nebst
$ perl -e 'print pack("H*", "c3a4"), "\n"' ä
Aber e4 geht auch.
$ perl -e 'print pack("H*", "e4"), "\n"' ä
Die Konsole scheint da viel rumzuzaubern. Mit rxvt-unicode habe ich das Probiert.
Zum Gegentest nochmal LXTerminal probiert.
Oha! Alles AUsgaben gleich außer der letzten, ausgerechnet die letze Sache, einfach "e4" klappt da nicht.
-
volkard schrieb:
$ perl -e 'print pack("H*", "c3a4"), "\n"' ä
Das funktioniert bei mir auch, seltsam
-
Wieso ist das seltsam? C3A4h ist ä in UTF-8. Du hast den Unicode Codepoint (U+00E4) aus seltsamen Gründen genommen.
-
Hahaha ich muß immer lachen bei Linux und Sonderzeichen.
Gib doch statt dem Sonderzeichen einfach ein Smiley heraus
Und was soll man überhaupt bei einem Wort wie zuende machen?hm...was macht eigentlich debug so?
Microsoft Symbolic Debug Utility Version 2.00 (C) Copyright Microsoft Corp 1984, 1985, 1986 Processor is [80386] -e100 "hätte das Häschen einen häßlichen Scheißhaufen..." -d 1E6D:0100 68 84 74 74 65 20 64 61-73 20 48 84 73 63 68 65 h.tte das H.sche 1E6D:0110 6E 20 65 69 6E 65 6E 20-68 84 E1 6C 69 63 68 65 n einen h.aliche 1E6D:0120 6E 20 53 63 68 65 69 E1-68 61 75 66 65 6E 2E 2E n Scheiahaufen.. 1E6D:0130 2E 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 1E6D:0140 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 1E6D:0150 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 1E6D:0160 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ 1E6D:0170 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
hm..und Cygwin?
$ echo "hätte das Häschen einen häßlichen Scheißhaufen..." | hexdump 0000000 c368 74a4 6574 6420 7361 4820 a4c3 6373 0000010 6568 206e 6965 656e 206e c368 c3a4 6c9f 0000020 6369 6568 206e 6353 6568 c369 689f 7561 0000030 6566 2e6e 2e2e 000a 0000037
Sieht aber komisch aus...
nochmal$ echo "hätte das Häschen einen häßlichen Scheißhaufen..." | hexdump -C 00000000 68 c3 a4 74 74 65 20 64 61 73 20 48 c3 a4 73 63 |h..tte das H..sc| 00000010 68 65 6e 20 65 69 6e 65 6e 20 68 c3 a4 c3 9f 6c |hen einen h....l| 00000020 69 63 68 65 6e 20 53 63 68 65 69 c3 9f 68 61 75 |ichen Schei..hau| 00000030 66 65 6e 2e 2e 2e 0a |fen....| 00000037