• 締切済み

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全角文字がつかえのか?と。 申し訳ありませんがよろしくおねがいします。 それと、たくさん文字がつかえるコード(規格といった言い方で正しいのでしょうか?)の情報をもらえたらうれしいです。

みんなの回答

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.2

その「変な処理」とはどのような処理でしょうか? あと, どうでもいいけど「なぜDLレジスタにASCII文字コード入れるとその文字が出力されるのか、ASCIIコード自体はそれに対応する文字を格納するアドレスではないはずなのに」は意味不明. DLレジスタとアドレスはどう関連しているんでしょうか?

hikikaeken
質問者

補足

変な処理は僕の勘違いでした。すみませんでした。コマンドプロンプトに出力させませんでした。 文字を一字出力する場合、DLレジスタに出力する文字を入れると本にかいてあったのですが、 その文字って数字(Aなら41H)で表しているけど、アドレスではないので、 どこかのファイルでその数字が定義されていると思うのですが、Shift_jis全角文字のコードを使用するのに特別な事(あるファイルにリンク(?)する)が必要なのかどうかということです。 つたない文章でわかりにくくて本当にすみません。

  • asuncion
  • ベストアンサー率33% (2126/6288)
回答No.1

C/C++ とはどのような関係があるご質問でしょうか?

hikikaeken
質問者

補足

すいません。 C言語でどうやってUnicodeの文字コードを利用して出力できるのかをお聞きできたらなとおもいます。 アセンブラの話がでたのは、C言語で出力の仕方がわからなくて、 こういうのはインラインアセンブラのほうが簡単かもしれないと思い、 実験で上記のプログラムをやってみたら失敗したので、 なんでなんだろうと考えて打っていたらまったく話がそれた文ができてしまいました。 本当にすみませんでした。

関連するQ&A

  • Shift-JIS? Shift_JIS?

    metaタグの文字コードの記述で質問がございます。 Shift-JIS(ハイフン) Shift_JIS(アンダーバー) どちらが正しいのでしょうか? hift-JISで当然のように説明しているサイトもあれば Shift_JISが正解ですって説明しているサイトもあるので どう判断すればよいのか分かりません。(^_^;)ゞ ご存知でしたら宜しくお願いいたします。

    • ベストアンサー
    • HTML
  • UTF-8 と SHIFT-JIS について

    UTF-8 と SHIFT-JIS について SHIFT-JIS は 半角文字でも全角文字でも 2 バイトとなる UTF-8 は 半角文字でも全角文字でも 1 バイトとなる この認識が正しいかどうかどなたか教えてください!

  • 文字コードを指定する際sjisなのかshift_jisかshift-jisなのか

    お世話になります。 perl5.8において文字コードを指定or変換する際 shift_jis shift-jis Shift_JIS SJIS EUC_JP EUC-JP utf-8 utf8 -と_の違いや大文字小文字の違いなど記述の違いを良く見かけるのですが、実際決まった指定方法などはあるのでしょうか。 逆に文字コードを指定する際、●●のように指定しても無効で●●のように指定しないと有効ではないですよ。。みたいな。 またperlに限らずPHPやHTML、XMLなどではどうなっているのでしょうか どなたかご存知の方いましたら ・上記3つの文字コードについてと ・perlのバージョンの違い、言語の違いなど 文字コードの文字列の指定に関する全般についてご教授願えませんでしょか。 宜しくお願い致します。

    • ベストアンサー
    • Perl
  • JIS、SHIFT-JIS、EUCはなぜできた?

    教えてください。 文字コードについて調べています。アルファベットはASCIIコードで統一されているために、特に問題がなく、日本語にも JISコードという標準化されているコードがあります。 なので、基本的にはこれをみんなが使えば、文字化けなどという問題には悩まされなくてすむはず。 なのに、なぜ Windows では Shift-JISなどという独特な文字コードを使い、UNIX系では EUCコードを使っているのでしょう。いったい、どの文字コードが一番初めにできて、なぜそれで標準化を図ることができなかったのかなど、日本語文字コードに関する歴史について、ご存知の方、ぜひ教えていただければ幸いです。

  • phpの文字コードをシフトJISに変換する

     SSIを利用して、PHPプログラムをHTMLページの中央部に呼び出して表示しようとしています。  それ自体は単純なことですが、HTMLページの文字コードはシフトJISで、PHPの文字コードはEUCと、異なるため、どうしても文字化けが起きてしまいます。  これを解消する方法はありますか。  PHPの出力文字コードをシフトJISにするのが一番単純かとも思いますが、他の方法も含め、なにかよい方法がありましたら教えてください。

  • Shift_JISについて

    知り合いにモバイルのサイト作成を頼まれて作成中で 文字コードをShift_JISで統一してほしいと言われました。 Shift_JISで統一とは具体的に何をすればいいのでしょうか? (ヘッダーは別のデータを読み込んでいるので、 作成するhtmlデータにはShift_JISを指定するようなタグは元々入っていません。) 先方さんから支給されたhtmlデータをそのまま使っていたので Shift_JISになっているものと思って作業していました。 因みにTerapadを使って作成しています。 初歩的な質問でお恥ずかしいのですが… よろしくお願い致します。

    • ベストアンサー
    • CSS
  • visual c++の文字コード判別

    現在、visual studio2010のvisual C++でメモ帳をテキストボックスに表示するプログラムを作成しています。 しかし、文字コードがASCIIで保存してあるファイルを開こうとすると、文字化けが起こります。 shift-jisなどに変換しようとすると、ほかの文字コードで保存してあるファイルを開いたときに文字化けが起こります。 文字コードがASCIIのテキストファイルを開くときのみ、shift-jisなどに変換しようと思うのですが、文字コードがASCIIであるか、そうでないかを判別できる処理があれば教えていただけないでしょうか?

  • シフトJISコード

    1文字を入力して(例えばWordで) その文字のシフトJISコードを知る 方法をご存知の方、 教えてください。 私の質問例が悪いのかもしれませんが 文字->シフトJISコードを 知りたいのです。 逆は、わかるのですが・・・。

  • UTF-8からShift-JISへの文字コード変換について

    文字コードがUTF-8のファイルをShift-JISに変換する方法についてご存知の方がいらっしゃれば教えていただきたいです。 仕事上で、UTF-8のファイルをしばしば受領するのですが、Shift-JISに変換しないと、その後の処理ができない作業があり、今は秀丸で開いて、文字コードを変換して保存し直してます。 私以外のメンバも今後同じ作業を実施するようになり、引継ぎ手順書を作成しているのですが、ツール等を使わないWindows標準機能を用いた手順を要求され、どうすればいいかわからなくなって質問させていただきました。 よろしくお願い致します。

  • JISコードでファイル出力したい。

    大変お世話になっております。 memo6というstringに”前前前前前前前前”という文字を入れて、それをtest_binにバイトで入れてそれをfopenでバイナリファイルを出力しました。 作成されたバイナリファイルを見てみると”91 4F 91 4F 91 4F 91 4F 91 4F....”とshift jisコードで出力されているのですが、これを”4D 52 4D 52 4D 52 4D 52 4D 52 4D 52....”のjisコードで出力する方法をご教授いただきますようお願いいたします。 char test_bin[60]; //name strcpy((char *)tmp_bin,memo6.c_str()); for(int j=0;j<32;j++) { test_bin[j] = tmp_bin[j]; }

専門家に質問してみよう