お薦め ページ


メニュー

ハワイ島 遊覧飛行ツアー

ハワイ島 B&B・ホテル

ハワイ島 不動産情報

ハワイ島 情報・観光ガイド

ブログ(Blog)

その他

関連サイト

: 個別エントリー・アーカイブ :

2007年3月 1日

8086マシン語、ハンド・アセンブル実験(4)

最近、せっかく アセンブラをやってきているので、 もう少しだけ、変更してみる。

前回のブログの最後に示した アセンブラのソースでは 単に「mov」命令を使っているだけで、 それでは能がないので、 4行目の「mov dl, 73h」を「or dl, 20h」と変更してみる。

ASCII文字コード」を見てみると判るが、 アルファベットの大文字と小文字は、コードで 20h の差があることがわかる。 大文字を小文字に変換するためには コードで 20h を足す、 つまり、00100000B を or してやればよいことになる。 これで、1行目に設定した文字を小文字に変更することがきる。 すると アセンブラのソースは
mov  dl, 53h   ; 「S」の字の ASCII文字コード を DLレジスタにセット
mov  ah, 02h   ; 出力に1文字出力するファンクションコールを指定
int  21h       ; MS-DOSファンクションコール
or   dl, 20h   ; dlの文字を小文字に変換
int  21h       ; MS-DOSファンクションコール
int  20h       ; プログラムの終了
となる。

「or dl, 20h」はコードにすると「80, CA, 20」となるので、 コード全体としては、 「B2, 53, B4, 02, CD, 21, 80, CA, 20, CD, 21, CD, 20」 となる。 これを実行してみるとうまくゆくが、 結局、実行結果は前回と全く変わらないことになる。

試しに、2バイト目の値を「J」を表す「4A」に変更してから 実行してみると、結果は
Jj
となる。

ただし、この方法だと、最初に設定した文字が小文字なら、 そのまま小文字が2回続けて表示されることになる。 それではつまらないので、もし小文字を設定した場合には 小文字と大文字が表示されるようにしてみる。 これは、4行目の「or dl, 20h」を 「xor dl, 20h」に変更するとよい。 コードとしては、「80, F2, 20」となるので、 コード全体としては、 「B2, 53, B4, 02, CD, 21, 80, F2, 20, CD, 21, CD, 20」 となる。 これを実行すると、 大文字の場合はその小文字が、小文字の場合は大文字が続けて表示されるようになる。

ここ何回かのブログでウィンドウズ・ユーザーが マシン語を体験できる方法を紹介してみたが、 これ以上複雑なことを マシン語でプログラムしようと思ったら ハンド・アセンブルではなく、素直にアセンブラ・ソフトウェアに 任せた方がよいであろう。

【参考リンク】

カテゴリー: プログラミング     2007年3月 1日 22:47

トラックバック

このエントリーのトラックバックURL:
http://www.skymerica.com/blog/yotsumoto/mt/mt-tb.cgi/725


コメント

コメントしてください




保存しますか?


 
ハワイ島での遊覧飛行ツアーとB&Bのスペシャリスト、スカイメリカ
Copyright © 2003,2009 Skymerica Corp. All rights reserved.