dポイントプレゼントキャンペーン実施中!

圧縮・解凍プログラムを作ろうと考えた時、大量の文字が必要であることに気づき、
Shift_Jisの全角文字を利用してみようとおもいました。でも、どうやって利用するかがわからず、
とりあえず16進数で8940hである院という文字をNASMアセンブラで1文字出力してみることにしました。
org 100H
section .text
start:
movax,0200H
movedx,8940H
int21H
movah,4CH
int21H
これでコンパイルはできたものの、実行すると変な処理をしていました。
そこで疑問に思ったことは、
なぜDLレジスタにASCII文字コード入れるとその文字が出力されるのか、ASCIIコード自体はそれに対応する文字を格納するアドレスではないはずなのに。
結局どうすればShift_jis全角文字がつかえのか?と。
申し訳ありませんがよろしくおねがいします。
それと、たくさん文字がつかえるコード(規格といった言い方で正しいのでしょうか?)の情報をもらえたらうれしいです。

A 回答 (2件)

その「変な処理」とはどのような処理でしょうか?


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

この回答への補足

変な処理は僕の勘違いでした。すみませんでした。コマンドプロンプトに出力させませんでした。

文字を一字出力する場合、DLレジスタに出力する文字を入れると本にかいてあったのですが、
その文字って数字(Aなら41H)で表しているけど、アドレスではないので、
どこかのファイルでその数字が定義されていると思うのですが、Shift_jis全角文字のコードを使用するのに特別な事(あるファイルにリンク(?)する)が必要なのかどうかということです。

つたない文章でわかりにくくて本当にすみません。

補足日時:2009/01/25 02:48
    • good
    • 0

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

この回答への補足

すいません。

C言語でどうやってUnicodeの文字コードを利用して出力できるのかをお聞きできたらなとおもいます。

アセンブラの話がでたのは、C言語で出力の仕方がわからなくて、
こういうのはインラインアセンブラのほうが簡単かもしれないと思い、
実験で上記のプログラムをやってみたら失敗したので、
なんでなんだろうと考えて打っていたらまったく話がそれた文ができてしまいました。

本当にすみませんでした。

補足日時:2009/01/24 22:51
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!