懐かしのMS-DOSプログラミング [sc](★0)
-
- 1
- 2010/04/21(水) 12:42:23
-
mov dx,offset msg
mov ah,9
int 21h
mov ax,4c00h
int 21h
msg db '懐かしのDOS時代のプログラミングについて語ろうぜ',0dh,0ah,'$'
-
- 120
- 2010/07/23(金) 22:32:20
-
Z80から8086に入ってきたとき、86には条件リターンがないのに驚いた。
-
- 121
- 2010/07/23(金) 22:39:19
-
movでフラグが変わらないとか
-
- 122
- 2010/07/24(土) 04:44:50
-
>>120
いやむしろ俺は、8080/Z80系をはじめて触ったとき
条件Jump/条件Call/条件Returnと揃ってることの方に驚いたが…
-
- 123
- 2010/08/01(日) 22:40:21
-
-
- 124
- 2010/08/25(水) 18:59:52
-
保守
Z80ではIX、IYを使うと笑われたから、
86でもSI、DIはストリング命令以外では使わなかったな。
-
- 125
- 2010/08/25(水) 19:21:15
-
IXやIYを使うだけで嗤う香具師はおらん
IXやIYをアキュムレータのごとく使う香具師が嗤われる
-
- 126
- 2010/08/25(水) 20:10:28
-
IX や IY はクロックをおもいくそ食うと思っていたが、HD64180 なんかでは状況はかわったのかなあ?
-
- 127
- 訂正
- 2010/08/25(水) 22:50:37
-
8086系のCでも、SIとDIはレジスタ変数として使われる程度だね。
-
- 128
- 2010/08/26(木) 04:34:12
-
ぷげら
-
- 129
- 2010/08/26(木) 10:50:31
-
>>127
誰が作ったんだ?その糞コンパイラはw
-
- 130
- 2010/08/27(金) 13:27:04
-
ストリングス転送命令は途中からあまり使われなくなったような気がする。
-
- 131
- 2010/08/27(金) 16:14:18
-
UNICODEが流行ってASCIIZじゃなくなったからだろ
-
- 132
- 2010/08/27(金) 16:19:38
-
ブロック転送命令は8/16/32bit長のどれも使えるぞ
-
- 133
- 2010/08/28(土) 08:31:25
-
Pentium以降、単純機能の命令が非常に高速化されたので
ストリング転送命令のような複合命令を使う理由がなくなった。
VC++のmemcpyの実装を見ると使用可能ならxmmレジスタを使ってる。
-
- 134
- 2010/09/15(水) 22:51:28
-
CTSって何する命令?
symdebで逆アセンブルすると時々出てくるんだけど。
-
- 135
- 2010/09/15(水) 23:14:54
-
>>134
ClearToSend……ってギャグはさておき。
コードは幾つよ。CTSなんて記憶にないわさ。
-
- 136
- 2010/09/15(水) 23:41:19
-
>>134
STC(SeT Carry flag) じゃなくて?
-
- 137
- 2010/09/16(木) 00:04:59
-
>>135
0fh。
symdebのアセンブラで
db 0fh
db 00h
とやって逆アセンブルすると
0F00 CTS 00
と出てくる。
-
- 138
- 2010/09/16(木) 00:41:43
-
>>137
そこには 386以降の命令が詰まっているような気が。
たしかにCTS ってなんのつもりだったんだろう?
-
- 139
- 2010/09/16(木) 07:22:51
-
>>137
symdebの時代なら8086を想定しているだろうから、0fは未定義だね。
8086って、未定義命令割り込みってあったっけ? あればAPIでも用意されているとか。
-
- 140
- 2010/09/16(木) 13:37:37
-
ない。
286以降でなかったかのう。
-
- 141
- 2010/09/16(木) 14:46:27
-
0fhって8086ではpop csだったような気がす。
86だと実際にpopが行われるから、予めpush csしておくようにと
CPU判定方法に書いてあった。
-
- 142
- 2010/09/16(木) 20:47:36
-
pop cs は、F0じゃないか?
286以降ではプリフィックスとして使われて
いわゆるF0バグを招いたやつ。
-
- 143
- 2010/09/16(木) 21:44:25
-
0F0Hは8086もlock prefix
-
- 144
- 2010/09/16(木) 22:56:48
-
push cs 0eh
push ds 1eh
push es 06h
push ss 16h
pop ds 1fh
pop es 07h
pop ss 17h
なので、pop csは0fhだったと思う。
-
- 145
- 2010/09/18(土) 17:58:34
-
8086:
AX:汎用加減乗除計算用
BX:準汎用加減乗除計算/アドレッシング補助
CX:準汎用加減乗除計算/カウンタ(条件分岐命令、ループ命令で使用)
DX:汎用加減乗除計算用
SI:メモリ転送元インデクサ
DI:メモリ転送先インデクサ
BP:スタックフレーム用
SP:スタックポインタ
それぞれけっこうギチギチに役割がふられており実は自由度は少ない。
但し多少の加算減算程度は16ビットレジスタには許可されてた
程度。よって完全にコンパイラ向け。経験知でオプティマイズできる
余地は余り無い。
しかし当時はアセンブリ職人と自称する人は会社に一人や二人は居て
腫れ物に触るように扱われてたっけW
-
- 146
- 2010/09/19(日) 13:30:22
-
>>145
>但し多少の加算減算程度は16ビットレジスタには許可されてた
>程度。
AL/AHとかの8ビットレジスタにも加減乗除演算が定義されてた(る)件
>よって完全にコンパイラ向け。
コンパイラ作成者泣かせなプロセッサと聞きました。(オプティマイズ
が難しい)
-
- 147
- 2010/09/19(日) 14:17:21
-
レジスタ割り当ては面倒だから、使い方が固定されているなら
むやみに凝るのをやめて機械的にやるのも手だと思う
-
- 148
- 2010/10/12(火) 23:11:58
-
保守
-
- 149
- 2010/10/13(水) 21:45:06
-
大阪地検のFD書き換え事件って、笑っちゃうよね。
件(くだん)の検事も上司も、パソコンのことをなんにも知らないんだからね。
ミスであんな書き換えが起こることなんて100%あり得ないのにね。
-
- 150
- 2010/10/13(水) 23:31:55
-
>>149
というか戻せばいいものを。
-
- 151
- 2010/10/14(木) 01:31:35
-
>>149
言い訳としてはアホだけど
嘘も吐き通せば無罪だからな
戦略的には勝利だろ
-
- 152
- 2010/10/16(土) 23:48:21
-
INT 21hの内容ってどこにあるんだ?
あとINT 21hでググると変なページが出るんだが
-
- 153
- 2010/10/17(日) 00:55:40
-
>>152
ググったら一番上に来たよ…?
ttp://home.impress.co.jp/catalog/impress/bk4615/c0302.htm
変なサイトの方が気になる。これ?
ttp://int21h.jp/
-
- 154
- 2010/10/17(日) 01:10:11
-
こっちのが詳しいかな。
http://www.ctyme.com/intr/int-21.htm
つっても、殆どは使われないものばかりか。
-
- 156
- 2010/10/17(日) 10:30:53
-
新しい概念: DOSのなかにある機械語
-
- 157
- 2010/10/17(日) 11:15:17
-
INT 21hってカーネルとかプログラムの中にあるんじゃないの
-
- 158
- 2010/10/17(日) 11:45:58
-
floppy disk の中にある
-
- 159
- 2010/10/17(日) 11:48:14
-
INT 21hがどのファイルのどこからどこまでがah=??のファンクションかを知りたい
-
- 160
- 2010/10/17(日) 11:50:05
-
>>156
155じゃないけど、割り込みベクターも知らないなら黙ってりゃいいのに。
馬鹿丸出しだな
-
- 161
- 2010/10/17(日) 12:11:39
-
debug使え
-
- 162
- 2010/10/17(日) 12:26:27
-
いい年こいて説明の下手な奴が怒ってるな
-
- 163
- 2010/10/17(日) 12:31:19
-
なんかトンデモ本作者と同じ論理だな。
相対性理論は俺に理解できないから間違ってる!、って奴だけどw
-
- 164
- 2010/10/17(日) 15:39:15
-
いや、機械語ってのはDOSの中にあるとかないとかってもんじゃないだろ。
それとも何か? お前等の中には日本語が入っているのか?
-
- 165
- 2010/10/17(日) 16:01:37
-
ベクタテーブル知ってるならそのアドレスからメモリダンプすれば
きっとDOSのなかにある機械語取れるよ
-
- 166
- 2010/10/17(日) 21:02:05
-
漏れの中の人はきっと日本語よりも細かいマイクロコードで動いてる希ガス
-
- 167
- 2010/10/18(月) 06:11:38
-
intはBIOS Interrupt Callsの略。実装は基本的にBIOSの中にある。
21HはDOSへ制御を移す、いわばスーパーバーザコールやAPIコールに相当する。
今はFreeBIOSなんてのもあるから、気になる人はソース見るとよろし。
そのコード量の多さに驚くと思う。
-
- 168
- 2010/10/18(月) 06:32:48
-
intに「BIOSの」なんて意味はねーよ。
intはただの割り込み。
ハードウェア割り込みの処理先として想定されていたものを
ソフト的に呼び出すことも可能にした、というだけ。
もちろん、Z80のRSTなんかもそうだが
それをソフト的に呼び出して特殊機能を実現する、というのは
かなり以前から行われていて
8086のintもその用途に使われることを前提に
割り込み番号の予約等を行っているのは確か。
-
- 169
- 2010/10/18(月) 07:04:02
-
でっていう
このページを共有する