- 締切済み
shift_jisの文字コードを出力させるには
圧縮・解凍プログラムを作ろうと考えた時、大量の文字が必要であることに気づき、 Shift_Jisの全角文字を利用してみようとおもいました。でも、どうやって利用するかがわからず、 とりあえず16進数で8940hである院という文字をNASMアセンブラで1文字出力してみることにしました。 org 100H section .text start: mov ax, 0200H mov edx, 8940H int 21H mov ah, 4CH int 21H これでコンパイルはできたものの、実行すると変な処理をしていました。 そこで疑問に思ったことは、 なぜDLレジスタにASCII文字コード入れるとその文字が出力されるのか、ASCIIコード自体はそれに対応する文字を格納するアドレスではないはずなのに。 結局どうすればShift_jis全角文字がつかえのか?と。 申し訳ありませんがよろしくおねがいします。 それと、たくさん文字がつかえるコード(規格といった言い方で正しいのでしょうか?)の情報をもらえたらうれしいです。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- Tacosan
- ベストアンサー率23% (3656/15482)
その「変な処理」とはどのような処理でしょうか? あと, どうでもいいけど「なぜDLレジスタにASCII文字コード入れるとその文字が出力されるのか、ASCIIコード自体はそれに対応する文字を格納するアドレスではないはずなのに」は意味不明. DLレジスタとアドレスはどう関連しているんでしょうか?
- asuncion
- ベストアンサー率33% (2127/6290)
C/C++ とはどのような関係があるご質問でしょうか?
補足
すいません。 C言語でどうやってUnicodeの文字コードを利用して出力できるのかをお聞きできたらなとおもいます。 アセンブラの話がでたのは、C言語で出力の仕方がわからなくて、 こういうのはインラインアセンブラのほうが簡単かもしれないと思い、 実験で上記のプログラムをやってみたら失敗したので、 なんでなんだろうと考えて打っていたらまったく話がそれた文ができてしまいました。 本当にすみませんでした。
補足
変な処理は僕の勘違いでした。すみませんでした。コマンドプロンプトに出力させませんでした。 文字を一字出力する場合、DLレジスタに出力する文字を入れると本にかいてあったのですが、 その文字って数字(Aなら41H)で表しているけど、アドレスではないので、 どこかのファイルでその数字が定義されていると思うのですが、Shift_jis全角文字のコードを使用するのに特別な事(あるファイルにリンク(?)する)が必要なのかどうかということです。 つたない文章でわかりにくくて本当にすみません。