[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 05/09 08:39 / Filesize : 220 KB / Number-of Response : 953
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

DOSでプログラミング



1 名前:デフォルトの名無しさん [03/03/07 10:45]
ハードウェアを直接叩くのはやっぱり楽しい!

DOSにおける開発について語りましょう。


301 名前:デフォルトの名無しさん mailto:sage [04/11/14 23:04:29]
マジッスカ???

302 名前:デフォルトの名無しさん mailto:sage [04/11/15 09:30:55]
マジッスヨ???

303 名前:デフォルトの名無しさん mailto:sage [04/11/16 16:59:11]
DOS画面で、入力内容とかメッセージとかをファイルに出力するコマンドがあったら
教えて下さい。

304 名前:デフォルトの名無しさん mailto:sage [04/11/16 17:10:11]
>>303
質問があいまいだな
COPY CON filename や ECHO 、リダイレクトなど。

305 名前:デフォルトの名無しさん mailto:sage [04/11/16 17:29:14]
>>303さん
レスありがとうございます。
DOS画面の表示内容をそのままファイルに出力したいのです。
長いバッチで古い上の方が消えてしまうもので、
それを全て記録したいのです。
初心者なのでいまいちうまく説明できなくてすみません。

306 名前:デフォルトの名無しさん mailto:sage [04/11/16 17:36:50]
>>304さんありがとうございました。
リダイレクトでできました。
即レスありがとうございます。

307 名前:デフォルトの名無しさん [04/11/22 16:29:27]


308 名前:デフォルトの名無しさん mailto:sage [04/11/24 15:25:49]
[Windows]初心者〜管理者まで必読!コマンドライン(DOS Pt.3)
pc5.2ch.net/test/read.cgi/win/1062775949/

309 名前:デフォルトの名無しさん [04/12/07 23:03:00]
アスキー出版局の、PC−9801スーパーテクニックっつー本
誰かいらんけ?




310 名前:デフォルトの名無しさん mailto:sage [04/12/07 23:16:35]
>>309
図書委員の権限発動して高校の図書館に入れさせてコピーした記憶のある懐かしい代物だなw

311 名前:デフォルトの名無しさん mailto:sage [04/12/09 23:03:50]
あなたを詐欺罪で訴えます。


312 名前:デフォルトの名無しさん mailto:sage [04/12/10 13:39:44]
>>2 >>109
今更だが、パッチってこれだな。
groups.google.com/groups?hl=ja&lr=&c2coff=1&selm=37E0FA53.FF84E994%40anet.ne.jp

313 名前:デフォルトの名無しさん mailto:sage [04/12/10 15:10:04]
>>312
まぁあれだ、MSに対向するためのみの意義しかないグラフィック機能を除けば今でもそれなりだろうね。
少なくともLSI-Cを使うよりも16倍いい。
#あれはあれで、悪くはないのだが。

314 名前:デフォルトの名無しさん mailto:sage [04/12/10 15:32:19]
LSI-CはLFN libraryがあるから、Win/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\%");
とするか、バッチファイル作って呼び出せ。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<220KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef