5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

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

1 :MASM:01/12/16 01:40
XOR AX, AX

2 :名無しさん@お腹いっぱい。:01/12/16 01:56
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

6 :porori: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

10 :名無しさん@お腹いっぱい。:01/12/16 17:36
; つーか、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

18 :名無しさん@お腹いっぱい。:01/12/17 05:39
INT 1BH

19 :おなかすいた:01/12/17 06:24
XOR AX, AX

20 :やーおはよう ◆xK91AxII :01/12/17 07:11
mov ax, 0a00H
int 18H

21 :AirH動かない...:01/12/17 11:20
>>3
poke

22 :名無しさん@お腹いっぱい。:01/12/17 14:47
>>21
つうかBASIC :-)

23 :名無しさん@お腹いっぱい。:01/12/17 15:14
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

29 :名無しさん@お腹いっぱい。:01/12/18 16:40
mov ax,ip
sub ax,5
mov ip,ax

30 :名無しさん@お腹いっぱい。 :01/12/18 16:59
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 '逝ってよし','$'

34 :名無しさん@お腹いっぱい。:01/12/19 02:04
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
あんたにも忠告しとく(笑)
オレを敵に回すな(爆笑)

46 :41: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以降で死ぬと思われ。

54 :名無しさん@お腹いっぱい。:01/12/19 12:56
うわ、粘着がここにも...

55 :名無しさん@お腹いっぱい。:01/12/19 23:14
>>52
8877って富士通のFDCだろ?
データバスの論理が逆になってる8866ってのもあったような気がする。
NECのuPD765と並んで良く使われたな。
プロテクトかけるには8877の方がいろいろ融通が利いて良かったので、
PC-9801用(uPD765使用)のFDを8877使って作ったり(笑)

56 :52: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
;あれ、使いこなせますか。<ぜっぱち内蔵
;よく知らないんですが、スゴイですね。

;#新規って?

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

ところで、その10年前のパソコン通信みたいなノリはわざとですか?

62 :52: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文字に変換。このコード初めて見ると驚くね)

まだ俺が寝ぼけてて理解できんだけかもしれんが(と、逃げ道も作っておく)

73 :72: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演算してたよ。

76 :72: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を超えるメモリ空間を制御する必要が生じたら?

90 :名無しさん@お腹いっぱい。:01/12/29 07:37
68030に乗り換える

91 :ナイコンさん:02/01/01 03:26
>>89
FC2〜FC0 を利用するというのは?

92 :ore: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

101 :x86厨 ◆xK91AxII :02/01/12 23:58
;>>97
;http://www-3.ibm.com/chips/products/powerpc/newsletter/v1_oct2000/prog-h-t_10-00.html
;http://www-3.ibm.com/chips/techlib/techlib.nsf/productfamilies/PowerPC
;英文読めても、この辺は理解しづらいところではないかと。

102 :95: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を一緒にする辺りがドキュソの証

108 :97: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
セレクタを切り替えてこそ、プロテクト...。

110 :97: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


123 :122: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 という罠。

143 :142: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のみ追加された
ことにも首をかしげた。当時、プロテクトモードのことは
余り(というかほとんど)知らなかったからなぁ。

172 :171: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
http://homepage.mac.com/hiroyuki44/hankaku10.html

199 :ナナシサソ:03/07/04 08:48
xor eax, eax
div eax, eax

書き方がこれで合ってるかみなさんに聞きたいだけれす

200 :ナイコンさん:03/07/04 09:02
今日はここで(;´Д`)ハァハァ
http://homepage3.nifty.com/coco-nut/

201 :こぴぺするなよバカが:03/07/07 07:45
http://pc3.2ch.net/test/read.cgi/jisaku/1056294930/585

202 :ナイコンさん:03/07/08 14:58

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

xand eax,eax



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


204 :山崎 渉:03/07/15 11:06

 __∧_∧_
 |(  ^^ )| <寝るぽ(^^)
 |\⌒⌒⌒\
 \ |⌒⌒⌒~|         山崎渉
   ~ ̄ ̄ ̄ ̄

205 :なまえをいれてください:03/07/22 13:29
ハッキリ言ってアメリカなどの多民族国家では黒人の方がアジア人よりもずっと立場は上だよ。
貧弱で弱弱しく、アグレッシブさに欠け、醜いアジア人は黒人のストレス解消のいい的。
黒人は有名スポーツ選手、ミュージシャンを多数輩出してるし、アジア人はかなり彼らに見下されている。
(黒人は白人には頭があがらないため日系料理天などの日本人店員相手に威張り散らしてストレス解消する。
また、日本女はすぐヤラせてくれる肉便器としてとおっている。
「○ドルでどうだ?(俺を買え)」と逆売春を持ちかける黒人男性も多い。)
彼らの見ていないところでこそこそ陰口しか叩けない日本人は滑稽。

206 :ぼるじょあ ◆ySd1dMH5Gk :03/08/02 05:08
     ∧_∧  ∧_∧
ピュ.ー (  ・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
http://elife.fam.cx/a009/





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


218 :7進さん: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

231 :naicon: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
スレ違い
http://pc8.2ch.net/test/read.cgi/tech/1148402614/


237 :ナイコンさん:2007/01/15(月) 22:55:29


238 :ナイコンさん:2007/01/18(木) 21:47:19

{

POKE 食べたい

46 KB
■ このスレッドは過去ログ倉庫に格納されています

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)