1 名前:デフォルトの名無しさん [03/03/07 10:45] ハードウェアを直接叩くのはやっぱり楽しい! DOSにおける開発について語りましょう。
315 名前:デフォルトの名無しさん [04/12/12 21:55:24] dosのフォントが気に入らない。変更するにはレジストリをいじるしかないのかな?
316 名前:デフォルトの名無しさん mailto:sage [04/12/12 22:02:34] そりゃDOS窓やろ
317 名前:デフォルトの名無しさん mailto:sage [04/12/12 22:05:17] もし窓じゃないDOSならCONFIG.SYSをいじって下さい。
318 名前:デフォルトの名無しさん [04/12/14 13:58:46]
319 名前:デフォルトの名無しさん mailto:sage [04/12/16 15:04:05] DOSってなんどす?
320 名前:デフォルトの名無しさん [04/12/18 16:37:45] Turbo C + nasm + alink => 16bits DOS EXE をしているのですが、どうもうまくいきません。 ASMからC関数はよべるのですが、 CからASM関数をよぶとエラーになってしまいます。 それから、Cから指定されたポインタはスタック内でどのようになっているのでしょうか。 たとえば、 mov ah,09h mov dx,[bp] ;<-ここがよくわかんない int 21h というように、ASM側でどのように指定してよいかわかりません。 どなたか教えていただけませんか?
321 名前:デフォルトの名無しさん mailto:sage [04/12/18 16:57:42] DOSで動作するMASMの6か5.1ってフリーになってないのかな。
322 名前:デフォルトの名無しさん mailto:sage [04/12/18 17:37:39] セグメントディスクリプタを書いてないんじゃないかと E.S.P.
323 名前:デフォルトの名無しさん mailto:sage [04/12/18 18:16:12] >>320 FAQ 勉強してから質問しれ
324 名前:320 [04/12/18 18:24:44] >321 MASM はサイズが大きすぎるので、ちょっと。。。 >322 せぐめんとでぃすくりぷたとは??
325 名前:320 [04/12/18 18:36:14] >323 質問の説明が悪かったですね。。 まず、ASM関数 _puts を用意します。 関数内では、 ah=09h ds:dx=buffer int 21h を処理するようにします。 そして、Cからこの関数を呼び出したいとします。 セグメントが違う(僕の勘違いかもしれませんが)ので、 mov ah,09h mov dx,[bp] ;[bp]=Cの引数 int 21h とすると、ゴミが表示されます。 という内容でした。
326 名前:デフォルトの名無しさん mailto:sage [04/12/18 19:13:05] >>325 引数は正しくわたされてるか _pusは正しく動作するか C側のオブジェクトは確保されているか これらを確かめた上で tcのローカル変数を処理したいのならば([bp]と書いてあるので)、スタック上に確保されている よってDSで処理する_putsに適合させることはできない。(セグメントオーバーライドでも不可) DS上の別領域にでもコピーする ただし、small modelならばSS=DSなので問題は起きない
327 名前:デフォルトの名無しさん mailto:sage [04/12/18 19:52:37] つーか、コンパイラにアセンブリ出力させてよく見ろ。
328 名前:デフォルトの名無しさん [04/12/18 21:52:29] ACPIをDOSでコントロールしたいのですが、どこかにソースかライブラリが落ちていないですか?
329 名前:デフォルトの名無しさん mailto:sage [04/12/18 22:38:48] 俺はEPSONのPC386からぶっこぬいてきたフォントをTerminalの14ptに突っ込んで使ってるので DOSの時代からWin95/98/2000を経てXPのコマンドプロンプトまで同じフォント。 ついでにLinux上のX-Winodwも一緒
330 名前:デフォルトの名無しさん mailto:sage [04/12/18 22:53:51] 日記は(ry
331 名前:デフォルトの名無しさん mailto:sage [04/12/19 04:18:23] w
332 名前:320 [04/12/19 08:57:41] >327 引数の受け渡されているところが、なまなましく見ることができ理解できました。 ただ、C側のアドレスに関しては解決できません。 extern void putc( char c);/*ASM関数*/ char* ss="Hello World!\n$"; putc( *ss);/*表示されるのは,ゴミ*/ 相性が悪いのでしょうか?
333 名前:デフォルトの名無しさん mailto:sage [04/12/19 09:02:13] asm以前にCもわかってなさそうだな・・・・・
334 名前:デフォルトの名無しさん mailto:sage [04/12/19 09:04:47] >>333 俺も全く同じ事を思った。 >>332 >相性が悪いのでしょうか? プログラミングとあなたの相性が悪いせいかもしれない。
335 名前:デフォルトの名無しさん mailto:sage [04/12/19 09:10:43] なんせ完全な解が出てるのに無視してる
336 名前:320 [04/12/19 09:29:04] ソースです。ご指摘、お願いします。 NASM -f obj start.nas TCC -c main.c ALINK start.obj main.obj -oEXE -o test.exe ;start.nas segment .text USE16 extern _main ..start: call _main mov ax,4C00h int 21h global _putc _putc: push bp mov bp,sp add bp,4 push dx mov ah,02h mov dl,[ss:bp] int 21h pop dx pop bp ret segment stack stack resb 100h stacktop:
337 名前:320 [04/12/19 09:29:34] /*main.c*/ extern void putc ( char c); void main ( void) { char* test="Hello World!\n$"; putc( 'i');/*"i"表示*/ putc( *test);/*ゴミ表示*/ }
338 名前:デフォルトの名無しさん mailto:sage [04/12/19 09:38:36] だからCの勉強をしなさいって。
339 名前:デフォルトの名無しさん [04/12/19 09:41:24] "Hello World!\n$" なんの意味があるんだ最後の$…
340 名前:デフォルトの名無しさん mailto:sage [04/12/19 09:42:28] うーん・・・・まず2chの勉強が先かと・・・・・・・・ まずはsageと打鍵する練習
341 名前:デフォルトの名無しさん mailto:sage [04/12/19 09:42:58] じゃなかった。この原因は。 Cの「スタートアップ」と呼ばれるものが何をしているか もっとはっきり言えば、DS,ES,SSは誰がいつ設定しているのか、と。
342 名前:デフォルトの名無しさん mailto:sage [04/12/19 09:44:54] それもCの勉強なんだがな
343 名前:320 [04/12/19 10:21:50] "Hello World!" のセグメントは、>326 の言ったとおり取得できないんでしょうか? >341 スタートアップについてはよくわかりません。。 バイナリ初心者なもので。。
344 名前:デフォルトの名無しさん mailto:sage [04/12/19 10:39:15] うひょひょひょ。 ヘルプ見ろ。 サンプル見ろ。 ヘルプ見ろ。 サンプル見ろ。 関数の使い方書いてあるだろ。 初心者はそれ真似することからはじめろよw
345 名前:デフォルトの名無しさん [04/12/19 10:44:38] char* ss="Hello World!\n$"; putc2( *ss); mov ah,09h mov dx,[bp + 0] mov ds,[bp + 2] int 21h としてみてください・・・
346 名前:デフォルトの名無しさん [04/12/19 10:50:48] char[] ss={"Hello World!\n$"}; putc2(ss); mov ah,09h mov dx,[bp + 0] mov ds,[bp + 2] int 21h としてみてください・・・
347 名前:320 [04/12/19 10:58:46] 訂正です。 "Hello World!\n$" =訂正=> "Hello World!\r\n$" >345 ASM関数 _puts: push bp mov bp,sp add bp,4 push dx push ds mov ah,09h mov dx,[bp + 0] mov ds,[bp + 2] int 21h pop ds pop dx pop bp ret を追加した後、C側で puts( ss); としたところ、これもゴミが出てきます。。。
348 名前:デフォルトの名無しさん mailto:sage [04/12/19 11:07:36] 半可通が教えるクンして泥沼プ またーりオチ
349 名前:デフォルトの名無しさん [04/12/19 11:14:10] よくこんなんで、nasmとかalinkを使うよな。 トラブルが全く切り分けられないのに、標準以外のツールなんか使うなよ。
350 名前:デフォルトの名無しさん mailto:sage [04/12/19 11:38:52] typoっぽいケアレスが気になるんだけど、何回も書いているから本当に理解してないのかも・・・・・・
351 名前:デフォルトの名無しさん mailto:sage [04/12/19 12:34:28] しかし、ここの住人はキモイな ここまで性根が腐ってるとは。。。 よっぽど現実社会じゃ、みじめでいじめられてるんだろうんなw
352 名前:デフォルトの名無しさん [04/12/19 12:53:07] ASM関数 _puts: mov bp,sp push dx push ds mov ah,09h mov dx,[bp + 2] mov ds,[bp + 0] int 21h pop ds pop dx ret としてみてください・・・
353 名前:デフォルトの名無しさん mailto:sage [04/12/19 13:12:31] 手取り足取り指導してる方がよっぽど醜悪 これがわからない内は引き篭もってろ
354 名前:\________/ [04/12/19 14:10:09] ∨ / ̄ ̄ ̄ ̄\ ( 人_____,,) |ミ/ ー◎-◎-) ボクハ ホントウハ ツヨインダゾ・・・ブツブツ (6 (_ _) ) カタカタカタ | ∴ ノ 3 .ノ ______ ヽ、,, __,ノ | | ̄ ̄\ \ / \.____| | | ̄ ̄| / \___ | | |__| | \ |つ |__|__/ / /  ̄ ̄ | ̄ ̄ ̄ ̄| 〔 ̄ ̄〕
355 名前:デフォルトの名無しさん mailto:sage [04/12/19 14:17:57] >>351 絶妙な釣りと、釣りに気づきながら悪ノリしているこのスレの常連の構図だが。
356 名前:デフォルトの名無しさん mailto:sage [04/12/19 14:30:58] 過疎スレで釣りをする人間がいる訳ないし(ヒマな引き篭もりほど そんな発想をするんだろが)、こんな過疎スレでいつもの構図も何もない。 悪ノリと言っても、みじめな自分の社会生活のウサ晴らしに 初学者をいびってるだけだろうが。 顔だけでなく精神まで腐ってちゃ救いようがないな。 全く内外ともに絵に描いた様なキモオタだな。 だから何時までもバカにされてみじめなんだよ。耳が痛いだろう。 アンタらは、もう一生救われないよ。
357 名前:デフォルトの名無しさん mailto:sage [04/12/19 14:33:13] 久しぶりの餌なんだから、もっとゆっくり食べようよ
358 名前:デフォルトの名無しさん mailto:sage [04/12/19 14:38:33] 魚が逃げちゃうよ。orz
359 名前:デフォルトの名無しさん [04/12/19 14:48:02] 初学者の割に、他人のアドバイスを聞く耳を持ってないようだがw 耳に心地良い(そして間違ってるwww)アドバイスについて逝くしwwwww
360 名前:デフォルトの名無しさん mailto:sage [04/12/19 14:53:48] wを連打してるのが痛々しい 悔し泣きしてるのか?
361 名前:デフォルトの名無しさん mailto:sage [04/12/19 21:45:00] 他のasmスレに逝ってないようだし、本当に釣りだったかも
362 名前:デフォルトの名無しさん mailto:sage [04/12/19 21:47:40] とりあえずメモリモデルについて調べろ、引数がstackにどう積まれるか、だな
363 名前:デフォルトの名無しさん mailto:sage [04/12/19 22:10:00] 何を逝っても無駄・・・・・誰の話もきいちゃいなかったし・・・・・・・・
364 名前:デフォルトの名無しさん mailto:sage [04/12/19 22:57:13] だーかーらー、釣りだってばよ。
365 名前:デフォルトの名無しさん mailto:sage [04/12/20 00:52:20] こんなリアルっぽい釣りがあるかよ
366 名前:デフォルトの名無しさん mailto:sage [04/12/20 12:54:55] リアルっぽいからこそ釣れるんだろ。
367 名前:デフォルトの名無しさん mailto:sage [04/12/20 13:34:37] おまいらピラニアかよ
368 名前:デフォルトの名無しさん mailto:sage [04/12/20 14:29:30] 本物はどこかふざけてるんだよ。 今回はそれがない。
369 名前:デフォルトの名無しさん mailto:sage [04/12/20 16:47:10] ( ´・_・`)320タン、ちゃんとCの勉強してるかなー
370 名前:320 [04/12/21 00:30:55] すいません。レス遅くなっちゃいました。。 なかなかうまくいかないので、最初からまた調べ直そうと思います。 教えてくれたみなさん、わざわざありがとうございました。 またつまずいたら、ずうずうしいながら質問させて頂きます。 その時は、もう少し高度な話題ができたらなと思います。 (マジレスでした。。。)
371 名前:デフォルトの名無しさん mailto:sage [04/12/21 01:04:57] もう一度だけまじめに書くけど、>>337 がうまく動かないのは、 コンパイラは文字列リテラル "Hello ..."がDGROUPのセグメントにあると仮定したコードを吐いているのに DSが別の領域を指しているため、全然別のデータを読んでいるから。 DSを設定するのはスタートアップ(TCCならc0x.obj)で、 コンパイラがリンカを呼び出すときに、これをリンクしている。 とりあえず、アセンブラコード内でcall _mainするのをやめて 単にCのソースにアセンブラの関数をリンクして動かしてみ。
372 名前:Help [04/12/21 01:36:21] どなたかご存知でしたら教えてください。 C#で作成したDLLからVB6へイベントを通知する方法を ご存知でしたら教えてください。 VB6は、C#記述のInterfaceをサポートしていないので デリゲートでイベント通知がうまく出来ません。 お願いします。
373 名前:320 [04/12/21 01:44:46] >371 その方法は何度かためしたのですが、 Error: Fixup overflow in module main.c at _TEXT:000E, target = _putc という感じで、リンクが出来ませんでした。。
374 名前:デフォルトの名無しさん mailto:sage [04/12/21 01:56:07] じゃあ、コンパイラの出力を参考にセグメント指定をしなさい。 _TEXT segment byte public 'CODE' みたいな奴。(byteかwordか忘れた) そして、_putcを _TEXT segment assume cs:_TEXT _putc proc ... _TEXT ends と書く。 データ領域があったら、DGROUPも設定する。 うろ覚えのまま書いてるから、正確にはコンパイラの出力をコピーするように。 もし、asm側から_mainを呼ぶなら、call _mainの前にDSを設定する。 もちろん、呼び出す所はassume cs:_TEXTとされた_TEXTセグメントの中。
375 名前:デフォルトの名無しさん mailto:sage [04/12/21 04:21:10] なんでも教えりゃわかるってもんじゃないんだよ
376 名前:デフォルトの名無しさん mailto:sage [04/12/21 08:53:39] INT28
377 名前:デフォルトの名無しさん mailto:sage [04/12/22 03:07:11] INT 1B
378 名前:デフォルトの名無しさん mailto:sage [04/12/22 19:33:56] >>377 clc/stc/cmc
379 名前:kai [04/12/27 00:44:06] dos用に作られたCプログラムをwindows上で動かすことはできないのですか?
380 名前:デフォルトの名無しさん mailto:sage [04/12/27 00:46:59] >>379 自分で試せよ。
381 名前:デフォルトの名無しさん mailto:sage [04/12/27 13:49:21] 基本的に動く。ただしNECのPC98のハードウェア、BIOSに依存したものは動かない。 その場合98エミュレータ上では動く。
382 名前:デフォルトの名無しさん mailto:sage [04/12/28 21:52:20] 餌がコネェ
383 名前:デフォルトの名無しさん mailto:sage [05/01/17 00:57:24 ] CGの技術・性能が向上していく一方で、テキストだけ、あるいはラインアートな絵といった ゲームにも大きな魅力を感じている人間がここにいる。 ミステリーハウスとかZorkとかNethackとか。どういうわけだか好きなんだ。 かといって派手な演出が嫌いというわけでもないんだが、とにかく 今もDOSでプログラミングとかしている人は尊敬するわけです。 がんばってくださいありがとう保守。
384 名前:デフォルトの名無しさん mailto:sage [05/01/19 00:32:50 ] DOSはもう流行ることもないんだろうけど 消えることもないんだろうナ‥ せっかく書くんだ 一番好きなOSで動かすのが当然だろう
385 名前:デフォルトの名無しさん [05/01/27 10:57:57 ] TurboC++1.01を使ってるんですが286までしか扱ってくれないので 386レジスタを使おうとしてもコンパイルエラーが出ます なんとかできませんか アセンブラは386対応のものを使ってます int main() { asm{ mov eax,0 ; eaxって何?って言われる }; return 0; }
386 名前:デフォルトの名無しさん mailto:sage [05/01/27 10:59:41 ] >>385 何故eaxを使いたいのか聞かせてくれ
387 名前:デフォルトの名無しさん mailto:sage [05/01/27 11:04:44 ] 前に 66h 埋め込んでおけばいいんじゃねーの? TC++でどうやるかは知らんが。(emitか?)
388 名前:デフォルトの名無しさん mailto:sage [05/01/27 11:22:02 ] >>386 386で動かすプログラムだからeax使った方が効率いいからです >>387 コンパイラが286時代のものなのでそもそもeaxレジスタは存在していなく 未定義の識別子扱いをしてパースしてくれないんです
389 名前:デフォルトの名無しさん mailto:sage [05/01/27 11:24:16 ] go WATCOM with DOS-extender to get the 32bit-full-power!
390 名前:デフォルトの名無しさん mailto:sage [05/01/27 11:41:55 ] >>388 だから、mov eax,0の代わりに、mov ax,0にしてその前に66hを埋め込むってこと。
391 名前:デフォルトの名無しさん mailto:sage [05/01/27 12:00:07 ] こうですか… mov eax,0 db 66h なんと言うか可読性がすごいことになりそうですね…
392 名前:デフォルトの名無しさん mailto:sage [05/01/27 12:01:41 ] >>391 ホームラン級の馬鹿だな
393 名前:デフォルトの名無しさん mailto:sage [05/01/27 12:07:45 ] ワロタ
394 名前:デフォルトの名無しさん mailto:sage [05/01/27 12:12:49 ] その程度の認識で効率がどうのこうの言うのは背伸びしすぎ
395 名前:デフォルトの名無しさん mailto:sage [05/01/27 12:13:21 ] 素直にアセンブラ使えばいいのに。タボシなんか捨てて。
396 名前:デフォルトの名無しさん mailto:sage [05/01/27 17:50:51 ] いや、TurboC/C++は、アセンブラコードは処理できないよ。 外部のアセンブラに渡すだけ。 ていうかね、.286とか.386cって書いているの見たこと内科医? どっか先頭の方、適当なところに入れて桶
397 名前:デフォルトの名無しさん mailto:sage [05/01/28 13:19:16 ] PC/AT互換機用のTCなら、ボーランドのFTPサーバーから 自由にダウンロードできるようですが・・・ 違ってたらスマソ
398 名前:デフォルトの名無しさん mailto:sage [05/01/28 13:30:28 ] FTPは知らんが、HTTPなら。 community.borland.com/museum/
399 名前:デフォルトの名無しさん [05/01/30 23:36:17 ] BCC使ってるんですけど、 system("set /P A=\"[Y/N] \""); system("echo \%A\%"); とやると「%A%」と表示されてしまいます。 どうしたら良いのでしょうか? ご指導くださいませ。
400 名前:デフォルトの名無しさん mailto:sage [05/01/30 23:59:03 ] >>399 Borland C++ の16bit版? ていうかDOSでは set /P は使えないだろ。 >system("set /P A=\"[Y/N] \""); >system("echo \%A\%"); system() 関数は呼び出す毎に別の環境になるので 最初の行で環境変数 A を設定しても その値は次の行には引き継がれない。 system("set /P A=\"[Y/N] \" && echo \%A\%"); とするか、バッチファイル作って呼び出せ。
401 名前:デフォルトの名無しさん mailto:sage [05/01/31 03:06:39 ] system("echo %A%");
402 名前:デフォルトの名無しさん mailto:sage [05/02/07 03:02:15 ] バッチファイル以外で %環境変数% が使えるようになったのはWin95付属のDOS7.0以降だな。
403 名前:デフォルトの名無しさん mailto:sage [int 2ch =05/04/02(土) 07:57:13 ] ttp://www.256b.com/demo/225 ttp://www.256b.com/demo/112
404 名前:たかのぶ [2005/05/09(月) 21:58:11 ] こんなん叩いたら↓ if not exist z: net use z: \\Server01\e$ PPPPP /user:XXXXXX こんなもんがでたYO↓ z: は \\Server01\e$との接続を記憶しています。 記憶している接続に上書きしますか?(Y/N) 藻前ら分かる香具師はいますか
405 名前:デフォルトの名無しさん mailto:sage [2005/05/11(水) 05:51:11 ] command.comは気が狂いだすから持ち出すのやめてくれ
406 名前:デフォルトの名無しさん mailto:sage [2005/05/11(水) 16:01:09 ] うはwwwwwcommand.comおwwww いいけつしとるのぉwwwwおkwwww
407 名前:デフォルトの名無しさん [2005/06/18(土) 23:11:50 ] 初心者です。突然すいません。急いでいるもので。 ○○.EXEというDOSプログラムの中身を見るのはどうしたらよいのですか?
408 名前:デフォルトの名無しさん [2005/06/18(土) 23:15:13 ] バイナリエディタで開け
409 名前:デフォルトの名無しさん mailto:sage [2005/06/18(土) 23:16:02 ] >>407 d>debug ○○.EXE
410 名前:デフォルトの名無しさん [2005/06/18(土) 23:20:00 ] ありがとう。 定番バイナリエディタってどれです? (409は難しそう)
411 名前:デフォルトの名無しさん [2005/06/18(土) 23:33:43 ] 16進でみたいだけならviでもhidemaruでもMifes(綴分からん)でもいいけど。 中味を見るというのがよく分からん。 ひょっとしてexeからソースを復元したいの?
412 名前:デフォルトの名無しさん mailto:sage [2005/06/18(土) 23:36:22 ] はげまるって、 まだDOS版売ってるの?
413 名前:デフォルトの名無しさん [2005/06/18(土) 23:53:04 ] >>411 難しいことはよく分かりません。 とりあえず「Stirling」ってやつVectorで定番って書いてあったからそれで開いてみた。 4D 5A 20 01 6C 00 74 00 20 00 C4 09 FF FF 52 0D MZ .l.t. .ト...R. ↓ ↓ ↓ 延々と続いてる 初めて見ました。(初心者です) 右のほうは何なんですかね?文字化けしてるのかな? DOSプログラムでNotePCのバッテリー情報を確認できるツールが有るんだけれど 機種によって使えたり使えなかったりするので、どこかを変えれば何とかなるのかなって思って… だけどこの数字の羅列の意味はよく分からないな…
414 名前:デフォルトの名無しさん [2005/06/18(土) 23:53:10 ] dos限定だったのか。 エスパーな会話しちゃったw
415 名前:デフォルトの名無しさん mailto:sage [2005/06/19(日) 00:02:25 ] >>413 それがプログラム 左が16進数で、右がテキストエディタで開いたときのものと思え ってか、お前がバイナリエディタで開いたバイナリは 改編を認めてるのか? ライセンス違反だぞ