Message Log 17 Return to Parent Menu 
Last Updated by 07/01/05(Fri)  

 
Tips
 

 英語ができるとアセンブラのマニュアルなんか結構あるんですけれどもね・・・


 
Message log list
 

 アセンブラ掲示板に書き込まれた過去のログです。


Message log 44 (05/01/0506/30/05)
Message log 43 (01/01/0504/30/05)
Message log 42 (01/01/0412/31/04)
Message log 41 (11/01/0312/31/03)
Message log 40 (10/01/0310/31/03)
Message log 39 (04/01/0309/30/03)
Message log 38 (12/01/0203/31/03)
Message log 37 (08/01/0211/30/02)
Message log 36 (05/01/0207/31/02)
Message log 35 (03/01/0204/30/02)
Message log 34 (01/01/0202/28/02)
Message log 33 (09/15/0112/31/01)
Message log 32 (08/01/0109/14/01)
Message log 31 (05/26/0107/31/01)
Message log 30 (05/15/0105/25/01)
Message log 29 (05/01/0105/14/01)
Message log 28 (02/01/0104/30/01)
Message log 27 (01/01/0101/31/01)
Message log 26 (10/01/0012/31/00)
Message log 25 (07/21/0009/30/00)
Message log 24 (06/16/0007/20/00)
Message log 23 (05/20/0006/15/00)
Message log 22 (05/01/0005/19/00)
Message log 21 (04/01/0004/30/00)
Message log 20 (02/01/0003/31/00)
Message log 19 (01/01/0001/31/00)
Message log 18 (11/01/9912/31/99)
Message log 17 (09/05/9910/31/99)
Message log 16 (08/21/9909/04/99)
Message log 15 (07/01/9908/20/99)
Message log 14 (04/01/9906/30/99)
Message log 13 (02/01/9903/31/99)
Message log 12 (11/01/9801/31/99)
Message log 11 (09/21/9810/31/98)
Message log 10 (08/01/9809/20/98)
Message log 09 (07/01/9807/31/98)
Message log 08 (05/04/9806/30/98)
Message log 07 (04/08/9805/03/98)
Message log 06 (02/23/9804/07/98)
Message log 05 (01/01/9802/22/98)
Message log 04 (11/09/9712/31/97)
Message log 03 (10/17/9711/08/97)
Message log 02 (08/22/9710/16/97)
Message log 01 (06/20/9708/21/97)


 
Message log 09/05/9910/31/99
 




hufman  [1999/10/31 Sun 23:56:03]  [210.234.48.190]

すみません、記入ミスです。

ココアラさんの教えてくださったページから
         ↓
葵さんの教えてくださったページから
hufman  [1999/10/31 Sun 23:52:23]  [210.234.48.190]

たいらさん、ココアラさんどうもありがとうございます。
あれから少々勉強しまして、ちょっとだけ知識が付きました。
それで前回の質問を見てみると、聞きたいことを自分で勘違いして
きいている(というよりは複雑にしている)ようなので、私が今疑
問に思っていることをまとめました。

8086CPUからPen.MMX(およびPen.3)に移行するために両方の8086
とのレジスタ、命令セットの違いを知りたいのです。
つまり、「Pen.MMX/Pen.3のレジスタ&命令セットが書かれた資料
等は入手できないのか?」が私の聞きたかった質問です。

もしお分かりになる方がいましたらよろしくお願いします。
ココアラさんの教えてくださったページから自力で探してみます。
ですが、お礼、また知っている方の助力を得られるかと思い、
この書きこみをしました。では。

  [1999/10/31 Sun 09:09:30]  [216.101.46.187]

もいっこ。初心者向けではないかと
http://www.fys.ruu.nl/~faber/http://www.fys.ruu.nl/~faber/
  [1999/10/28 Thu 20:13:38]  [216.101.46.186]

英語の所だけど色々置いてありますよ。

http://www.simtel.net/simtel.net/msdos/asmutl.html
ココアラ  [1999/10/28 Thu 16:35:47]  [210.235.236.61]

それと、最近(でもないが)のCPUには仮想86モードという
ものがあり(たぶん)、昔の16ビット時代のプログラムも
ちゃんと動くようになっていたかと・・・
ココアラ  [1999/10/28 Thu 16:33:29]  [210.235.236.61]

> 僕のCPUはPentiumMMXです。でも先日購入したアセンブリ言語リファ
> レンス(8086CPUリファレンス)は16ビットCPU用です。
> そこでなんですが、32ビットCPUとは構造が違うものなのでしょうか?
> 自分が知りたい相違点はレジスタの数・種類・蓄積容量などのレジスタの
> 違いと、その他なんでも重要な違いです。(あるならば)

構造はかなり違うと思います。
MMXと8086を比較すると、レジスタは32ビットになっていて、
種類も増えている(MMXレジスタなど)と思います。
蓄積容量とは? ビット数のことでしょうか。
ならば倍になっている!?

> またもう1つ、PentiumMMXというのはx86系CPUに含まれるのでしょうか?
> あとPentiumVCPUが安く手に入りそうなので購入するのですが、これも何
> か目立って違うところがあったりするのでしょうか?

MMXも86系でしょう。Pen!!!との違いは
キャッシュ系と新命令(SSE)くらいかな?
あとはベースクロックとか・・・

僕もそんなに詳しいわけではないので、間違っているかもしれませんが
ご参考までに。
たいら  [1999/10/27 Wed 21:12:25]  [210.139.206.3]

はじめまして。
アセンブラはZ80〜8086をやっていたんですがCにはまってゥ・
久しぶりにアセンブラで書きたくなったら「なんて複雑な!」(涙)

昔はニーモニックやアセンブル/逆アセンブル表、各命令のビットフィールドの説明などあって一人ででも1から勉強できたものですが
最近のCPU(x86)でそんな書籍(できれば日本語)ありませんか?
できれば腕慣らしに逆アセンブラでも作ってみたいのですが。

