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ür

    mov	[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

    Quelle:
    http://www.nasm.us/doc/nasmdoc3.html#section-3.4.2



  • 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 face

    Quelle:
    http://www.nasm.us/doc/nasmdoc3.html#section-3.4.2

    Das 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.

    http://graphemica.com/ä



  • 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
    

Anmelden zum Antworten