8086アセンブラで会話しよう。

このエントリーをはてなブックマークに追加
1MASM
XOR AX, AX
halt
3さあね:01/12/16 03:55
PORK &HC000,255
4んー。:01/12/16 07:40
INT 18H;
5 :01/12/16 10:42
LD (HL),A
6porori:01/12/16 12:56
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はクロック食うとかだっけ?
13出張あさはかマン:01/12/16 19:52
>>11
8080互換コードなんじゃ?
14出張あさはかマン:01/12/16 19:54
あえていうならCP/Mバイナリを直接MS-DOSへ移植、とか。
15 ◆xK91AxII :01/12/16 23:01
out 0f0H, al
jmp $
16いっぱんほど:01/12/16 23:12
MOV ax
17 ◆xK91AxII :01/12/17 02:19
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
21AirH動かない...:01/12/17 11:20
>>3
poke
>>21
つうかBASIC :-)
shl eax,16
24 ◆xK91AxII :01/12/17 16:12
mov dx, OFFSET _msg
mov ah, 9
int 21H
;中略
_msg db '8086でお願いします。', 13, 10, '$'
25 ◆PC98AdY6 :01/12/17 17:44
mov ax,5690
mov bx,400
mov cx,302
mov dx,1f4
int 1b
cmp ax,b0
jnz $ 'nopに書き換えちゃえ〜
26 ◆xK91AxII :01/12/17 21:50
;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だった(苦笑
28 ◆PC98AdY6 :01/12/18 11:30
日高徹/青山学 著
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
31 ◆xK91AxII :01/12/19 00:32
;>> 28
mov bx, ax
mov ah, 3eH
int 21H

;>>30 bitTestは80386から。
32名無しさん@お腹いっぱい。:01/12/19 01:20
つーかマクロアセンブラなんかい!
CD 1B をとにかくサーチ。以上!
33 :01/12/19 01:46
push cs
pop ds
mov dx,offset msg
mov ah,09h
int 21h
xor ah,ah
int 21h
msg:
db '逝ってよし','$'
pusha
35反68:01/12/19 02:19
そういや昔はアセンブラ使ってたな(笑)

REP LODSBで転送するところをREP LODSDに変えると4倍速だ(笑)
端数の補正は必要だけどね(笑) しまった、MMX以前の話だ(爆笑)
36 ◆xK91AxII :01/12/19 02:23
jmp $+2; パイプラインクリア
37反68:01/12/19 02:26
>>36
うわ、結構懐かしいワ(笑)

jmp addr;タスクスイッチ

こんなのはどうだ?(笑)
38 ◆xK91AxII :01/12/19 02:32
;>>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
40反68:01/12/19 02:35
>>38
それはいいけど、オレは毎日出てこないから、あまり関係ないかも(笑)

>;80386以降のみですか。
駄目ですね。286を忘れちゃ駄目だよ(笑)
オレは286でプロテクトモードのイロハを独学したよ(笑)
41名無しさん@お腹いっぱい。:01/12/19 02:37
リセットかけないとリアルモードに戻れないのな・・・286
プロテクトモードからDOSのルーチン使おう思うとそりゃもう大変。
42反68:01/12/19 02:39
>>39
掲示板にソース出してんじゃねーっ!、つーの!(笑)

でもさ、オレは大文字でソース書くけどな(微笑)
>>39みたいなアホは小文字で書いてるな(笑)
もしかすると>>39の道具も・・・○△□・・・なのか?(大爆笑)
43名無しさん@お腹いっぱい。:01/12/19 02:41
>>42
個人攻撃に走るのやめたほうがいいよ。
忠告しとく。
44反68:01/12/19 02:41
>>41
それがチミの頭の悪いところ(爆笑)
じゃあ、戻らなきゃいいんだよ、わかるか、アホ(爆笑)

自分でプロテクトモード用ルーチン作ればいいだけだよ。あんたアホ?(大爆笑)
45反68:01/12/19 02:43
>>43
あんたにも忠告しとく(笑)
オレを敵に回すな(爆笑)
4641:01/12/19 02:47
その件は「DOS+@で」という条件つきの
仕事でやってたからしょうがなかったのさ。

ところで、独学された成果ってどこかで発表したり
製品になったりしてないんですか?
47 ◆xK91AxII :01/12/19 02:48
>>40 286を使ったことは一度もなかったりするんで(汁
>>44
各種disk読み出しroutine作るのは死ねる。
...が、リセットかけるよりはマシか。
48 ◆xK91AxII :01/12/19 02:51
;>>46
;286でプロテクトモード、しかも仕事ですか。
;プロていうのは厳しいんですね。
49反68:01/12/19 02:53


>>47
>286を使ったことは一度もなかったりするんで(汁

 なるほど(笑) プロテクトモードの学習用程度には良いと思うよ。

>各種disk読み出しroutine作るのは死ねる。

 オレは外部I/Oルーチンは作らなかった(笑) ローダに読ませてマ
スクさせてたぞ(笑) ゲームプログラムだったからな(微笑)
死ねると言うより、8877の動作原理がわからず仕舞だったな・・・。
50反68:01/12/19 03:00
「リセット」って言っても、リセットスイッチ押すワケじゃないよ(笑)
単にリセットベクタにジャンプするだけだからね。そこから、レジューム
する間にオーバーヘッドが発生する事はしょうがないけどな(笑)
51反68:01/12/19 03:05
どうやらこのスレの住人は寝た様だな。
オレも消えるとするか(笑)
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使って作ったり(笑)
5652:01/12/20 01:09
>>55
思い出した。ありがとう。
データバスの論理が逆になってるのは、MB8876だったと思う。
MZのFDCがMB8876で、制御プログラム書いた覚えがあるからたぶん間違いない。
X1はMB8877なのになあ。
57 ◆xK91AxII :01/12/20 02:47
;そして、生き残ったのは...。
58反68:01/12/21 02:16
>>57
オレだ(微笑)
59反68:01/12/21 02:18
>>56
8877か、NECが765だったな。
88とかのインテリジェント方式は内心、羨ましかったが・・・(微笑)
60 ◆xK91AxII :01/12/21 02:24
;>>59
;あれ、使いこなせますか。<ぜっぱち内蔵
;よく知らないんですが、スゴイですね。

;#新規って?
6152:01/12/21 02:25
>>59
別にCPUとメモリが載ってた上にPC-8801mk2になって内蔵されてからは
アホやん!どこがインテリジェントやねん!と思ってました。
とかいいつつあの16KBのメモリのおかげでいろいろできたんですがね・・・。

ところで、その10年前のパソコン通信みたいなノリはわざとですか?
6252:01/12/21 02:27
いかん。スレと違う話題になってきてる。
すんません>>1
63反68:01/12/21 02:31
>>61
ええと、わざとです(微笑)

>>60
おっと、メ-アド変えてなかったな、失礼(笑)

------------------------------------------------------------
出始めがVICだったので、普通のパソコンユーザーとは多分にうまく
いかないだろうが、知らない視点からも話す事を期待してくれ(笑)
64ナイコンさん:01/12/21 02:35
AAMとかAADといったBCD関係の命令がありますが、
実際こういうのって、実務で使う事ってありましたか?
65反68:01/12/21 02:40
>>64
AAx命令は1桁の掛け算・割り算に使うものだよ。
実行結果を良く見てみると良い。

Z80に比べて最適化のテクニックが生み出しにくい86系CPUの
別の側面だろうな(微笑)
66ナイコンさん:01/12/21 02:41
add byte ptr cs:[$+5],1
67反68:01/12/21 02:44
>>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演算が必要な場面って実際あるの?と思って
たわけです。
69反68:01/12/21 03:02
>>68
>うん、それは知ってるんだけど、実際に実務に使ってる人って
>いるんだろうかという疑問があったわけ。

 答えは極めて簡単。OA用途でアセンブラを使う場面はありえないか
ら[×]だろ?
70 ◆xK91AxII :01/12/21 03:04
;青木豊氏みたいなノリだ...
71反68:01/12/21 03:07
;データセグメント部分終了(笑)
72ナイコンさん:01/12/21 07:08
>>68
?それで上手く変換されてるの?
AND 0FH
DAA
ADD 0F0H
ADC 040H
とかじゃなくて?
(下位4bitを'0'-'9','A'-'F'の16進ASCII文字に変換。このコード初めて見ると驚くね)

まだ俺が寝ぼけてて理解できんだけかもしれんが(と、逃げ道も作っておく)
7372:01/12/21 07:13
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演算してたよ。
7672:01/12/22 19:56
わかった。
なるほど、わざわざ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に条件付リターン命令がないと知って、最初萎えたよ。
81ナイコンさん:01/12/24 15:47
VZの構造化マクロを自分のプログラムでこっそり使ってました。
82ナイコンさん:01/12/25 15:53
680x0系にはプロテクトモードがない。
そもそもバンク切り替えという概念がない。
83ナイコンさん:01/12/25 16:03
>>82
はぁ?
84ナイコンさん:01/12/25 16:05
>>83
君はモトローラー系CPU(68000以降)の事が理解出来てないようだな。
85ナイコンさん:01/12/25 16:13
スーパーバイザモードとユーザーモード。
86ナイコンさん:01/12/26 01:50
>>82
バンク切り替えとCPUのアーキテクチャは直接の関係はないのだが。

# アーキテクチャ上、バンク切り替えを使わないとどうにもならない
# CPUが存在したことも事実ではあるが。
87名無しさん@お腹いっぱい。:01/12/26 06:08
MMUのことをMemory Mapping Unitと呼んでいたこともあったな(笑
88ナイコンさん:01/12/26 08:22
君はセグメントの概念が理解できずにモトローラに逃げた口だね。>>84
確かに美しい実装とは言い難いが現状も変わらない。
89ナイコンさん:01/12/28 09:44
もし68000で16MBを超えるメモリ空間を制御する必要が生じたら?
68030に乗り換える
91ナイコンさん:02/01/01 03:26
>>89
FC2〜FC0 を利用するというのは?
92ore:02/01/09 16:57
>>89
68000にはちゃんとしたMMUなかったっけ
93ナイコンさん:02/01/09 17:10
セグメントは別に悪いことではない。
8086の問題は1セグメントが64Kバイトしかなかったという点だ。
94ナイコンさん:02/01/09 18:42
PowerPCにもセグメントあるしな。確か256MB。

8086は互換性重視の設計だからしかたないかも。
CPUにしろ本体にしろ、設計がクソでも互換性を重視したものが
生き残ってきてるしね。
互換性をある程度無視してもなんとかできるのは、巨大すぎる会社ぐらいか。
95ナイコンさん:02/01/11 21:11
>>94
PowerPCのメモリ範囲は4GBですが何か?
そして分割して使う事がないからセグメントとは言わないよーだマヌケ。

これだからx86厨房は。悔しいからってガセネタ流すなよ。
所詮はCISC。
96ナイコンさん:02/01/12 22:40
こういうスレがあると嬉しくなります
いろいろと勉強になります

うれしage!
97ナイコンさん:02/01/12 23:30
>>95
うわっ、PowerPCでメシ食ってる俺が86厨房とか言われてるよー。
ひょっとして煽られてるのかもしれないけどマジレス。

PowerPCの資料見ればわかるんだけど、SR0〜15っちゅーレジスタが
あったりします。さて、この「SR」とは何の略でしょう?
モトローラのWebサイトから英語版はダウンロードできると思うんで
読んでみてください>>95

英文が読めなければ、ソフトバンクの「Inside PowerPC」のP71〜72他を
読むといいかな。この本はPowerPC初心者向けにとてもいいと思う。
(他にないってのもあるけど)

セグメントといえば有名な64KBの壁を想像される方が多いのですが、
PowerPCの「セグメント」は80x86みたいな難儀なもんではありません。
私が>>94での書き方もまずかったと思うけど、
「セグメントという言葉=80x86の64KB=邪悪」っていう誤解は
とっとと捨てていただきたいと思う。
98>>97:02/01/12 23:34
Status Register?
99>>97:02/01/12 23:36
Segment Register?
100>>97:02/01/12 23:36
Static Register
101x86厨 ◆xK91AxII :02/01/12 23:58
10295:02/01/13 06:58
>>97
申し訳ありません。ご存知の通り、知ったかぶりの多い2chですから、
貴方が自分の言っている事を理解しているのか測るために本当っぽい
嘘で煽ってみました。マジゴメン。
PPCが発表された時、4GBのメモリ空間って話題になったから嘘のネタには
もってこいだったのですよ。
ちなみに補足するとSRの略は>>99が正解。CPUと言うよりかは内臓MMUの
レジスタで、仮想RAM管理用のレジスタです。普通の人は触りません。
セグメント誤解の件もかなり同意。つーか86厨房が全部悪い。
103昔86er:02/01/13 08:16
db '7777・・・'
 ↓ 逆アセすると
 AAA
 AAA
 AAA
 AAA
 ・
 ・
 ・

覚えやすく見つけやすいので、パッチエリアを埋めておく
のに愛用していた。
104ナイコンさん:02/01/18 12:50
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
>>104リセットだか?
107ナイコンさん:02/01/19 21:51
>>97
>PowerPCの「セグメント」は80x86みたいな難儀なもんではありません。
80386以降と80286と8086を一緒にする辺りがドキュソの証
10897:02/01/19 22:02
>>107
おお、すみません。
80x86のリアルモード、と書くべきでしたね。

プロテクトモードでは「セグメントレジスタ」じゃなくて
「セグメントセレクタ」になりますね。
で、そのセグメントセレクタの数以上のセグメントをアクセスしようとすると
結局セレクタを切り替えないといかんという・・・。
まあ64KBまでとかいうアホな制限ないから、そんなに問題にはなりませんが。
メモリまわりのの制約については、286の場合は16MBまで&FS/GSがないくらいだったよーな。
さすがに忘れてきてるなあ。どうでしたっけ?>>107

今はPPCでメシ食ってますが、その前は特定用途向けのDOS Extenderとか
作ってました。動くまではちょっと大変だったけど、慣れるとリアルモード
より楽だったなー。もうOSに近い領域の仕事することはないだろうな。
109 ◆xK91AxII :02/01/19 22:14
>>108
セレクタを切り替えてこそ、プロテクト...。
11097:02/01/19 22:53
>>109
色々ありまして、dsとesを開けときたかったんですよ。
286でも動くようにしないと売れないから386以降のみは不可
とかも言われたり・・・。
111ナイコンさん:02/01/21 09:23
TurboAssemblerで
SHORTジャンプとNEARジャンプを
自動判別する機能に萎。
SHORTでもダミーのNOPを入れるだけで
結局3バイト掛かる。
112ナイコンさん:02/01/22 12:40
>>111
1パスじゃなければちゃんとnopなしになると思われ。
113ナイコンさん:02/01/22 20:28
がぶ飲みしたいときー。
00 00 の逆アセンブルが
ADD [BX+SI],AL
だったとき。
114ナイコンさん:02/01/22 20:30
Windows2000のDEBUGコマンド、
未だに8086仕様とは…
115ナイコンさん:02/01/23 00:43
XOR AX,AX
MOV DI,AX
PUSH AX
POP ES
MOV CX,512
REP STOSW
116 :02/01/28 01:58
movem d0-d6,(-a7)
117ナイコンさん:02/02/14 19:40
MOV EAX,DWORD PTR [MSG_NO]
INC EAX
MOV DWORD PTR [MSG_NO],EAX
118ナイコンさん:02/03/18 11:24
xor eax,ebx
xor ebx,eax
xor eax,ebx
119ナイコンさん:02/03/18 22:59
xor ax,ax ; 腹減った
120ナイコンさん:02/03/19 00:36
8086で32bitかい?
121ナイコンさん:02/04/16 02:11
PRINT MACRO MSG
  MOV AH,9
  MOV DX,OFFSET MSG
  INT 21H
  ENDM
122まじめに。:02/05/10 23:57
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
123122:02/05/11 00:01
大歩危でした。pushall(改)が正解
124再開:02/05/28 01:08
    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 ; 人生無理せず逝こうよ。
128ナイコンさん:02/10/02 05:37
おまえ等凄いな。
何話してるのかさっぱりわからん。
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
134ナイコンさん:02/11/17 21:50
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 $
138ナイコンさん:02/11/19 03:59
今もvectorにあるよ。>sim
http://rd.vector.co.jp/soft/dos/util/se002710.html
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
142ナイコンさん:02/11/20 00:43
>>141
実は xchg ax,ax という罠。
143142:02/11/20 00:47
なので、NOP のくせに最小クロック命令ではないのは
なぜなんだと、インテルを小一時間(略
144ナイコンさん:02/12/03 04:30
ENVIRONMENT DIVISION
145ナイコンさん:02/12/03 16:07
nop  ;保守
146ナイコンさん:02/12/06 00:30
; 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
147ナイコンさん:02/12/16 04:11
このスレは無事に HLT しました。
148山崎渉:03/01/13 21:50
(^^)
149ナイコンさん:03/01/19 22:23
; ページングなしの環境、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 を扱えるじゃないか! ドライバ作れ(怒)!
怒りの会話でした。
いじょ。
150ナイコンさん:03/01/20 06:56
役に立ちそうなのでage!
151その1:03/01/20 23:00
;上のは、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
152その2:03/01/20 23:01
    ; 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
153その3:03/01/20 23:02
    ; 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
154その4:03/01/20 23:03
    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
155その5:03/01/20 23:04
    ; 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
@@:    
156その6:03/01/20 23:10
    ; 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 読み書き可である。で、結論は、ドライバ作れよ(怒)となるわけだ。
157間違えた。:03/01/20 23:17
(誤) jnz   @f  ; 手抜き
--------------------------------
(正) jnz   @b  ; 手抜き
158ナイコンさん:03/01/20 23:18
役に立ちそうなのでreage!
159ナイコンさん:03/01/21 01:32
C9
160ナイコンさん:03/01/21 02:02
CC
161ナイコンさん:03/01/22 00:27
   jmp   short 160
162ナイコンさん:03/01/22 00:31
FFFFF
163ナイコンさん:03/01/22 00:58
FF11
164ナイコンさん:03/01/22 04:21
6800 Z80をかじった後で、8086アセンブラを使って
掛け算命令があることに、すごいビックリしたな。

むちろん、データ長も16ビットなので、ほとんど
BASICみたいな手軽さで書けるじゃんと思いました。

それももう15年以上前の話だよな。
86系アセンブラ懐かしーっす。
165 :03/01/22 09:51
6809はイケるんだけどなぁ。8086の本最近買ったけど、
マシン語眺めてるとバスが倍なんでくらくらした。32ビットはもう、
理解不能。リアルタイムで8086使ってゲームでも作ってみたかったな。

素朴過ぎる疑問だけど単純な計算だったら8ビットの方が無駄がないよね。
1+1を一万回再計算するなら、8ビットの3G(ギガ)と32ビットの3Gでも差はないんじゃないの?
166ナイコンさん:03/01/25 08:22
>>165
1万回だと8bitはオーバーフロー処理が必要。
やはり32bitレジスタは便利だよ。

200回程度インクリメントするなら、メモリ節約
にはなるね。
167ナイコンさん:03/01/25 10:17
スーパースカラになった時点で決定的な差が
168ナイコンさん:03/01/25 10:58
>>166
俺は>>165の文章を
mov cx, 10000
lbl1:
mov al, 1
add al, 1
loop lbl1
と解釈したが。
これならオーバーフロー処理はいらねぇ。
169ナイコンさん:03/01/25 11:41
役に立ちそうなのでage!
170ナイコンさん:03/01/25 16:10
68030のマニュアル読んだとき165と似たようなこと感じたな。
「凄いな、こんなに沢山レジスタ(とポインタ)使えるよ。
86系は今は普及してるけど後からこの仕様がボディブロー
のように効いてきて最後には負けるんじゃない?」
とか思ったのは遠い遠い昔のはなしだったり。

86スレなのでsage
171ナイコンさん:03/01/25 17:49
>>170
はじめてIA-32のアドレッシングモードを知った時、
68kのパクリか!と思ったよ。
でもすぐにEIPやESP相対アドレッシングが無いことに
気が付いて、がっかりした記憶が。
あと、汎用レジスタが増えずに、FS,GSのみ追加された
ことにも首をかしげた。当時、プロテクトモードのことは
余り(というかほとんど)知らなかったからなぁ。
172171:03/01/25 17:52
あー、すまん。
ESP相対は有るな。勘違いしとったよ。
EIP相対は無いが。
173ナイコンさん:03/01/26 12:19
「初めての486」を読んで
「ごちゃごちゃしていて汚い設計だな」
と思ったが
「どうせ面倒な部分はシステムが管理するからいいや」
と思考停止したあの日
174ナイコンさん:03/01/26 15:05
POP SP
RET
175ナイコンさん:03/01/26 23:08
http://pc3.2ch.net/test/read.cgi/tech/1040297337/l50
関連リンク 「アセンブラヽ(`Д´)ノモルァ」
176ナイコンさん:03/01/27 03:09
HALT
177ナイコンさん:03/01/27 05:03
INTRをアクティブにしました
178ナイコンさん:03/01/27 13:48
STI
CLI
179ナイコンさん:03/01/29 23:38
loadall386 ; ぼくのこと忘れてください.....。
180ナイコンさん:03/01/29 23:55
>>176
HALTじゃなくてHLTだろが!!
181私的EQU:03/01/30 01:21
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
182ナイコンさん:03/01/31 01:55
>>181
何か許しがたいものがある。
183ナイコンさん:03/02/03 15:03
U EQU PUSH
O EQU POP
UA EQU PUSHA
OA EQU POPA

100行超えたあたりでいちいち打ち込むの面倒くさくなったんだよね。
頻繁に使う命令は自己流に短縮したり
184ナイコンさん:03/02/06 18:34
mov al, 0FFh
xchg al, byte ptr[semaphore] ; 昔は、使っていた。
185ナイコンさん:03/02/06 21:52
>>183
構造化マクロとか68風ニーモニックマクロとか、あったね。
だだ、仕事で使うのは、止めてけれと思うことしばし。
186ナイコンさん:03/02/20 06:11
最近アセンブラいじってる?
187ナイコンさん:03/02/24 23:39
>>186
つーか、win32apiとかアセンブラから読んでたら氏んじまう
188ナイコンさん:03/02/25 18:54
PUSH パラメータ
PUSH パラメータ
PUSH パラメータ
CALL win32API

なだけだが、
189山崎渉:03/04/17 12:26
(^^)
190山崎渉:03/04/20 05:59
   ∧_∧
  (  ^^ )< ぬるぽ(^^)
191山崎渉:03/05/22 02:09
━―━―━―━―━―━―━―━―━[JR山崎駅(^^)]━―━―━―━―━―━―━―━―━―
192ナイコンさん:03/06/03 23:45
 mov cx,0ffffh
@@:
 nop
 loop @b
; 暇つぶし
193ナイコンさん:03/06/07 12:03
かい〜わ
かい〜の
194ナイコンさん:03/06/08 08:35
保守
195ナイコンさん:03/07/01 14:18
;hoshu @age
mov sure,ue
196ナイコンさん:03/07/01 14:46
cli
197ナイコンさん:03/07/01 18:38
add
198_:03/07/01 18:55
199ナナシサソ:03/07/04 08:48
xor eax, eax
div eax, eax

書き方がこれで合ってるかみなさんに聞きたいだけれす
200ナイコンさん:03/07/04 09:02
今日はここで(;´Д`)ハァハァ
http://homepage3.nifty.com/coco-nut/
202ナイコンさん:03/07/08 14:58

 どう?こんなの、偽だけども

xand eax,eax

203ナイコンさん:03/07/08 16:28
>>201
なぜ時差悔いたにコピペなんだろ?。98ネタだと思うが。
204山崎 渉:03/07/15 11:06

 __∧_∧_
 |(  ^^ )| <寝るぽ(^^)
 |\⌒⌒⌒\
 \ |⌒⌒⌒~|         山崎渉
   ~ ̄ ̄ ̄ ̄
ハッキリ言ってアメリカなどの多民族国家では黒人の方がアジア人よりもずっと立場は上だよ。
貧弱で弱弱しく、アグレッシブさに欠け、醜いアジア人は黒人のストレス解消のいい的。
黒人は有名スポーツ選手、ミュージシャンを多数輩出してるし、アジア人はかなり彼らに見下されている。
(黒人は白人には頭があがらないため日系料理天などの日本人店員相手に威張り散らしてストレス解消する。
また、日本女はすぐヤラせてくれる肉便器としてとおっている。
「○ドルでどうだ?(俺を買え)」と逆売春を持ちかける黒人男性も多い。)
彼らの見ていないところでこそこそ陰口しか叩けない日本人は滑稽。
     ∧_∧  ∧_∧
ピュ.ー (  ・3・) (  ^^ ) <これからも僕たちを応援して下さいね(^^)。
  =〔~∪ ̄ ̄ ̄∪ ̄ ̄〕
  = ◎――――――◎                      山崎渉&ぼるじょあ
207ナイコンさん:03/08/02 19:51
☆ ☆ ☆ http://www.gals-cafe.com ☆ ☆ ☆

りさちゃんですっ☆みんな元気ぃ?夏だねっ!

あたしね、今アメリカにいるんだけど、、、えへっ(*>▽<*)

アナタに逢いたくて、こんなバイト始めちゃったヨ♪

りさに逢いに来てくれたら、7日間も会費無料サービスしちゃうし、

さらにさらに10分間も無料なんだよ! Σ(@o@)!!

アナタにだけの特別大っサービス♪絶対来てね!

二人っきりでたっくさん楽しいことしようよ♪まってるよ(^.^)/
☆ ☆ ☆ http://www.gals-cafe.com ☆ ☆ ☆
208安全地帯:03/08/02 21:11
209山崎 渉:03/08/15 23:08
    (⌒V⌒)
   │ ^ ^ │<これからも僕を応援して下さいね(^^)。
  ⊂|    |つ
   (_)(_)                      山崎パン
210ナイコンさん:03/09/13 09:04
halt
211ナイコンさん:03/10/28 18:00
ERR: jmp ERR:
nop
nop
nop
nop
212ナイコンさん:04/03/05 15:34
XOR AX,AX
あるいは
MOV AX,0000H
としたかったのに、こんがらがって
XOR AX,0000H
としてしまって半日潰しますた…。しかも同じミス2回目…。
213ナイコンさん:04/10/25 14:27:11
0x90
214ナイコンさん:04/12/28 16:18:21
move.l d0,d1
add.l d0,d0
_exit
215ナイコンさん:05/01/24 02:51:38
むずかしそうよ。
216ナイコンさん:05/01/24 18:55:49
ENTER/LEAVE って、80186からだっけ?
217ナイコンさん:05/01/31 14:45:25
reti
2187進さん:05/02/03 14:40:09
retf
219ナイコンさん:05/02/05 01:49:01
halt
220ナイコンさん:05/02/05 21:00:48
cli トリス
221ナイコンさん:05/02/12 22:24:30
>>220 MNI
222ナイコンさん:05/02/12 22:29:33
ノンマスカブルインタラプト!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
223ナイコンさん:05/02/13 00:52:35
sti
しとかないとマズー
224ナイコンさん:05/02/14 21:30:45
バイト同士でHするのか

Byte Sex
225ナイコンさん:05/02/22 02:26:14
Byte Swap BSWAPだろ
226ナイコンさん:2005/10/05(水) 00:48:26
アセンブラの知識はもう不要なんだろうかな
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
231naicon:2006/04/19(水) 14:13:54
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
235ナイコンさん:2006/06/04(日) 09:00:24
データa,bをキーボードから入力するとa×bの計算結果が表示素子に表示するには
どうしたらいいでしょうか?
236ナイコンさん:2006/06/05(月) 01:39:54
237ナイコンさん:2007/01/15(月) 22:55:29
238ナイコンさん:2007/01/18(木) 21:47:19

{

POKE 食べたい
239ナイコンさん:2007/04/24(火) 05:12:51
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
難しそうですね。
241ナイコンさん:2007/12/19(水) 13:48:53
mov al ,0
mov di , 0100h
mov cx , 0100h
a:mov [di] , al
inc al
inc di
loop a
242ナイコンさん:2007/12/22(土) 02:58:09
pop cs
243ナイコンさん:2007/12/22(土) 06:51:24
rep movsw
244ナイコンさん:2008/01/13(日) 23:34:13
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
この板でこのスレが2番目に古い

なので、おまえら2ch専用ブラウザ使え

2chブラウザの比較表(仮仮仮仮)
http://browser2ch.web.fc2.com/
246ナイコンさん:2008/02/06(水) 19:19:05
di
halt
247ナイコンさん:2008/02/06(水) 19:36:17
mov ax,301h
mov cx,1
mov dx,80h
int 13h
248ナイコンさん:2008/02/06(水) 20:14:15
DI
HALT
249ナイコンさん:2008/04/13(日) 15:24:28
kaposhi
250ナイコンさん:2008/07/10(木) 19:38:26
unk cnk mnk
251ナイコンさん:2009/09/23(水) 13:31:39
NOP
NOP
NOP
NOP
NOP
NOP
252ナイコンさん:2010/01/13(水) 23:10:22
jmp ffff:0000
253ナイコンさん:2010/01/16(土) 17:08:05
CPL   ;おまいら全否定
254ナイコンさん:2010/01/16(土) 18:59:19
LOOP1:
JMP LOOP1
255ナイコンさん:2010/01/16(土) 19:20:09
std
256ナイコンさん:2010/01/16(土) 20:22:21
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
259ナイコンさん:2010/03/28(日) 00:58:31
C9
260ナイコンさん:2010/06/11(金) 22:31:46
CALL FAR[BX]


;そういやHALTの命令コード(16進)なんでしたっけ
261ナイコンさん:2010/09/18(土) 02:35:56
std
262ナイコンさん:2010/09/18(土) 06:16:30
>>260
hltは0f4h
263ナイコンさん:2010/10/18(月) 01:28:30
>>252
ハードのリセットと違いハードウェアが完全に初期化されなかったなあ
細かい事は忘れた
264ナイコンさん:2010/10/18(月) 02:54:20
だってリセットじゃないもの
265ナイコンさん:2010/10/21(木) 23:55:19
EXX     ;あなた人が変わったみたいよ
266ナイコンさん:2010/11/06(土) 12:41:46
sex 0,[ffff]
267ナイコンさん:2010/12/19(日) 10:26:49
mov manko, [chinko]
268ナイコンさん:2010/12/20(月) 11:53:39
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 〜〜〜〜〜〜
273ナイコンさん:2011/03/31(木) 00:28:21.86
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
275電脳プリオン 忍法帖【Lv=40,xxxPT】(1+0:8) 【25.5m】
  ∧_∧
  ( ・∀・)   | | ガッ
 と    )    | |
   Y /ノ    人
    / )    <  >__Λ∩
  _/し' //. V`Д´)/ ←>>190
 (_フ彡        /