>hufman   さんへ
こんなボクですから、どこまであってるか心配ですがレス

>PentiumMMXというのはx86系CPUに含まれるのでしょうか?
Pentiumはx86ファミリーですから含まれてるでしょう。
MMXは追加された命令です。(たしか)
ボクもこの辺の資料を探しています。
基本的に8086で動くルーチンならPentiumでも動くと認識しています。

hufman  [1999/10/27 Wed 20:52:59]  [210.234.48.197]

このごろアセンブリ言語を始めようと思い、まずはコンピュータの
基礎構造みたいなものを勉強しました。
それでいよいよアセンブリ言語!というところで分からないことが
ありましたのでここで質問させていただきます。

僕のCPUはPentiumMMXです。でも先日購入したアセンブリ言語リファ
レンス(8086CPUリファレンス)は16ビットCPU用です。
そこでなんですが、32ビットCPUとは構造が違うものなのでしょうか?
自分が知りたい相違点はレジスタの数・種類・蓄積容量などのレジスタの
違いと、その他なんでも重要な違いです。(あるならば)

またもう1つ、PentiumMMXというのはx86系CPUに含まれるのでしょうか?
あとPentiumVCPUが安く手に入りそうなので購入するのですが、これも何
か目立って違うところがあったりするのでしょうか?

複数質問させていただきました。
僕の先入観も含めての質問になってしまっているかもしれません。
誰かよろしくお願いします。
ringo  [1999/10/25 Mon 18:16:49]  [210.145.14.8]


単純に'4'という数字の左から4バイト分みたいのですがどうしたらいいでしょう
近藤妥  [1999/10/25 Mon 07:15:10]  [202.245.160.87]
C言語で始めるWindowsプログラミング

 始めましてではなく、お久しぶりです!ね。
 昔の事をちょっと書いてみましたので、読んでみてください。
 やっぱ、アセンブラは楽しいですね。

houbou  [1999/10/24 Sun 00:47:28]  [210.172.148.27]

↓・・・ミス。すみません。

ところでMASM(DDK)は巨大なので敬遠したい方に朗報。(DDKの方は12M以上ある・・・。)

統合環境、逆アセンブラ、ライブラリアン等のstub
、ライブラリモジュール等がオールインワンになった
パッケージが、
> http://www.pbq.com.au/home/hutch/
にあります。

パッケージサイズは3Mですが頑張ってダウンロードすればWin32asmの環境が・・・。(至福)

一応アセンブラはMASMですが最新版です。
DDKなMASMを所有していても一度行ってみては
いかがでしょうか?
理想として両方あると・・・・・?

houbouでした。

houbou  [1999/10/24 Sun 00:24:04]  [210.172.148.27]


後から来る方のための補足
> マイクロソフトのLINK.EXEではそのようなことをする> オプションはないのでしょうか。

MASM Version.6.1x(Win98DDK)ならば
直接リンカにオプションを渡して作成できます。

ML /AT [filename.asm]

使用するLINK.EXE(DOSバイナリ出力専用?)は
ftp.microsoft.com/softlib/mslfiles/lnk563.exe
(URLはこれだったはずです。)

ただしWin32環境でなければ動作しません。
標準添付のリンカは不明です。

そうそう。COMファイルを出力できるリンカ
としてALNKというのがあります。
(プログラマーズヘブンからダウンロード可能)
対応オブジェクトはCOFF,OMFで
出力フォーマット はPE,MZです。
まだ一部未対応の部分がありますが
それでもクロス開発(?) が可能になるのは魅力的
ですね。

ところで今アセンブラ用のIDE探しているのですが
なかなか良いのが見つかりません。
自作するしか手段がなさそうです。

houbouでした。


相模隆明  [1999/10/22 Fri 10:46:15]  [150.15.208.100]

> /TINY でできますよ。

armさん ありがとうございます。
「初めて読むMASM」に書いてなかったから気がつかなかった。(^^;
少し古いLINKではTINYオプションが使えないためですね。
あの本は10年以上前に書かれた本なんだという事に今更ながら気付く自分・・・。

arm  [1999/10/21 Thu 01:03:39]  [163.139.59.39]

> いくつかのリンカ(tlink,val,lil等)ではCOMファイルを直接吐くことができますが、
> マイクロソフトのLINK.EXEではそのようなことをするオプションはないのでしょうか。

/TINY でできますよ。
相模隆明  [1999/10/19 Tue 13:02:47]  [150.15.16.31]

いくつかのリンカ(tlink,val,lil等)ではCOMファイルを直接吐くことができますが、
マイクロソフトのLINK.EXEではそのようなことをするオプションはないのでしょうか。
exe2binを使うしかないのでしょうか。

SAGYO  [1999/10/10 Sun 01:02:16]  [210.235.202.48]

アセンブリ言語ばんざーい!

はじめまして、私はSAGYOという者です。
このページのオフライン版をダウンロードをさせて頂きました。
ありがとうございます。
やっぱアセンブリ最高ですよね〜。いいですよね〜。
自分的に今一番いけてる言語なんですよ。これがまた
っていう訳でありがとうございました!!

ココアラ  [1999/10/07 Thu 23:40:56]  [210.228.248.36]

相模隆明さん;

ありがとうございました。;
さっそく本を買わずにソースを解析中です;
お金ないもので・・・;


相模隆明  [1999/10/04 Mon 11:36:54]  [150.15.16.31]

CRCのプログラムを見つけたので紹介しておきます。
http://www2a.biglobe.ne.jp/~bero/cgi-bin/arc.cgi?arc/algo.lzh/src/crc16.c
これは奥村晴彦氏の「C言語による最新アルゴリズム辞典」に乗っているモノと同じ様です。
それほど高価ではないので買ってみてはいかがでしょう。
どこの本屋でもおいてあると思います。
ここあら  [1999/10/04 Mon 01:47:24]  [210.228.248.93]

学校が休みであまりに暇なので何か作ろう!
というわけでLHAみたいな圧縮できるファイルアーカイバを
作ることにしました。昔にもDOS版で作ったのですが・・・
今度は誤り訂正機構を組み入れることにしたのです。
チェックサムじゃおもしろくないので、CRC(さいくりっく
りだんだんこーどとかなんとか)にしょうと
思ったのですが・・・わからないのです。

とある本にほんの5行ほど解説されていたのですが・・・
生成多項式がどうのとか・・・xの16乗たすxの12乗たす・・・ってなんだ!

というわけで、このあたりを解説してあるサイトなどは
ないでしょうか。
nabe  [1999/09/29 Wed 18:45:35]  [210.162.6.163]
Y2K For Assembler

突然なんですが、私はAssemblerのプログラマーです。
現在西暦2000年問題の担当をしています。そこで、いろいろと
ホームページで情報を検索してみたところ、株式会社エヌケイ
コーポレーションという会社が自動検索及び修正ツールを扱っ
ているそうです。

このツールは、アセンブラとかを使えるみたいなんだけど
ロードモジュール ベリファイができるのかどうかわから
ないんですが、そんなツールだといいなと思っています。
また、パソコンのツールもあるみたいなので
情報共有ということで参考までに!!
けど聞いたことのない会社ですが・・・
http://www.jah.ne.jp/~nkcorp/index/
ひでぼう  [1999/09/29 Wed 16:00:39]  [133.145.224.6]

お久しぶりです、ひでぼうです。

澤口@大崎さん、res有難うございました。
しかしまだ RTCの件は解決できませんでした。とりあえずほっておく
ことにしました。 今回もまた質問ですが、最近
Intel Architecture Software Developer's Manual, Volume 3: System Programming Guide (http://www.intel.co.jp/jp/developer/design/PentiumII/manuals/)をインテルのホームページよりダウンロードしてLocal APICの項目を読み、Dual processor machineにてなんとかLocal APIC timer
を起動して割り込みを発生させることができました。
しかしながら、他のローカルベクタ割り込み(LINT0,LINT1,ERROR PCINT)はどうやって使うのか分かりません。IOAPICのマニュアル
(82093AA I/O ADVANCED PROGRAMMABLE INTERRUPT CONTROLLER)
も見てみましたが、例えばキーボード割り込みなどをAPICを用いて
どのように処理したらいいのか具体的なことが良く分かりません。
ご存知の方がいれば教えてください。
なつ  [1999/09/29 Wed 09:59:09]  [210.226.234.130]

みなさん初めまして。

今セントロニクスで受信出来るソフトを探しています。

セントロニクスでバイナリーコードを出力する機器があります。
このデータをパソコンのプリンタポートで受信してファイルにセーブするソフトはありませんか?。
出来ればフリーウエアであれば助かりますが、シェアウエア
でもかまいません。
宜しくお願いします。

ひろ  [1999/09/28 Tue 02:53:56]  [210.155.193.68]

ひろです。


>PC-9800シリーズでOSの起動前にメモリを確保する方法ですが、コンベンショ
>ナルメモリなら、メモリスイッチの値を変えておくという方法があります。例
>えば、メモリ512KBの設定にしておけば、80000h-9FFFFhの128KBを使えます。コ
>ンベンショナルメモリが減ってしまうのが難ですが。


コンベンショナルメモリが512KBだとWindows95が起動できなくなってしまうような気がします。


>常駐したいプログラムが小さいなら、IO.SYSにパッチをあてて埋め込んでもいい
>かもしれません。


難しそうですが、試してみる価値はありそうですね。
早速試してみます。
houbou  [1999/09/25 Sat 04:47:29]  [210.172.148.28]

あ、間違えて2回押してしまったようです。
一方の削除をお願いいたします。

P.S.VAL.EXEはただコンパイラ/パッケージの違いだけです。
houbou  [1999/09/25 Sat 04:44:52]  [210.172.148.28]

どうも、houbouです。

あれ? Arrowsoft AssemblerってVer.2.0あったの?
ということで紹介します。

> http://www.users.uswest.net/~sdiggins/basm.html

2.0と1.0の差とは一体・・・・。

houbouでした、

houbou  [1999/09/25 Sat 04:44:49]  [210.172.148.28]

どうも、houbouです。

あれ? Arrowsoft AssemblerってVer.2.0あったの?
ということで紹介します。

> http://www.users.uswest.net/~sdiggins/basm.html

2.0と1.0の差とは一体・・・・。

houbouでした、

fnami  [1999/09/24 Fri 14:01:31]  [202.238.80.27]

PC-9800シリーズでOSの起動前にメモリを確保する方法ですが、コンベンショナルメモリなら、メモリスイッチの値を変えておくという方法があります。例えば、メモリ512KBの設定にしておけば、80000h-9FFFFhの128KBを使えます。コンベンショナルメモリが減ってしまうのが難ですが。

常駐したいプログラムが小さいなら、IO.SYSにパッチをあてて埋め込んでもいいかもしれません。

ひろ  [1999/09/22 Wed 23:06:56]  [210.155.193.67]

ひろです。


>うーん、PC98 の SCSI カードや GPIB カードのように、メモリの
>非実装領域に拡張メモリカード(自作)を置いてしまうのが一番簡
>単なような気がしますが。


この方法だと確実ですけど専用のハードが必要なりますね。いろいろなPCで使用するつもりですので、ちょっと現実的ではないです。

名前は失念しましたが、昔(3〜4年前)98用のIPL乗っ取りタイプの常駐プログラムを見たことがあります。これもINT 1BhをフックしてdディスクBIOSを拡張するタイプのプログラムだったと記憶しています。原理的には私が作ろうと考えているものと同じようなものだと思いますので、何かOS起動前のメモリ確保の方法があるとは思うのですが...


>リアルモードでは基本的にDOS管理領域をDOSが初期化すること
>をソフト的に禁止する方法は無いのではないですか。


リアルモードである以上CPUの機能でメモリへの書きこみの禁止は無理だと思います。ただ、AT機のEBDAの様にBIOSのワークを目的に用意されている領域が98にも無いかと思っていろいろと資料を探しているわけです。98でSCSIとかは何処にワークを取っているのかちょっと不思議です。(AT機だと大抵のSCSIボードはEBDAをワークに使っていますので)


>強いて候補に上げられるのはハードウェア EMS ボードか、HMA 領域
>と VRAM の裏バンク(自信なし)。


VRAMの裏バンク?どのようなものなのでしょうか?
普通起動時に使用されないB8000-BFFFFとかのことですか?

オスカー  [1999/09/22 Wed 22:42:12]  [210.147.40.28]

こんばんは。オスカーです。

澤口@大崎さん。御手数かけてすみません。
wlink form DOS COM file otenki.asm
で成功しました。ありがとうございました。

明日は休日なんで、のんびり本を読み進めたいと思います。
それでは。

澤口@大崎  [1999/09/21 Tue 22:24:14]  [210.141.243.66]

澤口@大崎です。

to オスカーさん:

あっ、form DOS COM だったかも。
しかし、 Watcom C++ もとうとうなくなっちゃうんですね〜
DOS コンパイラとしては申し分なしなんだけどな。

澤口@大崎  [1999/09/21 Tue 22:10:32]  [210.141.243.66]

澤口@大崎です。

to ひろさん:

なるほど。
うーん、PC98 の SCSI カードや GPIB カードのように、メモリの
非実装領域に拡張メモリカード(自作)を置いてしまうのが一番簡
単なような気がしますが。
確か、DOS 起動以前の呼び出し機構があったような気がするが、昔
のことなので、ROM イメージの作り方はわかりません。
リアルモードでは基本的に DOS 管理領域を DOS が初期化すること
をソフト的に禁止する方法は無いのではないですか。
強いて候補に上げられるのはハードウェア EMS ボードか、HMA 領域
と VRAM の裏バンク(自信なし)。
Win95 の起動機序について
・「Windows 95 内部解析」(ソフトバンク)(ISBN 4-89052-768-0)
に詳しいはずなのですが、絶版だろうなぁ。会社にあったかどうか
のぞいてみます。

オスカー  [1999/09/21 Tue 21:48:43]  [210.147.40.81]

こんばんはオスカーです。
澤口@大崎さん、Resありがとうございます。

>Watcom Linker なら、 form COM で COM ファイルが直接
>生成できるのでは?
いの一番に行ったのですが、(wlink form com file otenki.obj)
Error! E3033: 'com'付近にディレクティブエラーがあります
って言われます。書式が解らなかったんです。

余談ですが、
http://techinfo.sybase.com/css/techinfo.nsf/DocId/ID=20510
を見ると、watcomも先が・・・・・。やっぱTASMがパッケージもの
がヨロシイのかなあ。

では。
ひろ  [1999/09/21 Tue 20:24:16]  [210.155.193.205]


ひろです。

澤口@大崎さん、コメントありがとうございます。


>フックすべきベクタが存在しない状態で割り込みをフックするという
>のがよく分かりませんが・・・


少し説明不足だったようですのでもう少し状況を詳しく説明します。

まずフックしたい割り込みはINT 1Bhつまり98ディスクBIOSです。
これなら、IPL(LBA 0)読み込み時には当然初期化済ですので、
ベクタテーブル(0 : 4 * 1Bh)を書き換えてやればフックすることは可能です。


>でも、なぜ OS 起動前でなければならないんでしょう?
>TSR とかデバイスドライバの形式ではまずいのでしょうか?


INT 1Bhをフックして特定の呼出し(特にOSがドライブ情報を調べる部分)を処理する為、OSが起動してドライブレターが割り当てられてからでは遅いので、デバドラやTSRではまずいのです。(OSのドライブ情報の調査部分に介入したい)

少々強引ですが、とりあえずOS起動時にはあまり使われないメモリ領域にフック処理プログラムを置いておいて(無許可)、OS起動後に改めて常駐しなおすといった方法も考えられなくは無いのですが、この方法は反則だと思います。(環境によっては動作しないと思う)

これらの理由のため、OS起動前のメモリの確保方法を調べているわけです。
ご存知の方がいましたら、是非御教え下さい。

追加質問ですがINT 1Bhをフックした状態でWindows95を起動すると、「HDD等がDOS互換で動作している」となります。
また、IDE BIOS、SCSI BIOS等もリアルモードでの動作を前提につくられたプログラムのはずですが当然DOS互換モードになることはありません。
フックプログラムとBIOSの違いは何処にあるのでしょう?
また、どのように95は見分けているのでしょう?

これもご存知の方がいましたら、是非御教え下さい。

澤口@大崎  [1999/09/21 Tue 09:47:44]  [210.141.243.66]

澤口@大崎です。

to ひろさん:

フックすべきベクタが存在しない状態で割り込みをフックするという
のがよく分かりませんが・・・
でも、なぜ OS 起動前でなければならないんでしょう?
TSR とかデバイスドライバの形式ではまずいのでしょうか?
澤口@大崎  [1999/09/21 Tue 09:25:10]  [210.141.243.66]

澤口@大崎です。

to ひでぼうさん:

RTC のプログラミングをされているということは、RTC の
アドレス表は持っていらっしゃるのですね。
とりあえず、
・BCD から BIN へモード変更するのは RTC が時刻更新中
 でないことを確認した上で、割り込み禁止状態で行う
・RTC の読みとりは時刻更新フラグが立っていないことを
 確認してから
ということでどうでしょう。
ひろ  [1999/09/20 Mon 20:48:18]  [210.155.193.132]

みなさんはじめまして

早速ですが質問があります。

OSの起動前にメモリを確保するにはどの様にしたら良いのでしょうか?

何がやりたいのかと言うと、OS起動前に割込みをフックをしたいので、IPL部分を書き換えて、まずフックプログラムを走らせてから、本当のIPLを呼出し、OSを割込みフック後に起動するようにしたいのです。

当然、割込みをフックするわけですから、割込み処理用のプログラムがメモリ中に存在しなければなりませんが、そのプログラムを置くメモリの確保の方法がわからないわけです。

それとターゲットはPC9800で、OSはDOS、Win95等です

AT互換機ならEBDAがあるので、OSが起動していなくてもメモリ確保は何とかなりそうなのですが、PC9800にはEBDA相当のものがありません。

何とか、OS起動前にメモリを確保する方法があれば教えてください。

ひでぼう  [1999/09/20 Mon 19:17:38]  [133.145.224.8]

度々質問ばかりですいません。ひでぼうです。

ちょっとマニアックな内容かもしれませんが...
下記のような関数を作成して、Realtime clockの秒を表示
させようとしました。

するとバイナリモード、かつ24時間表示モードにて、RealTimeClock の秒を得るときに秒がとり得る範囲が0〜0x3B(0〜59)の場合と0〜0x7B(0〜123)の場合がありました。
ちなみに使用したのは82371AB PIIX4 PCI-ISA bridgeのIO space registerです。

このときのレジスタ値はそれぞれ

Control Reg A=0x06,
Control Reg B=0x02,
Control Reg C=0x10または0x50,
Control Reg D=0x80

と同じなのになぜ0〜0x7Bとカウントアップされるのでしょうか? 
どなたかご存知の方がいらしたら教えていただけないでしょうか。
よろしくお願いします。


char getRtc(unsigned char att_type)
{
unsigned char date;

_asm{

mov al,att_type
out 0x70,al
in al,0x71
mov date,al
}
return date;
}





ひでぼう  [1999/09/20 Mon 16:26:02]  [133.145.224.6]

こんにちは、ひでぼうです。

vさん、飯田さん、アドバイスありがとうございます。
特に飯田さん、大変参考になりました。
手元にある「トランジスタ技術SPECIAL 特集IBM PC&80286のすべてno.10」を注意して読むとこの本のp39に"101/102キーボードでは、キーとスキャンコードの対応が3種類あってset 1,2 ,3と呼ばれています。" とありますが、set 1,3は割愛されていました。

自作OS公開への道はまだまだ長いですが、ご声援よろしくお願いします!
澤口@大崎  [1999/09/20 Mon 13:09:43]  [210.141.243.66]

澤口@大崎です。

to オスカーさん:

Watcom Linker なら、 form COM で COM ファイルが直接
生成できるのでは?
houbou  [1999/09/19 Sun 23:22:22]  [210.172.148.36]

どうも。houbouです。

そういえばこのボードの過去ログを見て気が付いたのですが
随分アセンブラの資料が少ないらしいですね。

そういえば、多摩ソフトウェア(Light Macro Assembler開発元)
のHPにヘルプファイル形式でLASMのマニュアルがあります。

これって結構参考になると思いますよ。
ただしWindowsを持っていないと使えませんが。
(これとWebに転がっているチュートリアルを組み合わせて
みてださい。)

自己レス。
>・VAL experimental linker?(LINKER.ZOO)
はいくつかディスリビュージョンが存在するようです。
(VALARROW.ZIP,VAL_LINK.ZIP,LINKER.ZOO)
・・・日本語版が欲しいという方はいるのでしょうか?>VAL
いたら作りますが・・・・。:-)

