Message Log 11 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/21/9810/31/98
 




AOI  [98/10/28 Wed 04:49:13]  [209.125.123.243]

HI! HISASHIBURI NI KITE MIMASITA.
E~, TASM 5.0 ENGLISH VERSION MITUKEETA NODE ARU BASHO OSIEMA~SU.
< http://www.jps.net/jshiffer/cis.htm > KOKOHE ITTE MITE KUDASA~I.
3 FILES NI WAKARETE OITE ARIMASU. KEDO, JAPANESE VERSION WINDOWS DEHA
TASM,TLINK HADEKIRU KEDO, TD HA TUKAEMASEN. ASIKARAZU
SOREDEHA BYE!
まいまい  [98/10/25 Sun 11:30:57]  [203.180.244.89]
My Homepage

「AllowASM で RETF が通らない」のその後ですが、そのルーチンはRETFしかないので素直にPROC FARの属性をつけてRETに変えたら通りました。

しかしなぜRETFが通らないかは謎。うむむ。
AZUCO  [98/10/21 Wed 08:05:18]  [210.164.19.112]

RETFが通らない

ジャンプ自体を、dword ptrで行ってますか?
って、アセンブル時に通らないんですよね?
そうなら、わかんないなぁ。
ami  [98/10/20 Tue 20:02:34]  [210.173.224.70]

