XOR AX, AX
halt
PORK &HC000,255
INT 18H;
LD (HL),A
XLAT
7 :
名無しさん@お腹いっぱい。:01/12/16 13:19
NOP
NOP
HALT
8 :
名無しさん@お腹いっぱい。:01/12/16 14:48
CMP AL,5A
9 :
名無しさん@お腹いっぱい。:01/12/16 17:21
jmp 9
; つーか、PORKって豚だろ?
11 :
名無しさん@お腹いっぱい。:01/12/16 19:20
PUSH AX
PUSH DX
POP AX
POP DX
XOR AX, DX
XOR DX, AX
XOR AX, DX
解析していて見かけたコード。お前ら XCHG になにか恨みでもあるのか。
12 :
名無しさん@お腹いっぱい。:01/12/16 19:37
>11
XCHGはクロック食うとかだっけ?
あえていうならCP/Mバイナリを直接MS-DOSへ移植、とか。
15 :
◆xK91AxII :01/12/16 23:01
out 0f0H, al
jmp $
16 :
いっぱんほど:01/12/16 23:12
MOV ax
callAspi PROC uses di si,
psrb:DWORD
les bx, psrb
push es
push bx
call DWORD PTR ds:[entryAddress]
add sp, 4
_PEND:
les bx, psrb
mov al, BYTE PTR es:[bx+1]
or al, al
jz _PEND
ret
callAspi ENDP
INT 1BH
19 :
おなかすいた:01/12/17 06:24
XOR AX, AX
mov ax, 0a00H
int 18H
shl eax,16
mov dx, OFFSET _msg
mov ah, 9
int 21H
;中略
_msg db '8086でお願いします。', 13, 10, '$'
mov ax,5690
mov bx,400
mov cx,302
mov dx,1f4
int 1b
cmp ax,b0
jnz $ 'nopに書き換えちゃえ〜
;FDプロテクト外しdsk?, RADIX 16 って付けてほしいにょ。
mov ax, 4cffH
int 21H ;逝ってよし(ぉ
27 :
◆PC98AdY6 :01/12/18 10:25
mov bx,HANDLE
mov ah,45H
int 21H ;オマエモナー
>25の6行目axじゃなくてahだった(苦笑
日高徹/青山学 著
8086 マシン語秘伝の書(ISBN 4-7665-1079-8)
組み込み系のプログラマだけど、たまに読むと参考になります(w
mov ax,ip
sub ax,5
mov ip,ax
MOVF 0x20,W
MOVWF 0x21
BTFSS STATUS,Z
GOTO $+4
BSF STATUS,C
;>> 28
mov bx, ax
mov ah, 3eH
int 21H
;
>>30 bitTestは80386から。
32 :
名無しさん@お腹いっぱい。:01/12/19 01:20
つーかマクロアセンブラなんかい!
CD 1B をとにかくサーチ。以上!
push cs
pop ds
mov dx,offset msg
mov ah,09h
int 21h
xor ah,ah
int 21h
msg:
db '逝ってよし','$'
pusha
そういや昔はアセンブラ使ってたな(笑)
REP LODSBで転送するところをREP LODSDに変えると4倍速だ(笑)
端数の補正は必要だけどね(笑) しまった、MMX以前の話だ(爆笑)
jmp $+2; パイプラインクリア
>>36 うわ、結構懐かしいワ(笑)
jmp addr;タスクスイッチ
こんなのはどうだ?(笑)
;
>>37 ;80386以降のみですか。
;板のローカルルールからすれば、Win3.1も桶っぽいので、
;こういうのもアリってことでいきますか。
39 :
名無しさん@お腹いっぱい。:01/12/19 02:34
;---------------------------------------------------------------
;【PWM再生】
;in : ds:si = PWMデータエントリ
; cx = データ長
;out:nothing
;brk:
;---------------------------------------------------------------
PWM_Play PROC
push es
push ds
push cx
push ax
push ds
pop es
mov ax,DATA
mov ds,ax
mov [Wave_OFS],si
mov [Wave_SEG],es
mov [Wave_PTR],0
mov [Wave_Flag],0
cli
Timer_Unmask
jmp $+2
jmp $+2
mov al,6
out 37h,al
sti
@@PlayLp:
cmp cx,[Wave_PTR]
ja @@PlayLp
cli
jmp $+2
jmp $+2
mov al,7
out 37h,al
Timer_Mask
sti
pop ax
pop cx
pop ds
pop es
ret
PWM_Play ENDP
>>38 それはいいけど、オレは毎日出てこないから、あまり関係ないかも(笑)
>;80386以降のみですか。
駄目ですね。286を忘れちゃ駄目だよ(笑)
オレは286でプロテクトモードのイロハを独学したよ(笑)
41 :
名無しさん@お腹いっぱい。:01/12/19 02:37
リセットかけないとリアルモードに戻れないのな・・・286
プロテクトモードからDOSのルーチン使おう思うとそりゃもう大変。
>>39 掲示板にソース出してんじゃねーっ!、つーの!(笑)
でもさ、オレは大文字でソース書くけどな(微笑)
>>39みたいなアホは小文字で書いてるな(笑)
もしかすると
>>39の道具も・・・○△□・・・なのか?(大爆笑)
43 :
名無しさん@お腹いっぱい。:01/12/19 02:41
>>42 個人攻撃に走るのやめたほうがいいよ。
忠告しとく。
>>41 それがチミの頭の悪いところ(爆笑)
じゃあ、戻らなきゃいいんだよ、わかるか、アホ(爆笑)
自分でプロテクトモード用ルーチン作ればいいだけだよ。あんたアホ?(大爆笑)
>>43 あんたにも忠告しとく(笑)
オレを敵に回すな(爆笑)
その件は「DOS+@で」という条件つきの
仕事でやってたからしょうがなかったのさ。
ところで、独学された成果ってどこかで発表したり
製品になったりしてないんですか?
>>40 286を使ったことは一度もなかったりするんで(汁
>>44 各種disk読み出しroutine作るのは死ねる。
...が、リセットかけるよりはマシか。
;
>>46 ;286でプロテクトモード、しかも仕事ですか。
;プロていうのは厳しいんですね。
>>47 >286を使ったことは一度もなかったりするんで(汁
なるほど(笑) プロテクトモードの学習用程度には良いと思うよ。
>各種disk読み出しroutine作るのは死ねる。
オレは外部I/Oルーチンは作らなかった(笑) ローダに読ませてマ
スクさせてたぞ(笑) ゲームプログラムだったからな(微笑)
死ねると言うより、8877の動作原理がわからず仕舞だったな・・・。
「リセット」って言っても、リセットスイッチ押すワケじゃないよ(笑)
単にリセットベクタにジャンプするだけだからね。そこから、レジューム
する間にオーバーヘッドが発生する事はしょうがないけどな(笑)
どうやらこのスレの住人は寝た様だな。
オレも消えるとするか(笑)
52 :
名無しさん@お腹いっぱい。:01/12/19 10:20
8877って何?
53 :
名無しさん@お腹いっぱい。:01/12/19 10:58
M$DOS 2.11 がライセンスフリーだったからフル活用したよ。
というかFD,HDD両対応のプログラム書こうとするとそれ以外無いし。
つーか jmp $+2 はPentium以降で死ぬと思われ。
うわ、粘着がここにも...
55 :
名無しさん@お腹いっぱい。:01/12/19 23:14
>>52 8877って富士通のFDCだろ?
データバスの論理が逆になってる8866ってのもあったような気がする。
NECのuPD765と並んで良く使われたな。
プロテクトかけるには8877の方がいろいろ融通が利いて良かったので、
PC-9801用(uPD765使用)のFDを8877使って作ったり(笑)
>>55 思い出した。ありがとう。
データバスの論理が逆になってるのは、MB8876だったと思う。
MZのFDCがMB8876で、制御プログラム書いた覚えがあるからたぶん間違いない。
X1はMB8877なのになあ。
;そして、生き残ったのは...。
>>56 8877か、NECが765だったな。
88とかのインテリジェント方式は内心、羨ましかったが・・・(微笑)
;
>>59 ;あれ、使いこなせますか。<ぜっぱち内蔵
;よく知らないんですが、スゴイですね。
;#新規って?
>>59 別にCPUとメモリが載ってた上にPC-8801mk2になって内蔵されてからは
アホやん!どこがインテリジェントやねん!と思ってました。
とかいいつつあの16KBのメモリのおかげでいろいろできたんですがね・・・。
ところで、その10年前のパソコン通信みたいなノリはわざとですか?
いかん。スレと違う話題になってきてる。
すんません
>>1
>>61 ええと、わざとです(微笑)
>>60 おっと、メ-アド変えてなかったな、失礼(笑)
------------------------------------------------------------
出始めがVICだったので、普通のパソコンユーザーとは多分にうまく
いかないだろうが、知らない視点からも話す事を期待してくれ(笑)
64 :
ナイコンさん:01/12/21 02:35
AAMとかAADといったBCD関係の命令がありますが、
実際こういうのって、実務で使う事ってありましたか?
>>64 AAx命令は1桁の掛け算・割り算に使うものだよ。
実行結果を良く見てみると良い。
Z80に比べて最適化のテクニックが生み出しにくい86系CPUの
別の側面だろうな(微笑)
add byte ptr cs:[$+5],1
>>66 で、何がしたいの?オレにはわからない(微笑)
INC byte ptr CS:[$+5]
ってできたっけ?(微笑)
アドレッシングモード忘れたぞ(爆笑)
68 :
ナイコンさん:01/12/21 03:01
>AAx命令は1桁の掛け算・割り算に使うものだよ。
うん、それは知ってるんだけど、実際に実務に使ってる人って
いるんだろうかという疑問があったわけ。
Z80が長くて、DAA命令を使う事もあったんだけど、
ADD A,90H
DAA
ADC A,40H
DAA
という裏技的な16進ASCII変換にしか使ったことなくて
昔から、BCD演算が必要な場面って実際あるの?と思って
たわけです。
>>68 >うん、それは知ってるんだけど、実際に実務に使ってる人って
>いるんだろうかという疑問があったわけ。
答えは極めて簡単。OA用途でアセンブラを使う場面はありえないか
ら[×]だろ?
;青木豊氏みたいなノリだ...
;データセグメント部分終了(笑)
72 :
ナイコンさん:01/12/21 07:08
>>68 ?それで上手く変換されてるの?
AND 0FH
DAA
ADD 0F0H
ADC 040H
とかじゃなくて?
(下位4bitを'0'-'9','A'-'F'の16進ASCII文字に変換。このコード初めて見ると驚くね)
まだ俺が寝ぼけてて理解できんだけかもしれんが(と、逃げ道も作っておく)
AND A,0FH
DAA
ADD A,0F0H
ADC A,040H
こうだよな。マジ寝ぼけてるらしい・・・・
74 :
ナイコンさん:01/12/21 19:58
;
; AND 0FH
; ADD A,90H
; DAA
; ADC A,40H
; DAA
;
;でAレジスタの下位4ビットをASCIIの '0'〜'9', 'A'〜'F'に変換できるYO!
;(Z80でスマソ)
75 :
ナイコンさん:01/12/22 06:56
ちなみにMSX-BASICは内部でBCD演算してたよ。
わかった。
なるほど、わざわざ2回に分けて60h足すわけか。
>>72 の方がシンプルで短いじゃん、と思ったらANDはHビットをセットするから
DAAの前にOR Aとか入れる必要あるんだね。
>>72-73 書いた時は気づきもしなかった。
しかしひどいな、
>>73 でもまだ間違ってる。
77 :
ナイコンさん:01/12/23 02:26
自己書き換えのせいでPentiumで動かないプログラム萌え。
78 :
名無しさん@お腹いっぱい。:01/12/23 17:49
Z80から86へやってきてJPではまったやつは俺だけではあるまい
79 :
ナイコンさん:01/12/24 12:20
x86にRETZがないのが驚いた。でも今はx86使い…。
80 :
ナイコンさん:01/12/24 14:33
>>79 確かに。 8086に条件付リターン命令がないと知って、最初萎えたよ。
VZの構造化マクロを自分のプログラムでこっそり使ってました。
82 :
ナイコンさん:01/12/25 15:53
680x0系にはプロテクトモードがない。
そもそもバンク切り替えという概念がない。
83 :
ナイコンさん:01/12/25 16:03
84 :
ナイコンさん:01/12/25 16:05
>>83 君はモトローラー系CPU(68000以降)の事が理解出来てないようだな。
スーパーバイザモードとユーザーモード。
>>82 バンク切り替えとCPUのアーキテクチャは直接の関係はないのだが。
# アーキテクチャ上、バンク切り替えを使わないとどうにもならない
# CPUが存在したことも事実ではあるが。
87 :
名無しさん@お腹いっぱい。:01/12/26 06:08
MMUのことをMemory Mapping Unitと呼んでいたこともあったな(笑
88 :
ナイコンさん:01/12/26 08:22
君はセグメントの概念が理解できずにモトローラに逃げた口だね。
>>84 確かに美しい実装とは言い難いが現状も変わらない。
もし68000で16MBを超えるメモリ空間を制御する必要が生じたら?
68030に乗り換える
>>89 68000にはちゃんとしたMMUなかったっけ
93 :
ナイコンさん:02/01/09 17:10
セグメントは別に悪いことではない。
8086の問題は1セグメントが64Kバイトしかなかったという点だ。
PowerPCにもセグメントあるしな。確か256MB。
8086は互換性重視の設計だからしかたないかも。
CPUにしろ本体にしろ、設計がクソでも互換性を重視したものが
生き残ってきてるしね。
互換性をある程度無視してもなんとかできるのは、巨大すぎる会社ぐらいか。
95 :
ナイコンさん:02/01/11 21:11
>>94 PowerPCのメモリ範囲は4GBですが何か?
そして分割して使う事がないからセグメントとは言わないよーだマヌケ。
これだからx86厨房は。悔しいからってガセネタ流すなよ。
所詮はCISC。
96 :
ナイコンさん:02/01/12 22:40
こういうスレがあると嬉しくなります
いろいろと勉強になります
うれしage!
>>95 うわっ、PowerPCでメシ食ってる俺が86厨房とか言われてるよー。
ひょっとして煽られてるのかもしれないけどマジレス。
PowerPCの資料見ればわかるんだけど、SR0〜15っちゅーレジスタが
あったりします。さて、この「SR」とは何の略でしょう?
モトローラのWebサイトから英語版はダウンロードできると思うんで
読んでみてください
>>95 英文が読めなければ、ソフトバンクの「Inside PowerPC」のP71〜72他を
読むといいかな。この本はPowerPC初心者向けにとてもいいと思う。
(他にないってのもあるけど)
セグメントといえば有名な64KBの壁を想像される方が多いのですが、
PowerPCの「セグメント」は80x86みたいな難儀なもんではありません。
私が
>>94での書き方もまずかったと思うけど、
「セグメントという言葉=80x86の64KB=邪悪」っていう誤解は
とっとと捨てていただきたいと思う。
Status Register?
Segment Register?
Static Register
>>97 申し訳ありません。ご存知の通り、知ったかぶりの多い2chですから、
貴方が自分の言っている事を理解しているのか測るために本当っぽい
嘘で煽ってみました。マジゴメン。
PPCが発表された時、4GBのメモリ空間って話題になったから嘘のネタには
もってこいだったのですよ。
ちなみに補足するとSRの略は
>>99が正解。CPUと言うよりかは内臓MMUの
レジスタで、仮想RAM管理用のレジスタです。普通の人は触りません。
セグメント誤解の件もかなり同意。つーか86厨房が全部悪い。
103 :
昔86er:02/01/13 08:16
db '7777・・・'
↓ 逆アセすると
AAA
AAA
AAA
AAA
・
・
・
覚えやすく見つけやすいので、パッチエリアを埋めておく
のに愛用していた。
JMP FAR FFFF:0000
105 :
◆xK91AxII :02/01/19 20:49
OFSDLT EQU 7c00H
_OFS DW 0
_SEG DW 1000H
;中略
jmp DWORD PTR [_OFS + OFSDLT]
;この前書いたプログラムから抜粋
106 :
ナイコンさん:02/01/19 20:52
107 :
ナイコンさん:02/01/19 21:51
>>97>PowerPCの「セグメント」は80x86みたいな難儀なもんではありません。
80386以降と80286と8086を一緒にする辺りがドキュソの証
>>107おお、すみません。
80x86のリアルモード、と書くべきでしたね。
プロテクトモードでは「セグメントレジスタ」じゃなくて
「セグメントセレクタ」になりますね。
で、そのセグメントセレクタの数以上のセグメントをアクセスしようとすると
結局セレクタを切り替えないといかんという・・・。
まあ64KBまでとかいうアホな制限ないから、そんなに問題にはなりませんが。
メモリまわりのの制約については、286の場合は16MBまで&FS/GSがないくらいだったよーな。
さすがに忘れてきてるなあ。どうでしたっけ?
>>107今はPPCでメシ食ってますが、その前は特定用途向けのDOS Extenderとか
作ってました。動くまではちょっと大変だったけど、慣れるとリアルモード
より楽だったなー。もうOSに近い領域の仕事することはないだろうな。
>>108セレクタを切り替えてこそ、プロテクト...。
>>109色々ありまして、dsとesを開けときたかったんですよ。
286でも動くようにしないと売れないから386以降のみは不可
とかも言われたり・・・。
TurboAssemblerで
SHORTジャンプとNEARジャンプを
自動判別する機能に萎。
SHORTでもダミーのNOPを入れるだけで
結局3バイト掛かる。
>>111 1パスじゃなければちゃんとnopなしになると思われ。
がぶ飲みしたいときー。
00 00 の逆アセンブルが
ADD [BX+SI],AL
だったとき。
Windows2000のDEBUGコマンド、
未だに8086仕様とは…
XOR AX,AX
MOV DI,AX
PUSH AX
POP ES
MOV CX,512
REP STOSW
movem d0-d6,(-a7)
117 :
ナイコンさん:02/02/14 19:40
MOV EAX,DWORD PTR [MSG_NO]
INC EAX
MOV DWORD PTR [MSG_NO],EAX
xor eax,ebx
xor ebx,eax
xor eax,ebx
119 :
ナイコンさん:02/03/18 22:59
xor ax,ax ; 腹減った
8086で32bitかい?
121 :
ナイコンさん:02/04/16 02:11
PRINT MACRO MSG
MOV AH,9
MOV DX,OFFSET MSG
INT 21H
ENDM
popall macro
push bp
mov bp,sp
pushf
push ax
push bx
push cx
push dx
push di
push si
push ds
push es
endm
大歩危でした。pushall(改)が正解
even
_print label far
pusha
125 :
ナイコンさん:02/09/18 11:20
126 :
ナイコンさん:02/09/18 12:29
retx
127 :
ナイコンさん:02/09/26 22:59
jmp short $+2 ; 人生無理せず逝こうよ。
おまえ等凄いな。
何話してるのかさっぱりわからん。
129 :
ナイコンさん:02/10/04 10:51
xlat
130 :
ナイコンさん:02/11/10 05:05
なんだかレベルが高いんだか低いんだか微妙な会話群だけど面白しょいのでage。
F/W屋さん多いのかな?
会話に加わろうかと思うが返り討ちにあいそうなんでここは我慢だ。
131 :
ナイコンさん :02/11/16 09:08
cli
rep movsb
132 :
ナイコンさん:02/11/16 09:13
bswap eax
エンディアン変換をするための命令。
でも486以降・・・。
133 :
ナイコンさん:02/11/16 11:47
cmpxchg8b
lahf
sahf
久々にニモニック表を見るまで、その存在を忘れていた...
135 :
ナイコンさん:02/11/17 23:50
>>131 rep movsbといえば
昔、simっていうPC−9801上でIBM−PCのアプリケーションを動かすエミュレータがあって、
アプリケーションプログラム上のVRAMへの転送のためのrep movsbをint 90h(だったけ?)なんかに置き換えるパッチを
置き換えることをやったなあ・・・。
ちょっと、懐かしかったので書き込んでみました
(逆アセンブルなんて最近しとらん)。
136 :
ナイコンさん:02/11/17 23:52
>>135 >置き換えるパッチを置き換えることをやったなあ・・・。
置き換えるパッチを作ったの間違い(スマソ)
137 :
ナイコンさん:02/11/17 23:59
>>25 こんなような事故書換処理もあったねー。
(最近86アセンブリ言語使っていないので、まちがっていたらスマソ)
mov al,0c0h
add al,00dh
mov cs:label1,al
mov al,010h
add al,00bh
mov cs:label2,al
mov ax,5690
mov bx,400
mov cx,302
mov dx,1f4
label1:
nop
label2:
nop
int 1b
cmp ax,b0
jnz $
139 :
ナイコンさん:02/11/19 22:58
>>137 label2:
nop
のあとのint 1bhは、いらんと思うぞ。
cdh,01bhでバイナリサーチされて、真っ先にnopに変えられると思う。
140 :
ナイコンさん:02/11/19 23:04
>>138 ざべに「パッチ真理教」という記事があって、毎月パッチ情報が載っていたね。
(あのころは、xxx真理教があんな教団だったとは、しらんかった)。
141 :
ナイコンさん:02/11/19 23:46
nop
>>141 実は xchg ax,ax という罠。
なので、NOP のくせに最小クロック命令ではないのは
なぜなんだと、インテルを小一時間(略
144 :
ナイコンさん:02/12/03 04:30
ENVIRONMENT DIVISION
nop ;保守
; STOPボタンを無敵にする for PC-9800
xor ax,ax
mov es,ax
mov ax,es:[0*4+0000h]
mov dx,es:[0*4+0002h]
mov es:[6*4+0000h],ax
mov es:[6*4+0002h],dx
mov ax,4C00h
int 21h
このスレは無事に HLT しました。
(^^)
; ページングなしの環境、137GB超のHDの1台のみをPrimary masterに接続
; BIOSでUDMA2に指定、BIOS有効
; 32GB超のHDにてハングするのは、8GBしか利用できない古いBIOSを使うなどして回避
; I/O アドレスの配置は、Bus Dev Func Class Base address
; [0]:[xx] SCSI H/A 6000h 6008h 6010h 600Ch C000h ROM(xxxxh) これに限る。
org 100h ; for MS-DOS .COM file
start:
0100 BA 00 60 83 C2 06 B0 E0-EE BB F0 01 C1 EB 04 8C
0110 D8 03 C3 8B D8 C1 E3 04-89 1E E0 01 C1 E8 04 88
0120 26 E2 01 BB E0 01 C1 EB-04 8C D8 03 C3 8B D8 C1
0130 E3 04 89 1E E8 01 C1 E8-04 88 26 EA 01 BA 00 C0
0140 83 C2 04 A1 E8 01 EF 83-C2 02 A1 EA 01 EF BA 00
0150 C0 B0 08 EE BA 08 60 83-C2 02 EC A8 80 0F 85 F9
0160 FF BA 00 C0 EC 24 FE EE-BA 00 C0 83 C2 02 B0 04
0170 EE BA 00 60 42 B0 00 EE-42 B0 00 EE 42 B0 0F EE
0180 42 B0 00 EE 42 B0 00 EE-42 83 EA 04 B0 02 EE 42
0190 B0 FF EE 42 B0 FF EE 42-B0 FF EE 42 B0 E0 EE 42
01A0 B0 25 EE 42 BA 00 C0 EC-0C 01 EE BA 08 60 83 C2
01B0 02 EC A8 80 0F 85 10 00-EC A8 01 0F 84 09 00 B0
01C0 65 CD 29 B8 01 4C CD 21-BA 00 C0 EC 24 FE EE B8
01D0 00 4C CD 21
prddata label byte
01E0 00 00 00 00 00 04 00 80-00 00 00 00 00 00 00 00
readbuffer label byte
01F0 FF FF FF FF FF FF FF FF-FF FF FF FF FF FF FF FF
; このあたりは、全部 ff です。
05E0 FF FF FF FF FF FF FF FF-FF FF FF FF FF FF FF FF
end start
UIDE-98 でも、Bigdrives のHD を扱えるじゃないか! ドライバ作れ(怒)!
怒りの会話でした。
いじょ。
役に立ちそうなのでage!
;上のは、U-DMA READ ext のサンプルなので、今回は、U-DMA WRITE ext のサンプルなどを。実行条件は、上と同じ。
code SEGMENT BYTE PUBLIC
org 100h ; for MS-DOS .COM file
start:
; device select
mov dx,06000h
add dx,6
mov al,0e0h ; master
out dx,al ; device register
; making PRD
lea bx,[buffer]
shr bx,4
mov ax,ds
add ax,bx ; pysical linear address
mov bx,ax
shl bx,4
mov word ptr [prddata],bx
shr ax,4
mov byte ptr [prddata+2],ah
; calculate pysical linear address at PRD
mov bx,offset prddata
shr bx,4
mov ax,ds
add ax,bx ; pysical linear address
mov bx,ax
shl bx,4
mov word ptr [linearprd],bx
shr ax,4
mov byte ptr [linearprd+2],ah
; set PRD on UIDEcard
mov dx,0c000h
add dx,4
mov ax,word ptr [linearprd]
out dx,ax
add dx,2
mov ax,word ptr [linearprd + 2]
out dx,ax
; set read/write control
mov dx,0c000h
mov al,0
out dx,al ; read write control
; check alternate status register
mov dx,6008h
add dx,2
@@: in al,dx
test al,080h
jnz @b
; clear busmaster start bit
mov dx,0c000h
in al,dx
and al,0feh
out dx,al
; clear Interrupt flag
mov dx,0c000h
add dx,2
mov al,4
out dx,al ; This bits is cleared
; when '1' is written to it by software.
; set command block registers
mov dx,06000h
inc dx
mov al,00h
out dx,al ; features register(dummy data)
inc dx
mov al,00h
out dx,al ; sector count previous register
inc dx
mov al,0fh
out dx,al ; LBA low previous register
inc dx
mov al,00h
out dx,al ; LBA mid previous register
inc dx
mov al,00h
out dx,al ; LBA high previous register
inc dx
sub dx,4
mov al,02h
out dx,al ; sector count current register
inc dx
mov al,0ffh
out dx,al ; LBA low current register
inc dx
mov al,0ffh
out dx,al ; LBA mid current register
inc dx
mov al,0ffh
out dx,al ; LBA high current register
inc dx
mov al,0e0h
out dx,al ; device head register
inc dx
mov al,035h ; 25h:Read, 35h:Write DMA ext
out dx,al ; command register
inc dx
; set busmaster start bit
mov dx,0c000h
in al,dx
or al,1
out dx,al
; check alternate status register
mov dx,06008h
add dx,2
@@: in al,dx
test al,80h
jnz @f ; 手抜き
in al,dx
test al,01h
jz @f
mov al,'e' ; エラー
int 29h
mov ax,4c01h
int 21h
@@:
; clear busmaster bit
mov dx,0c000h
in al,dx
and al,0feh
out dx,al
; normal end
mov ax,4c00h
int 21h
code ENDS
data SEGMENT PARA PUBLIC
prddata dd 00000000h ; PYSICAL ADDRESS
dw 0400h ; transfar_bytes ; (200h以上32k未満)
dw 8000h ; EndOfTransfar
linearprd dd 00000000h
data ENDS
work SEGMENT PARA PUBLIC
buffer db 400h dup (011h) ; 書きこむデータ
work ENDS
end start
; コレを実行後、上のU-DMA READ ext をexdeb で実行すると、readbufferの内容が、U-DMA WRITE extで
;書きこんだとおりになるので、Bigdrives 読み書き可である。で、結論は、ドライバ作れよ(怒)となるわけだ。
(誤) jnz @f ; 手抜き
--------------------------------
(正) jnz @b ; 手抜き
158 :
ナイコンさん:03/01/20 23:18
役に立ちそうなのでreage!
159 :
ナイコンさん:03/01/21 01:32
C9
CC
161 :
ナイコンさん:03/01/22 00:27
jmp short 160
FFFFF
FF11
6800 Z80をかじった後で、8086アセンブラを使って
掛け算命令があることに、すごいビックリしたな。
むちろん、データ長も16ビットなので、ほとんど
BASICみたいな手軽さで書けるじゃんと思いました。
それももう15年以上前の話だよな。
86系アセンブラ懐かしーっす。
6809はイケるんだけどなぁ。8086の本最近買ったけど、
マシン語眺めてるとバスが倍なんでくらくらした。32ビットはもう、
理解不能。リアルタイムで8086使ってゲームでも作ってみたかったな。
素朴過ぎる疑問だけど単純な計算だったら8ビットの方が無駄がないよね。
1+1を一万回再計算するなら、8ビットの3G(ギガ)と32ビットの3Gでも差はないんじゃないの?
166 :
ナイコンさん:03/01/25 08:22
>>165 1万回だと8bitはオーバーフロー処理が必要。
やはり32bitレジスタは便利だよ。
200回程度インクリメントするなら、メモリ節約
にはなるね。
スーパースカラになった時点で決定的な差が
>>166 俺は
>>165の文章を
mov cx, 10000
lbl1:
mov al, 1
add al, 1
loop lbl1
と解釈したが。
これならオーバーフロー処理はいらねぇ。
役に立ちそうなのでage!
68030のマニュアル読んだとき165と似たようなこと感じたな。
「凄いな、こんなに沢山レジスタ(とポインタ)使えるよ。
86系は今は普及してるけど後からこの仕様がボディブロー
のように効いてきて最後には負けるんじゃない?」
とか思ったのは遠い遠い昔のはなしだったり。
86スレなのでsage
>>170 はじめてIA-32のアドレッシングモードを知った時、
68kのパクリか!と思ったよ。
でもすぐにEIPやESP相対アドレッシングが無いことに
気が付いて、がっかりした記憶が。
あと、汎用レジスタが増えずに、FS,GSのみ追加された
ことにも首をかしげた。当時、プロテクトモードのことは
余り(というかほとんど)知らなかったからなぁ。
あー、すまん。
ESP相対は有るな。勘違いしとったよ。
EIP相対は無いが。
「初めての486」を読んで
「ごちゃごちゃしていて汚い設計だな」
と思ったが
「どうせ面倒な部分はシステムが管理するからいいや」
と思考停止したあの日
174 :
ナイコンさん:03/01/26 15:05
POP SP
RET
176 :
ナイコンさん:03/01/27 03:09
HALT
INTRをアクティブにしました
STI
CLI
loadall386 ; ぼくのこと忘れてください.....。
M EQU MOV
I EQU INC
D EQU DEC
A EQU ADD
S EQU SUB
ML EQU MUL
DV EQU DIV
C EQU CMP
CA EQU CALL
U EQU PUSH
O EQU POP
UA EQU PUSHA
OA EQU POPA
100行超えたあたりでいちいち打ち込むの面倒くさくなったんだよね。
頻繁に使う命令は自己流に短縮したり
mov al, 0FFh
xchg al, byte ptr[semaphore] ; 昔は、使っていた。
185 :
ナイコンさん:03/02/06 21:52
>>183 構造化マクロとか68風ニーモニックマクロとか、あったね。
だだ、仕事で使うのは、止めてけれと思うことしばし。
186 :
ナイコンさん:03/02/20 06:11
最近アセンブラいじってる?
>>186 つーか、win32apiとかアセンブラから読んでたら氏んじまう
PUSH パラメータ
PUSH パラメータ
PUSH パラメータ
CALL win32API
なだけだが、
(^^)
∧_∧
( ^^ )< ぬるぽ(^^)
━―━―━―━―━―━―━―━―━[JR山崎駅(^^)]━―━―━―━―━―━―━―━―━―
mov cx,0ffffh
@@:
nop
loop @b
; 暇つぶし
かい〜わ
かい〜の
194 :
ナイコンさん:03/06/08 08:35
保守
;hoshu @age
mov sure,ue
196 :
ナイコンさん:03/07/01 14:46
cli
197 :
ナイコンさん:03/07/01 18:38
add
199 :
ナナシサソ:03/07/04 08:48
xor eax, eax
div eax, eax
書き方がこれで合ってるかみなさんに聞きたいだけれす
200 :
ナイコンさん:03/07/04 09:02
202 :
ナイコンさん:03/07/08 14:58
どう?こんなの、偽だけども
xand eax,eax
>>201 なぜ時差悔いたにコピペなんだろ?。98ネタだと思うが。
__∧_∧_
|( ^^ )| <寝るぽ(^^)
|\⌒⌒⌒\
\ |⌒⌒⌒~| 山崎渉
~ ̄ ̄ ̄ ̄
ハッキリ言ってアメリカなどの多民族国家では黒人の方がアジア人よりもずっと立場は上だよ。
貧弱で弱弱しく、アグレッシブさに欠け、醜いアジア人は黒人のストレス解消のいい的。
黒人は有名スポーツ選手、ミュージシャンを多数輩出してるし、アジア人はかなり彼らに見下されている。
(黒人は白人には頭があがらないため日系料理天などの日本人店員相手に威張り散らしてストレス解消する。
また、日本女はすぐヤラせてくれる肉便器としてとおっている。
「○ドルでどうだ?(俺を買え)」と逆売春を持ちかける黒人男性も多い。)
彼らの見ていないところでこそこそ陰口しか叩けない日本人は滑稽。
∧_∧ ∧_∧
ピュ.ー ( ・3・) ( ^^ ) <これからも僕たちを応援して下さいね(^^)。
=〔~∪ ̄ ̄ ̄∪ ̄ ̄〕
= ◎――――――◎ 山崎渉&ぼるじょあ
207 :
ナイコンさん:03/08/02 19:51
☆ ☆ ☆
http://www.gals-cafe.com ☆ ☆ ☆
りさちゃんですっ☆みんな元気ぃ?夏だねっ!
あたしね、今アメリカにいるんだけど、、、えへっ(*>▽<*)
アナタに逢いたくて、こんなバイト始めちゃったヨ♪
りさに逢いに来てくれたら、7日間も会費無料サービスしちゃうし、
さらにさらに10分間も無料なんだよ! Σ(@o@)!!
アナタにだけの特別大っサービス♪絶対来てね!
二人っきりでたっくさん楽しいことしようよ♪まってるよ(^.^)/
☆ ☆ ☆
http://www.gals-cafe.com ☆ ☆ ☆
(⌒V⌒)
│ ^ ^ │<これからも僕を応援して下さいね(^^)。
⊂| |つ
(_)(_) 山崎パン
halt
211 :
ナイコンさん:03/10/28 18:00
ERR: jmp ERR:
nop
nop
nop
nop
XOR AX,AX
あるいは
MOV AX,0000H
としたかったのに、こんがらがって
XOR AX,0000H
としてしまって半日潰しますた…。しかも同じミス2回目…。
0x90
move.l d0,d1
add.l d0,d0
_exit
215 :
ナイコンさん:05/01/24 02:51:38
むずかしそうよ。
ENTER/LEAVE って、80186からだっけ?
217 :
ナイコンさん:05/01/31 14:45:25
reti
218 :
7進さん:05/02/03 14:40:09
retf
219 :
ナイコンさん:05/02/05 01:49:01
halt
cli トリス
222 :
ナイコンさん:05/02/12 22:29:33
ノンマスカブルインタラプト!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
sti
しとかないとマズー
バイト同士でHするのか
Byte Sex
Byte Swap BSWAPだろ
アセンブラの知識はもう不要なんだろうかな
227 :
マイコン少年:2005/10/16(日) 09:41:07
CPUIDくれ
228 :
ナイコンさん:2005/11/12(土) 17:30:58
MOV AX,CS
MOV DS,AX
MOV DX,OFFSET MY_FUNC
MOV AX,2521H
INT 21H
MOV AX,3500H
MOV DX,OFFSET MY_FUNC_END
MOV CL,4
SHR DX,CL
INT 21H
MY_FUNC:
JMP FAR FFFF:0000
MY_FUNC_END
229 :
ナイコンさん:2006/02/22(水) 03:49:26
mov al,98h
out 35h,al
xor al,al
out 0f0h,al
230 :
ナイコンさん:2006/04/19(水) 10:07:15
NOP
jmp 0000h
232 :
ナイコンさん:2006/04/21(金) 17:40:49
call $
233 :
ナイコンさん:2006/05/30(火) 00:17:14
jmp 0f000h:0fff0h
234 :
ナイコンさん:2006/06/03(土) 02:11:47
EA FF 00 FF FF
データa,bをキーボードから入力するとa×bの計算結果が表示素子に表示するには
どうしたらいいでしょうか?
237 :
ナイコンさん:2007/01/15(月) 22:55:29
あ
238 :
ナイコンさん:2007/01/18(木) 21:47:19
せ
{
POKE 食べたい
mov al,11h
ps:int 10h
mov ax,1300h
mov bp,0
mov cl,0ch
jmp short ps
240 :
ナイコンさん:2007/12/19(水) 04:40:45
難しそうですね。
mov al ,0
mov di , 0100h
mov cx , 0100h
a:mov [di] , al
inc al
inc di
loop a
pop cs
rep movsw
LA 10,TBLA
AA CLI 10(0),C'*'
BE *+6
LA 10,6(10)
B AA
MVC WKA(4),0(4,10)
245 :
ナイコンさん:2008/02/04(月) 16:58:47
246 :
ナイコンさん:2008/02/06(水) 19:19:05
di
halt
mov ax,301h
mov cx,1
mov dx,80h
int 13h
248 :
ナイコンさん:2008/02/06(水) 20:14:15
DI
HALT
kaposhi
unk cnk mnk
NOP
NOP
NOP
NOP
NOP
NOP
252 :
ナイコンさん:2010/01/13(水) 23:10:22
jmp ffff:0000
253 :
ナイコンさん:2010/01/16(土) 17:08:05
CPL ;おまいら全否定
LOOP1:
JMP LOOP1
255 :
ナイコンさん:2010/01/16(土) 19:20:09
std
jmp cs:[bx] ; もうどうなってもいい
257 :
ナイコンさん:2010/01/16(土) 20:56:24
jmp ffff:0000 ; 生まれ変りたいの
258 :
ナイコンさん:2010/01/16(土) 20:57:31
mov al,06
out 37,al ; 臭かったらごめんww
C9
CALL FAR[BX]
;そういやHALTの命令コード(16進)なんでしたっけ
261 :
ナイコンさん:2010/09/18(土) 02:35:56
std
263 :
ナイコンさん:2010/10/18(月) 01:28:30
>>252 ハードのリセットと違いハードウェアが完全に初期化されなかったなあ
細かい事は忘れた
だってリセットじゃないもの
EXX ;あなた人が変わったみたいよ
266 :
ナイコンさん:2010/11/06(土) 12:41:46
sex 0,[ffff]
267 :
ナイコンさん:2010/12/19(日) 10:26:49
mov manko, [chinko]
byte ptr chinkoか?
269 :
ナイコンさん:2011/03/10(木) 07:16:39.97
****************************************************************
****************************************************************
****************************************************************
****************************************************************
****************************************************************
****************************************************************
****************************************************************
****************************************************************
****************************************************************
****************************************************************
http://sky.geocities.jp/ttl_ttl_ttl_pic/ NASMでC言語を作る NASMで高度な設計書類とNASMの簡単な利用方法のサイトです
C言語のHEADの作り方 DLLファイルの作り方が書いてあります
****************************************************************
****************************************************************
****************************************************************
****************************************************************
****************************************************************
****************************************************************
****************************************************************
****************************************************************
****************************************************************
****************************************************************
270 :
ナイコンさん:2011/03/10(木) 08:48:07.62
これは酷いw
電子回路の基本が理解できていないし当然CPUの原理も理解してない。
なにより日本語になっていない。
271 :
ナイコンさん:2011/03/18(金) 10:45:08.23
機械翻訳?
272 :
ナイコンさん:2011/03/29(火) 12:24:14.31
〜〜〜〜〜mov ah,4ch int 21h 〜〜〜〜〜〜
xor ax,ax
div cx,ax
274 :
ナイコンさん:2012/04/15(日) 22:37:17.70
cli
mov cs:[xx+00],sp
mov cs:[xx+00],ss
LOADALL
jmp $+2
∧_∧
( ・∀・) | | ガッ
と ) | |
Y /ノ 人
/ ) < >__Λ∩
_/し' //. V`Д´)/ ←
>>190 (_フ彡 /