オスカー  [1999/09/18 Sat 19:32:26]  [210.147.40.164]

オスカーです。早速ですが自己レスです。
え〜、例のエラーはDB命令で大文字Oとゼロを間違えていたことに
よるものでした。お恥ずかしい。すみません。

かわり、watcomのwasmで例のotenki.asmを実行するコマンド方法
を書きます。そんな初心者は居ないかも知れませんが、私の今が
提供できうる情報はこんなもんです。

wasm otenki.asm
wlink form dos file otenki.obj
exe2com otenki.obj otenki.com

VC++とかのwin32キャラクタとかって指定をどこで行うんだか
悩みました。それがform dosって分かるまで1時間。(笑)
で、NTについてるexe2binではコンバートできなかったので
exe2comでコンバートしました。

お騒がせしました。

オスカー  [1999/09/18 Sat 15:49:36]  [210.147.40.147]

はじめまして。オスカーといいます。
C言語が主な使用言語なんですが、このHPに刺激されASMを勉強し始め
ました。で、早速なんですが質問なんです。

たまたまココにあるWATCOM Cにアセンブラが付いてるので、これ幸い
とばかりに勉強してますが、「はじめてのMASM」の始めのページ
で既に躓いてます。otenki.asmってのですが、

otenki.asm(22): Error! E081: オフセットはワード(2バイト)より
小さくできません