さっき質問の投稿をしたamiですが、
ログ読んでたらintelのホームページが紹介されてましたね(^^;
理解できるか分からないけどとりあえずそれ見て勉強してみますね。
ami  [98/10/20 Tue 19:46:15]  [210.173.224.70]

 こんにちは。最近アセンブラに興味を持ち始めて
とりあえず「はじめて読むMASM」と「はじめて読む486」
を買ってみて、あまり理解できないながらなんとなく読んで
勉強しています。
 これらを読んでアセンブラがどんなものかはなんとなく
わかったんですが、本に載っているソースで
MOV AH,8
とか
MOV DS,AX
とかって感じでいろんなレジスタが出てきますが、
どういうレジスタがあって、それぞれがどういう
意味(働き?)を持っているかというのが全く分かりません。

 そこで、そういうレジスタに関する情報が得られる本や
ウェブページがあったらどなたか教えてもらえないでしょうか?

 レジスタも機種によって異なると思いますが、今はCPUは
ペンティアムでDOSプロンプト上で勉強中です。
まいまい  [98/10/20 Tue 17:24:04]  [203.180.244.102]
DR-DOSをマルチタスクで使おう !

こんにちは、まいまいです。
さいきんASMはじめました。
AllowASMでJ3100のソフトの移植を勉強がてらやってますが、J3100の情報が、ない!どこにもない!
どなたかご存じですか。
int16hがどうもPC/ATと違うようなので。

AloowASMはMASM3.0互換らしいですが、どういうわけか RETF が通りません。
これもMASM3.0の仕様なんでしょうか。

P.S.
ASMとは関係ないですが、わたしのホームページです。興味がおアリの方はのぞいてみてください。
YOKOHAMA  [98/10/19 Mon 13:24:23]  [202.238.96.10]

こんにちは
情報ありがとうございます。
私の方でも、分からないなりにいろいろ調べてたり人にきいたりしました結果、やはりどうやらxx.vxdといったデバドラを作成し、INT25/26と同等の機能を実現するという方法をとるようです。
3.1用のINT25/26用dllをインターネットで見つけたのですが、ドキュメントにはDPMIという機能を利用して、INT25/26をシミュレートしているとの解説がありました。
ただし、95/98ではまた別の方法をとらなければならないようです。デフラグのようなソフトのために、手段(INT25/26のための)はのこされているようですが、やはりSDKやDDKといったものを使い、特別な処理が可能になるようにしなければならないようです。

*実は私自身、上の内容がよくわかっていないので、間違ったことを書いてしまっているかもしれません。そうでしたら、すみませんです・・・。
AZUCO  [98/10/12 Mon 07:50:48]  [210.164.19.116]

ウィンドウズのセクタリードとか。

あれからいろいろ調べたのですが、ウィンドウズには以下のファンクションがあります。

DeviceloControl

こいつは、トラックのフォーマットなんて言うのはあるんですが、セクタのリードとか、そう言うのがありません。
おそらく、VxDを直接コールするしかないと思うのですが、そのVxDの名前自体をどうやって取得するのかとか、コールのやりかたもやっぱり分かりません。
というわけで、追加で調べようかなー、と思ったのですが、もともとこちらの「CDの頭のトラックを直接読みこむ」というのを、どうもASPI-Win32で実現できそうなので、これでダメなら追加で調べます
(すんません)

恐らくこれ以上はDDKかなんかを参照するしかないと思います。ちなみにそれはマイクロソフトにあります。81MBくらいですが。

AZUCO  [98/10/08 Thu 04:47:04]  [210.164.19.106]

http://www.intel.co.jp/jp/developer/design/pentium/manuals/
インテルにあるよ。完璧なのが。ちゃんと調べないと
shigeo  [98/10/07 Wed 10:56:53]  [130.54.16.47]

ほげ〜船さん
http://www.sandpile.org/80x86/index.shtml
にはCPUに関する詳細な情報があります。
ほげ〜船  [98/10/06 Tue 17:56:34]  [133.9.45.207]
The Page of "the Hoge- Ship"

はじめまして、ほげ〜船と申します。
アセンブラ専用の掲示板ってあるんですね。驚きました

Windowsで、ネイティブコードを吐くコンパイラを作りたいと思っています。
それには、マシン語の知識が不可欠ですが、最近はPentiumについて
詳細に解説した資料なくて困っています。(Z80のはよくあるけど)
特にPentiumのニーモニック-機械語対照表がほしいのですが、
それがのっている書籍とか、Webページとかがあったら教えてください

トシキ  [98/10/02 Fri 19:37:19]  [202.217.205.117]

特にWindowsアセンブラ初心者の方へ(自分も初心者です。以前ここに書き込みしました。 ^^)
「Oh!X」という、雑誌が復刊し発売されてます。(¥2500)
昔はX68000(懐かしい・・・^^)というPCの専門誌だったのですが、今は半分はDOS/Vの記事になっていて、各言語の初心者向けページが有ります!(VB,VC++,アセンブラ!!!)
分かりやすいので参考になるかと思います。

10月9日にVC++のVer6.0スタンダード版が出るので、それを購入し、Windowsプログラムを始める予定です。

みなさん、何かあったら、よろしくお願いします。 ^^

kiss-me-quick  [98/09/30 Wed 21:00:04]  [210.162.137.68]
あすむ本

あすむ本のホームページをかなり改良しました。
中身はあんまり変わりませんが、
見た目はだいぶ変わったと思います。
まだ、暫定版なので不具合もあると思いますが宜しくお願いします。
相互リンクしてもらえるかた、その他いろいろな情報をお持ちの方、
メールお待ちしてます。


spade  [98/09/29 Tue 18:37:48]  [202.213.35.193]

申し訳ありません。書き忘れましたので、もう一度失礼します。

このメッセージは、一通り見ましたら、すぐ消してください。
ページが重たくなると思いますので。
かなり苦情の返事があると思いますので。

では。
spade  [98/09/29 Tue 18:26:27]  [202.213.35.193]

はじめまして。仲間内からは"spade"と呼んでもらっている者です。

私の資料が見つかりましたので、役に立つかはわかりませんが、載せておこうと思いましたので。


AAA 加算結果(AL)を 1桁の 10進数形式(00h〜09h)に補正する
AAD 除算前に AX値(アンパック形式BCD数)を 2進数に補正する
AAM 乗算結果(AL)を AX値(アンパック形式BCD数)に補正する
AAS 減算結果(AL)を 1桁の 10進数形式(00h〜09h)に補正する
ADC キャリー値を含んだ加算を行う
ADD 加算を行う
AND 論理積を求める   (演算対象となる 2つの数値で、両方のビットが 1になっているビットを 1にし、その他のビットを 0にする)
CALL プロシージャ(サブルーチン)をコールする   スタックに戻りアドレスをプッシュし、SPは、nearで -2、farで -4される
CBW ALレジスタの符号を AHレジスタ全ビットに拡張する
CLC キャリーフラグをクリアする
CLD ディレクションフラグをクリアする
CLI インタラプトフラグをクリアする(割込み禁止)
CMC キャリーフラグを反転する
CMP 第1オペランドと第2オペランドで示される値を比較する
CMPSB/CMPSW DS : [SI] と ES : [DI] をバイト(またはワード)単位で比較し、ディレクションフラグに従って SI、DI値を増減(±1または±2)する。
CWD AXレジスタの符号を DXレジスタ全ビットに拡張する
DAA 加算結果(AL)を 2桁の 10進数形式(00h〜99h)に補正する
DAS 減算結果(AL)を 2桁の 10進数形式(00h〜99h)に補正する
DEC 減算(-1)する
DIV 符号なし除算
ESC データバスにデータを渡す
HLT CPUの実行を停止する(再開は割り込みによる)
IDIV 符号つき除算
IMUL 符号つき乗算
IN バイト/ワードデータを I/Oポートよりアキュムレータに入力する
INC 加算(+1)する
INT ソフトウェア割り込みを発生する
INTO オーバーフローフラグ=1 なら INT4 を発生する
IRET 割り込み処理から復帰する
JA/JNBE CF=0 かつ ZF=0 のときジャンプする
JAE/JNB/JNC CF=0 のときジャンプする
JB/JNAE/JC CF=1 のときジャンプする
JBE/JNA CF=1 または ZF=1 のときジャンプする
JCXZ CX=0 のときジャンプする
JE/JZ ZF=1 のときジャンプする
JG/JNLE ZF=0 または SF=OF のときジャンプする
JGE/JNL SF=OF のときジャンプする
JL/JNGE SF=OF でないときジャンプする
JLE/JNG ZF=1 または SF=OF でないときジャンプする
JMP 無条件でジャンプする
JNE/JNZ ZF=0 のときジャンプする
JNO OF=0 のときジャンプする
JNP/JPO PF=0 のときジャンプする
JNS SF=0 のときジャンプする
JO OF=1 のときジャンプする
JP/JPE PF=1 のときジャンプする
JS SF=1 のときジャンプする
LAHF フラグレジスタの b7〜b0を AHレジスタにロードする
LDS DSレジスタと指定レジスタに farポインタを読み出す
LEA 指定レジスタにメモリオペランドの実行アドレスを読み出す
LES ESレジスタと指定レジスタに farポインタを読み出す
LOCK 続く命令を実行する間、他のプロセッサの介入を禁止する
LODSB/LODSW DS : [SI] をバイト(またはワード)単位でアキュムレータにロードし、ディレクションフラグに従って SI値を増減(±1または±2)する。
LOOP CXレジスタの値を -1し、CX=0 でなければループする
LOOPE/LOOPZ CXレジスタの値を -1し、ZF=1 かつ CX=0 でなければループする
LOOPNE/LOOPNZ CXレジスタの値を -1し、ZF=0 かつ CX=0 でなければループする
MOV データのコピーを行う
MOVSB/MOVSW DS : [SI] から ES : [DI] をバイト(またはワード)単位で転送し、ディレクションフラグに従って SI、DI値を増減(±1または±2)する。
MUL 符号なし乗算
NEG 2 の補数にする(=符号反転)
NOP 何の動作もしない
NOT ビット反転を行う
OR 論理和を求める   (演算対象となる 2つの数値のうち、どちらかのビットでも 1になっていれば、そのビットを 1にし、両方とも 0ならそのビットを 0にする)
OUT アキュムレータの値(バイト/ワード)を I/Oポートに出力する
POP スタックエリアからデータを取り出す   SPは +2される
POPF スタックエリアからフラグレジスタにデータを取り出す   SPは +2される
PUSH スタックエリアへデータをプッシュする   SPは -2される
PUSHF スタックエリアへフラグレジスタのデータをプッシュする   SPは -2される
RCL キャリーフラグを経由して左方向へ指定回数(1回または CL回)ローテイトする
RCR キャリーフラグを経由して右方向へ指定回数(1回または CL回)ローテイトする
REP CXで指定された回数だけ、次のストリング命令(STOSB/MOVSBなど)を繰り返す
REPE/REPZ CXで指定された回数またはゼロフラグがクリアされるまで、続くストリング命令(CMPSB/SCASBなど)を繰り返す
REPNE/REPNZ CXで指定された回数またはゼロフラグが立つまで、続くストリング命令(CMPSB/SCASBなど)を繰り返す
RET プロシージャ(サブルーチン)からコール先へ戻る   SPは、nearで +2、farで +4される   オペランド指定があれば、リターン後に SPに加算される
ROL 左方向へ指定回数(1回または CL回)ローテイトする   最上位ビットはキャリーフラグに入る
ROR 右方向へ指定回数(1回または CL回)ローテイトする   最下位ビットはキャリーフラグに入る
SAHF AHレジスタの値をフラグレジスタの b7〜b0にストアする
SAL/SHL 左方向へ指定回数(1回または CL回)シフトする   最下位ビットには 0が入り、最上位ビットはキャリーフラグに入る
SAR 右方向へ指定回数(1回または CL回)シフトする   最上位ビットには符号が入り、最下位ビットはキャリーフラグに入る
SBB キャリー値を含んだ減算を行う
SCASB/SCASW アキュムレータの値と ES : [DI] をバイト(またはワード)単位で比較し、ディレクションフラグに従って DI値を増減(±1または±2)する。
SHR 右方向へ指定回数(1回または CL回)シフトする   最上位ビットには 0が入り、最下位ビットはキャリーフラグに入る
STC キャリーフラグをセットする
STD ディレクションフラグをセットする
STI インタラプトフラグをセットする(割り込み許可)
STOSB/STOSW アキュムレータの値と ES : [DI] をバイト(またはワード)単位でストアし、ディレクションフラグに従って DI値を増減(±1または±2)する。
SUB 減算を行う
TEST 論理積を行ったものとしてフラグだけを変化させる
WAIT コプロセッサの処理が終了したという信号を受け取るまで実行を停止する
XCHG 第1オペランドと第2オペランドの値を入れ替える
XLAT ALに DS : [BX+AL] の値が入る
XOR 排他的論理和を行う   演算対象となる 2つの数値のうち、一方のビットが 1で、もう一方のビットが 0になっているビットを 1にし、その他のビットは 0にする

Sister.DELETE  [98/09/27 Sun 13:43:28]  [203.182.143.76]

>AZUCO

なにぃ、トゥームレイダー2とな!私も友達から借りて
猿のようにやりまくっていますよ。良いですねぇ。
日本のゲームってストーリーばっかで臨場感が無いね。
いつどこから敵が出て来るかわからん、あれがいいですねぇ。

・・・と、ここはASMな掲示板だった。失敬。

とはいえ、以前の書き込み、こちらも謝らなくてはいかんね。
なにせ、アングラ界で言う「チューボー」ってやつなんで。
あ、実際に中学生なわけではないです。口ばっか突っ込みたがる
馬鹿のことです。

いやはや私もお騒がせしまして。
でわ。
aoi  [98/09/26 Sat 03:48:21]  [209.125.123.243]

How do you do! I'm AOI.
Sumimasen romajide....
nanise college kara okutte iru monode Japanese ga tukaenain desu.
ima boku ha America ni imasu.
Programming ni kansite ha marukkiri no dosirouto.
kottini kitekara hajimetanode mada 2nen to itta tokoro desu.
moto programmer no hitoni susumerarete C to isshoni Assembler wo hajimeta no
desuga, muzukasikute wakarimasen. nihongo no sankousho no tagui ha nakanaka
tenihairazu all English de benkyou site irunodesuga nanika osusumeno hon, mataha
Web site ha naideshouka?

AZUCO  [98/09/23 Wed 23:59:54]  [210.164.19.91]

セクタリードとか

それ今俺がちょうど調べてるんで、わかったら書きこみますね。
基本的にデバイスドライバ(ウィンドウズ側)をコールするらしいんだけど。

YOKOHAMA  [98/09/22 Tue 14:28:33]  [202.238.96.10]

こんにちは

DOSアセンブラとWndowsプログラムの連携可否について疑問があります。
以前、似たような質問を見かけた気もするのですが、もしだぶってしまっていたらすみませんです(^^;)。

たとえば、ディスクのセクタリード/ライトのようなアセンブラでないと実現できない関数をdosアセンブラで作っておき、それをたとえばVBやVCのようなWindows用のプログラムからよびだして実行(セクタをウインドウ、テキスト・ボックスに16進数で表示させたり書き込んだりする、またFDのデュプリケイト・ツールをつくる)することは可能なのでしょうか?

よろしくお願いします。

AZUCO  [98/09/22 Tue 00:30:08]  [210.164.19.84]

ひさしぶりでちゅ!Sister.DELETEさん

>メールアドレスから何から調べ上げる、か。穏やかじゃないな。
>まぁ、どうやってやるかは知らんが。SMTPのLOGでも
>しらべるのかぁ?へっ。
あんまいじめんといてくれぇぇ(汗
まぁ穏やかじゃないよね。いや、ちょっと最近トゥームレイダー2の
やりすぎで過激になってたもんで(爆

まぁ具体的には、既にどこの教室からアクセスしたか?くらいはわか
ってるので、後はこまめに調べればすぐですね。
ていうか、学校のメアドは覚えにくいメアドで、探しにくいんだよな
ぁ。いや、もう探さないんだけどね。終わったし。

>AZUCOさんの目に触れたら
というわけで見ました。調子こいてすまんす>オール

Sister.DELETE  [98/09/21 Mon 23:30:22]  [210.164.41.220]

バッシングねぇ。まぁ今はもう古い話ですがね>AZUCOさん

メールアドレスから何から調べ上げる、か。穏やかじゃないな。
まぁ、どうやってやるかは知らんが。SMTPのLOGでも
しらべるのかぁ?へっ。

まぁ、もう古い話。AZUCOさんの目に触れたら、もうこの
書き込み、消していいですよ>管理人。

俺、串も使わないでアクセスしてるから、ちょっとあることすれば
すぐ所在はばれるんだろうけど。

ま、取り止めのない話すみませんね。じゃ。
YOKOHAMA  [98/09/21 Mon 14:58:00]  [202.238.96.10]

たびたび失礼します。

>本当は、トランジスタやシンク電流が稼げるインバータなどでバッファリングする必要があるのですが、

トランジスタでスイッチングするとわずかですが、反応がおそくなりますので、スピードが要求される場合には注意が必要です。もちろん人間の目には分からないくらいのスピードですが。

念のため。
YOKOHAMA  [98/09/21 Mon 14:28:31]  [202.238.96.10]
http://レスありがとうございます。

すばやいレスポンスありがとうございます。

>それはLEDのつけ方はハードウェア的に大丈夫なん でしょうか?

いや、だいじょぶではありません(^^;)。

本当は、トランジスタやシンク電流が稼げるインバータなどでバッファリングする必要があるのですが、
手っ取り早くレベルの確認がしたかったので、データピんに330オームを介して付けただけという単純なものです。実はこれに原因が?

ともかく、教わったアイドリングのファンクションコールでいろいろためしてみます。

また分からないことがありましたらよろしくお願いいたします。
AZUCO  [98/09/21 Mon 12:56:12]  [210.164.19.112]

プリンタポートの件ですが、それはLEDのつけ方はハードウェア的に大丈夫なんでしょうか?(ハードのことは詳しくない)

debugから、同じように操作したのですが、特にハングアップはしなかったので、
 純粋にタイミングの問題
 ハードウェア的な問題
のどちらかでしょう。

タイミング的な問題では、
 int 2fh,ax=1680h
が、DOSのアイドルコールになってるので、こいつを呼び出すのが、DOSでの流儀にかなってると思います。多分タイミング的に一回呼び出せば十分な時間を確保できると思います(そもそもこれは対人間的なオーダーでのウェイトな為)

AZUCO  [98/09/21 Mon 12:43:52]  [210.164.19.112]

いきなりアセンブラは効率が悪いか?という話ですが、

僕はいきなりアセンブラはCを習得する上で、非常にいいと思います。
Cにはポインタという概念がありますが、結局これはアセンブラでいうところのアドレスのことなのですが、Cはそのポインタ操作に関する部分に、制限などがあるため、本来はすんなり理解できるはずのところが、Cの難しい部分のひとつになってます。

そんなわけで、ゆくゆくはCもやってみるつもりならば、アセンブラというのは非常に為になると思います。普通にCを勉強するよりはもっと奥深いコードが書けるようになること請け合いです。

ただ、いきなりアセンブラが簡単かどうかという問題は、なんともいえないですね。僕はベーシックからアセンブラに行きましたが、そんなにてこずった覚えはないです。いきなりアセンブラも十分行けるとは思います。

がんばってちょ!
YOKOHAMA  [98/09/21 Mon 10:50:49]  [202.238.96.10]
http://Data output to LPT1

こんにちは。

パラレルポートからデータを出力する以下のような簡単な関数を作り、Cから、lptout(xx);のようにしてよびだして、任意のビットを操作してみました。(lptout(64)で6ビット目が立つ)

_lptout proc
push bp
mov bp,sp

mov dx,0378h ;Set LPT1 address
mov al,[bp+4] ;Getting data
out dx,al ;Data out

mov ax,4c00h
int 21h
(略)

これだけでは面白くないので、とりあえずLEDをつけてイルミネーションのようなことをやろうと思い、次のようにしてみました。

lptout(0);
lptout(1);
lptout(2);
lptout(4);
lptout(8);
lptout(16);

ところが、最初のlptout(0)を実行したきりになってしまします。この場合ウェイト
をおくのが正しいのだとおもわれますが、なにか適当な時間稼ぎルーチンや他のよい方法を持っている方、ご教授願えればと思います。
アセンブラというよりCの話題にちかくなってしましい、すみません。
よろしくおねがいします。

かばさわ  [98/09/21 Mon 02:10:13]  [133.205.141.160]

初めまして ヤフー検索でこちらに参りました
いきなり質問で失礼いたします。
自分は、まだどの言語でもプログラミングができない初心者なのですが
是非アセンブラができるようになりたいと思っています。(Z−80やH8で)
そのためにはまず、どの言語から勉強した方が良いのでしょうか?
トシキさんの会話を見ているとC++等からがいいのかなとも思いますが
Z−80でいきなりアセンブラを始めるのは、効率が悪いのでしょうか?
またお薦めの書籍や、勉強法などありましたら教えてください
ちなみに「初めて読むアセンブラ」を読んでみましたがさっぱりわかりません(T_T)
 どなたか優しい方、ご指導よろしくお願いいたします。



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