と言われます。う〜ん、sourceは同じなのに。
DBをDWにしたりしてみましたが、駄目でした。
申し訳ないですが、サジェスチョンして頂けませんでしょうか?
お願いします。それにしてもwatcomのアセンブラって使ってるって
話が出ませんので、初心者な私は不安だったりします。

それでは。

houbou  [1999/09/18 Sat 00:25:28]  [210.172.148.29]

というわけでhoubouです。

> 澤口@大崎
さんへ
> Quick BASIC の出所の件ですが、今のところ、わたしにも

私が落したのはMASM 5.10なんですけど危なそうなので
廃棄しました。

まあ、MASMv6(DDK)の方にも5.10互換モードはあるので問題には
ならないとは思いますが・・・。

アセンブラとは直接関係ありませんがMicrosoftのftpには
ヘルプコンパイラが落ちています。

一応コンパイルできるかは確認していませんが。
恐らくコンパイルは可能でしょう。

まあ、商用に利用しなければ問題にはならないと思いますが。
アップデート用ですが一応DOS汎用の実行ファイル形式です。
(ライセンス上は問題はあるだろうが著作権法上は大丈夫だと
は思いたいです。公式なサイトに落ちてるものだし)

WinAsmな環境でソフト作ったは良いがヘルプファイルが・・・。
とお嘆きの方はどうぞ。(要rtfファイルエディタ)

・・・・まずかったら消してください。

houbouでした。

飯田  [1999/09/17 Fri 21:41:03]  [210.253.194.98]

こんにちわ、飯田と申します。書き込むのはずいぶん
久しぶりですがよろしくお願いします。

ひでぼうさんへ

>「たとえば、'A'のキーを押すとスキャンコードは、0x1Cで
'A'のキーを離すと0xF0がまず送信され次に0x1Cが送信される」

これはキーボード走査(スキャン)コード・セット2か3の場合です。

>「ディフォルト設定ではブレークコード(キーを離したときに送られるコード)は、メークスキャンコード
の最上位ビットをセットしたものである」

これはキーボード走査(スキャン)コード・セット1です。通常こっちを使いますね。
PC/AT互換機でキーボードを直接制御する場合、自分でどの走査コードセットを使うか
設定しなければなりません。といっても通常コードセット1を使うでしょう。BIOS
もコードセット1ですし、ほかのは使うことはないと思います。
もし、さらに詳しく知りたいのであれば、OADGデクニカル・リファレンスを購入する
事を進めます。キーボードの制御について詳しくのっていますし、コードセット表、
文字コード表、ほかにもDMA、VGA、タイマー、CMOS等いろいろわかるので持っていて
損はないと思います。趣味でOSを作っているとのことですが、僕も自作OSには大いに
興味があるので完成したらぜひ見せてください。

OADGホームページ:http://www.oadg.or.jp

v  [1999/09/17 Fri 20:12:18]  [210.159.153.216]

ひでぼうさん:

ご質問の答えは簡単で、システムの違う層では
異なるコードを使っているということです。

最初のコードはおそらくシステムスキャンコード
と呼ばれるものです。これは、キーボードコントローラ
である8042がキーボードからの信号をもとに組み立てる
コードで、キーを押した、離したがわかるようになって
います。

int 09h はより上位なので、抽象性を高めたコードに
変換してくれます。

したがってどちらも正しい、となります。OSを作る場合は
システムスキャンコードを自分で変換することになると
思います。


ひでぼう  [1999/09/17 Fri 14:22:39]  [133.145.228.3]

こんにちは。 3回目の投稿ですが、久しぶりにこの掲示板へやって
きました。今日はキーボードについて少し疑問がありましたので
投稿します。

現在、趣味でdosライクなプロテクトモードOSを作成しようかなと
思っていますが、キーボードのスキャンコードでちょっと
戸惑ってしまいました。

ホームページで見つけたInterface PCによりますと
(http://www.geocities.com/SiliconValley/Bay/8302/keybrd.htm)
「たとえば、'A'のキーを押すとスキャンコードは、0x1Cで
'A'のキーを離すと0xF0がまず送信され次に0x1Cが送信される」と
あります。

ところがあの有名なRalf Brown's Interrupt List
(http://www.ctyme.com/intr/int.htm)のInt 09のスキャンコード
のnotesの説明を読むと「ディフォルト設定ではブレークコード(キーを離したときに送られるコード)は、メークスキャンコードの最上位
ビットをセットしたものである」とあります。


実際にMicrosoft VC++ Ver 6.0にて下記のようなインライン
アセンブラを使用した関数を作成してスキャンコードを
得ましたが、結果は、後者のパターンでした。
前者のようなパターンにするには、何か設定を変える必要があるので
しょうか? もしご存知の方がいらっしゃればご教授願います。


//====================================================
// getScanCode - Get Scan Code value when you type
// the keyboad
//
//
// Parameters:
// None.
//
// No registers modified.
//====================================================
unsigned char getScanCode(void)
{
unsigned char alValue;

for(;;){
_asm{

wait: in al,64h ;kybd output
test al,1 ;wait till kybd
jz wait ;output full.
in al,60h ;out buffer
cmp al,1 ;Esc key ?
jz outproc
mov alValue,al ;get AL

}
}
outproc:
return alValue;
}


v  [1999/09/16 Thu 21:54:45]  [202.135.46.79]

澤口 さん、motryさん、

澤口さんのおっしゃる「コンピュータグラフィックス」は
私も読みました。確かNewmanが書いた本ですね。最近の
本で詳しく円弧生成などのグラフィックスアルゴリズムを
解説している本に「実践コンピュータグラフィックス」
(日刊工業新聞社)があります。少々値が張りますが、
図書館にあるかもしれません。

v
v  [1999/09/16 Thu 21:48:50]  [202.135.46.79]
紫川

こんにちは。

vと申します。
こちらは時々拝見して参考にさせていただいております。

以前にも一度だけ紹介しましたが、仲間とSIMD命令で遊んで
います。今は特定のアルゴリズムを各社のCPU向けにおのおの
チューンして、それぞれのCPUの速度を評価しています。

レース形式でわいわいやっておりますので、皆さんもたまに
覗いてみてください。

開催地は、
http://member.nifty.ne.jp/kaz1-iwata/index.htm

で、私がツール担当者なのですが、そのホームが、
http://www.netpassport.or.jp/~wshorie/fun/computer/kazbench/index.html

です。お待ちしています。
Mod  [1999/09/15 Wed 17:10:52]  [210.231.48.6]

初めまして。

いきなりの質問で恐縮ですが、げんざい「はじめて読む486」を
読んでいるのですが、割り込みのところで行き詰ったので
プロテクトモードについて質問します。

まず、ゲートデスクリプタの設定ですが、ゲート、割り込み、
トラップともに16bitと32bitの2種類があります。これは、
オペランドサイズ(use16とかで指定するやつ)とは別のよう
ですが、いったい何が違うのでしょう?

また、割り込みが起きたとき、スタックにプッシュされる
レジスタはインテルのマニュアルによると順にEFLAGS、CS、
EIPだそうですが、このときCSレジスタとしてプッシュされる
のは何バイトでしょうか?確か以前、CSレジスタは32bitで
プッシュされると聞いたような気がするのですが...。
ちなみに、特権レベルは同一とします。

最後に、IRETDについての質問ですが、IRETDとIRETは同じ
マシン語コードのようですが、これは気にする必要が無い
ということなのでしょうか?つまり、割り込みから復帰する
処理はCPUの方で面倒を見てくれるので、気にせずIRETD命令
を使えばいいということなのでしょうか?
澤口@大崎  [1999/09/15 Wed 11:45:09]  [210.141.243.66]

澤口@大崎です。

to houbouさん:

Quick BASIC の出所の件ですが、今のところ、わたしにも
Microsoft が正式に認可しているのかどうか調べ切れませ
ん。 < をいをい!
ただ、根拠としてはアメリカの Quick BASIC 関連サイトで
はたいがいコンパイラがダウンロード可能なこと、法律トラブ
ルも起こさず 4,5 年前からダウンロード可能になっていること
です。法人サイトだけでも数十箇所からダウンロード可能です。
アングラサイトでもなさげですし。
ライセンスにうるさいアメリカで、中でもとりわけライセンス
に敏感な Microsoft がチェックしていないとは思えません。
現にわたしは調子にのって TASM 4.0 や MSC 6.1 までダウン
可能にしたサイトを見かけたことがありますが、そういうとこ
ろは一ヶ月もしないうちに閉鎖に追い込まれています。
というわけで、Microsoft は Quick BASIC に関してライセン
ス規定を放棄したわけではないが、事実上請求放棄しているの
だろうと推測しています。
あるいは、Quick BASIC 自体が実は Microsoft社の製品ではな
く、元の会社との契約が切れて、その元会社がライセンシーを
放棄したとか。
わたしも気になるので、Microsoft 社に聞いておこうと思います。

houbou  [1999/09/15 Wed 02:01:23]  [210.172.148.32]

始めましてhoubouって言います。
これからアセンブラを始めようかと色々ツール等を集めています。

MASM(DDK)に関してはようやく資料収集を始めたところです。
・・・資料少ないです。>MASM(DDK)
怪しいところしか詳しくないし。

ところでArrowsoft Assembler Ver.1.00D(Punlic Domain)
はリンカ付属してません。
LASM(体験版含む)のリンカも使用できるのですがフリーの
リンカを2つほど見つけたので紹介します。
リンク先は忘れたのでファイル名を検索など
かけてみてください。

・Freelink(FLINK250.ZIP)
・VAL experimental linker?(LINKER.ZOO)

LINKER.ZOOはPMD-BBSというところにアップロードしてあります。
FLINK250.ZIPは要望があればアップするんですけど。
(PMD-BBSはPMDのサポートBBSです。)

なお、一部コマンドはMS-DOS非ジェネリックです。
PC-98x1ではVAL.EXE,FREELINK.EXEしか通常は動作しないので
注意してください。

>澤口@大崎
さんへ
> Quick BASIC 4.5,Visual BASIC 1.0 と MASM 5.10

これって落してみたんですけど正式な出所がわかりません。
合法なのかどうか心配なのですけど。

ということで何かありましたら書き込みます。

澤口@大崎  [1999/09/13 Mon 10:19:02]  [210.141.243.66]

澤口@大崎です。

to motryさん:

グラフィックス全般の基礎テクニック(ドットによるライン引き
や塗りつぶしアルゴリズム、デジタル微分による円弧発生など)は、
コンピュータグラフィックスI、II(マグロウヒル出版)に詳
しいのですが、10数年前の本ですからね〜
図書館などで機会があったら目を通すのもいいでしょう。
motry  [1999/09/13 Mon 09:23:11]  [130.102.42.225]

澤口@大崎さん。
早速のレス、ありがとうございます。
おっしゃる通り、すぐ近くに情報がありました。反省。
これから実際に色々見て回って来ます。
それでは、またの機会に。
澤口@大崎  [1999/09/12 Sun 21:53:33]  [210.141.243.66]

澤口@大崎です。

to ONE-QUATERさん:

arm さんのレスにあるとおり、「簡単な物」ってのが先に決まらない
と CPU が決まりません。 CPU が決まらないとアセンブラも決まりま
せん。
まさか、「アセンブラを作る」研究ではないでしょう?
arm  [1999/09/12 Sun 21:41:41]  [163.139.59.31]

>僕は電子情報系の大学4年です。
>卒業研究で、アセンブラをやることになったのですが、
>あまり知識もないもので、よくわかりません。
>そこで、簡単な物のアセンブラは何がよいのでしょうか?

これだけだと、まったくとっかかりがありません。
まず、あなたが「何を、何のために研究するのか」を把握する必要があると思いますよ。
例えば、アセンブラを使ってモータの制御をするとか、そういう「目的」が必要です。
授業でマイコンボードの製作とか、やりませんでした?
Z80のワンボードマイコンでLEDの表示とか、そういうところから始めるのがいいと思いますけど。

ONE-QUARTER  [1999/09/12 Sun 16:40:50]  [210.230.110.186]

こんにちは、初めて書き込ませてもらいます。
僕は電子情報系の大学4年です。
卒業研究で、アセンブラをやることになったのですが、
あまり知識もないもので、よくわかりません。
そこで、簡単な物のアセンブラは何がよいのでしょうか?
自分で図書館の本を読みあさってはみたものの
いまいちピンときません。
アセンブラの知識がないものでよく意味の分からない
表現があったかもしれませんが、よろしくお願いします。
澤口@大崎  [1999/09/12 Sun 12:33:51]  [210.141.243.66]

澤口@大崎です。

to motryさん:

同じことを何度も再掲するのは気が引けますので、前回のログ
Message log 16 を読んでください。
本は「メガデモを作ろう」、サイトは www.hornet.org を推薦
します。
motry  [1999/09/12 Sun 03:42:16]  [130.102.42.225]

初めまして。私はC+ASMでゲームを作ってるんですけど、
皆さん線、円等を描く際どのようにされているのでしょうか。
付属のグラフィックライブラリ等を使用されているのでしょうか。
線、四角等は何とかなるんですけど円や塗りつぶしの関数となると
大変悩んでしまいます。
それらグラフィック(主に2D)をアセンブラで効率的に実現する
ためのアルゴリズムや理論が解説されている書籍やサイトは
ないものでしょうか。
些細な情報でも構いません、何方かお教え下さい。

澤口@大崎  [1999/09/10 Fri 13:54:32]  [210.141.243.66]

澤口@大崎です。

Z80 の話題を出したついでに、 Zilog のオリジナルツールは
ここで入手できます。簡単なレジストが必要ですが、無料です。

http://www.zilog.com/support/sd.html
澤口@大崎  [1999/09/08 Wed 13:37:30]  [210.141.243.66]

澤口@大崎です。

話題が偏っているので、たまには Z80 のコーディング例を。
year に西暦年が 2byte Binary で入っているとします。

LD A,(year)
AND 3

Z フラグが1なら閏年。1901年から 2099年まで使えます。

# うーむ、コーディングスキルがばれてしまうな。
Unit Missing Link  [1999/09/07 Tue 11:46:53]  [210.235.192.20]
Unit Missing Link's Web page 'Rhythm'

チャットルームを新しくしてみましたぁ (^-^)
今回の CGI では参加者が現在いるかどうかわかりますです!

楽しく、熱く Assembler を語りましょう!?(おいおい)
澤口@大崎  [1999/09/06 Mon 23:26:46]  [210.141.243.66]

澤口@大崎です。

アセンブラ掲示板なのは百も承知ですが、ちょこっとアルゴリズム
やハード動作を確認したいときはやはりコンパイラがあった方がい
いので紹介します。

Turbo Pascal 5.5,Turbo C 2.01

http://community.borland.com/museum/

Quick BASIC 4.5,Visual BASIC 1.0 と MASM 5.10
BASM 6.2 なんてのもある。

http://www.spaceports.com/~ande/compiler.html

syunsyun  [1999/09/06 Mon 16:37:19]  [210.147.135.48]

armさんありがとうございます。
おかげで問題が解決しました。
これからもよろしくお願いします。
Unit Missing Link  [1999/09/06 Mon 01:07:17]  [210.235.192.20]
Unit Missing Link's Web page 'Rhythm'

Technical Assembler の管理をしております Unit Missing Link です。
皆様、日々の書き込み誠にありがとうございます。

07/01/99 〜 08/20/99 の書き込みをログページ Message Log 15 に、
08/21/99 〜 09/04/99 の書き込みをログページ Message Log 16 に移動しました。

なんとも同じ系統の質問が多いので、本格的に Assembler の FAQs を作ろうと
考えています。

過去のログを参考に生きているリンクを探したり、コメントを付けたりと、
せっせっと作業をしていますので少々お待ちくださいね!
Sister.DELETE  [1999/09/06 Mon 01:02:26]  [210.175.14.197]

お久しぶりです。そしてはじめまして。
最近はコンピュータグラフィックに興味を持ち始めたので
ここに来れませんでした。すいません。

フリーアセンブラという話はいつでも出ますよね。
NASM推薦派(根拠無し)のわたしはもちろん使用アセンブラは
NASMなのですが、このアセンブラ海外などで人気がでてますね。
プロテクトモードがWdosXというソフト使えば最強なのと
柔軟な仕様が魅力なのでしょうか。

海外のソフトを使う人は持っておくだけでも損はないと思いますが。


もしかしたらこのネタ、AZUCOさんが発言したかもしれませんね。
かぶっていたらすいません。

では。
Pikkle  [1999/09/06 Mon 00:50:04]  [143.90.74.82]


はぁ、98のVRAMの遅いのは何とかならないもんなんでしょうか。
普通のメモリの2倍も遅いとゲームになりません。60FPSはほし
いんだけどなー。
arm  [1999/09/05 Sun 23:08:06]  [163.139.59.26]

sunsyun さんへ
>MASM:fatal error A1000:cannot open file;hello
>というエラーが出てアセンブルできません。

たぶん、「ml hello」と打ってるからですね。
「ml hello.asm」で、コンパイルできると思います。
もし .com ファイルを作りたいなら、「ml hello.asm /link /TINY」です。

fnami さん、勝手にリンクしてすみません。
興味深く読ませていただいてます。

私も仕事でアセンブラを使ってますが、Cで楽をすることも多いです。
アセンブラよりは、ROM作ったりハードのデバッグしたりコンパイラを
変えたりするのに苦労してます。



e-mail: mist@e-net.or.jp
Structured Anchor Tree Return to Menu Return to Parent Menu 
Powered by Unit Missing Link.