■ このスレッドは過去ログ倉庫に格納されています
8086アセンブラで会話しよう。
- 1 :MASM:01/12/16 01:40.net
- XOR AX, AX
- 96 :ナイコンさん:02/01/12 22:40.net
- こういうスレがあると嬉しくなります
いろいろと勉強になります
うれしage!
- 97 :ナイコンさん:02/01/12 23:30.net
- >>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.net
- Status Register?
- 99 :>>97:02/01/12 23:36.net
- Segment Register?
- 100 :>>97:02/01/12 23:36.net
- Static Register
- 101 :x86厨 ◆xK91AxII :02/01/12 23:58.net
- ;>>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.net
- >>97
申し訳ありません。ご存知の通り、知ったかぶりの多い2chですから、
貴方が自分の言っている事を理解しているのか測るために本当っぽい
嘘で煽ってみました。マジゴメン。
PPCが発表された時、4GBのメモリ空間って話題になったから嘘のネタには
もってこいだったのですよ。
ちなみに補足するとSRの略は>>99が正解。CPUと言うよりかは内臓MMUの
レジスタで、仮想RAM管理用のレジスタです。普通の人は触りません。
セグメント誤解の件もかなり同意。つーか86厨房が全部悪い。
- 103 :昔86er:02/01/13 08:16.net
- db '7777・・・'
↓ 逆アセすると
AAA
AAA
AAA
AAA
・
・
・
覚えやすく見つけやすいので、パッチエリアを埋めておく
のに愛用していた。
- 104 :ナイコンさん:02/01/18 12:50.net
- JMP FAR FFFF:0000
- 105 : ◆xK91AxII :02/01/19 20:49.net
- OFSDLT EQU 7c00H
_OFS DW 0
_SEG DW 1000H
;中略
jmp DWORD PTR [_OFS + OFSDLT]
;この前書いたプログラムから抜粋
- 106 :ナイコンさん:02/01/19 20:52.net
- >>104リセットだか?
- 107 :ナイコンさん:02/01/19 21:51.net
- >>97
>PowerPCの「セグメント」は80x86みたいな難儀なもんではありません。
80386以降と80286と8086を一緒にする辺りがドキュソの証
- 108 :97:02/01/19 22:02.net
- >>107
おお、すみません。
80x86のリアルモード、と書くべきでしたね。
プロテクトモードでは「セグメントレジスタ」じゃなくて
「セグメントセレクタ」になりますね。
で、そのセグメントセレクタの数以上のセグメントをアクセスしようとすると
結局セレクタを切り替えないといかんという・・・。
まあ64KBまでとかいうアホな制限ないから、そんなに問題にはなりませんが。
メモリまわりのの制約については、286の場合は16MBまで&FS/GSがないくらいだったよーな。
さすがに忘れてきてるなあ。どうでしたっけ?>>107
今はPPCでメシ食ってますが、その前は特定用途向けのDOS Extenderとか
作ってました。動くまではちょっと大変だったけど、慣れるとリアルモード
より楽だったなー。もうOSに近い領域の仕事することはないだろうな。
- 109 : ◆xK91AxII :02/01/19 22:14.net
- >>108
セレクタを切り替えてこそ、プロテクト...。
- 110 :97:02/01/19 22:53.net
- >>109
色々ありまして、dsとesを開けときたかったんですよ。
286でも動くようにしないと売れないから386以降のみは不可
とかも言われたり・・・。
- 111 :ナイコンさん:02/01/21 09:23.net
- TurboAssemblerで
SHORTジャンプとNEARジャンプを
自動判別する機能に萎。
SHORTでもダミーのNOPを入れるだけで
結局3バイト掛かる。
- 112 :ナイコンさん:02/01/22 12:40.net
- >>111
1パスじゃなければちゃんとnopなしになると思われ。
- 113 :ナイコンさん:02/01/22 20:28.net
- がぶ飲みしたいときー。
00 00 の逆アセンブルが
ADD [BX+SI],AL
だったとき。
- 114 :ナイコンさん:02/01/22 20:30.net
- Windows2000のDEBUGコマンド、
未だに8086仕様とは…
- 115 :ナイコンさん:02/01/23 00:43.net
- XOR AX,AX
MOV DI,AX
PUSH AX
POP ES
MOV CX,512
REP STOSW
- 116 : :02/01/28 01:58.net
- movem d0-d6,(-a7)
- 117 :ナイコンさん:02/02/14 19:40.net
- MOV EAX,DWORD PTR [MSG_NO]
INC EAX
MOV DWORD PTR [MSG_NO],EAX
- 118 :ナイコンさん:02/03/18 11:24.net
- xor eax,ebx
xor ebx,eax
xor eax,ebx
- 119 :ナイコンさん:02/03/18 22:59.net
- xor ax,ax ; 腹減った
- 120 :ナイコンさん:02/03/19 00:36.net
- 8086で32bitかい?
- 121 :ナイコンさん:02/04/16 02:11.net
- PRINT MACRO MSG
MOV AH,9
MOV DX,OFFSET MSG
INT 21H
ENDM
- 122 :まじめに。:02/05/10 23:57.net
- 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.net
- 大歩危でした。pushall(改)が正解
- 124 :再開:02/05/28 01:08.net
- even
_print label far
pusha
- 125 :ナイコンさん:02/09/18 11:20.net
-
- 126 :ナイコンさん:02/09/18 12:29.net
- retx
- 127 :ナイコンさん:02/09/26 22:59.net
- jmp short $+2 ; 人生無理せず逝こうよ。
- 128 :ナイコンさん:02/10/02 05:37.net
- おまえ等凄いな。
何話してるのかさっぱりわからん。
- 129 :ナイコンさん:02/10/04 10:51.net
- xlat
- 130 :ナイコンさん:02/11/10 05:05.net
- なんだかレベルが高いんだか低いんだか微妙な会話群だけど面白しょいのでage。
F/W屋さん多いのかな?
会話に加わろうかと思うが返り討ちにあいそうなんでここは我慢だ。
- 131 :ナイコンさん :02/11/16 09:08.net
- cli
rep movsb
- 132 :ナイコンさん:02/11/16 09:13.net
- bswap eax
エンディアン変換をするための命令。
でも486以降・・・。
- 133 :ナイコンさん:02/11/16 11:47.net
- cmpxchg8b
- 134 :ナイコンさん:02/11/17 21:50.net
- lahf
sahf
久々にニモニック表を見るまで、その存在を忘れていた...
- 135 :ナイコンさん:02/11/17 23:50.net
- >>131
rep movsbといえば
昔、simっていうPC−9801上でIBM−PCのアプリケーションを動かすエミュレータがあって、
アプリケーションプログラム上のVRAMへの転送のためのrep movsbをint 90h(だったけ?)なんかに置き換えるパッチを
置き換えることをやったなあ・・・。
ちょっと、懐かしかったので書き込んでみました
(逆アセンブルなんて最近しとらん)。
- 136 :ナイコンさん:02/11/17 23:52.net
- >>135
>置き換えるパッチを置き換えることをやったなあ・・・。
置き換えるパッチを作ったの間違い(スマソ)
- 137 :ナイコンさん:02/11/17 23:59.net
- >>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.net
- 今もvectorにあるよ。>sim
http://rd.vector.co.jp/soft/dos/util/se002710.html
- 139 :ナイコンさん:02/11/19 22:58.net
- >>137
label2:
nop
のあとのint 1bhは、いらんと思うぞ。
cdh,01bhでバイナリサーチされて、真っ先にnopに変えられると思う。
- 140 :ナイコンさん:02/11/19 23:04.net
- >>138
ざべに「パッチ真理教」という記事があって、毎月パッチ情報が載っていたね。
(あのころは、xxx真理教があんな教団だったとは、しらんかった)。
- 141 :ナイコンさん:02/11/19 23:46.net
- nop
- 142 :ナイコンさん:02/11/20 00:43.net
- >>141
実は xchg ax,ax という罠。
- 143 :142:02/11/20 00:47.net
- なので、NOP のくせに最小クロック命令ではないのは
なぜなんだと、インテルを小一時間(略
- 144 :ナイコンさん:02/12/03 04:30.net
- ENVIRONMENT DIVISION
- 145 :ナイコンさん:02/12/03 16:07.net
- nop ;保守
- 146 :ナイコンさん:02/12/06 00:30.net
- ; 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.net
- このスレは無事に HLT しました。
- 148 :山崎渉:03/01/13 21:50.net
- (^^)
- 149 :ナイコンさん:03/01/19 22:23.net
- ; ページングなしの環境、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.net
- 役に立ちそうなのでage!
- 151 :その1:03/01/20 23:00.net
- ;上のは、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.net
- ; 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.net
- ; 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.net
- 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.net
- ; 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.net
- ; 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.net
- (誤) jnz @f ; 手抜き
--------------------------------
(正) jnz @b ; 手抜き
- 158 :ナイコンさん:03/01/20 23:18.net
- 役に立ちそうなのでreage!
- 159 :ナイコンさん:03/01/21 01:32.net
- C9
- 160 :ナイコンさん:03/01/21 02:02.net
- CC
- 161 :ナイコンさん:03/01/22 00:27.net
- jmp short 160
- 162 :ナイコンさん:03/01/22 00:31.net
- FFFFF
- 163 :ナイコンさん:03/01/22 00:58.net
- FF11
- 164 :ナイコンさん:03/01/22 04:21.net
- 6800 Z80をかじった後で、8086アセンブラを使って
掛け算命令があることに、すごいビックリしたな。
むちろん、データ長も16ビットなので、ほとんど
BASICみたいな手軽さで書けるじゃんと思いました。
それももう15年以上前の話だよな。
86系アセンブラ懐かしーっす。
- 165 : :03/01/22 09:51.net
- 6809はイケるんだけどなぁ。8086の本最近買ったけど、
マシン語眺めてるとバスが倍なんでくらくらした。32ビットはもう、
理解不能。リアルタイムで8086使ってゲームでも作ってみたかったな。
素朴過ぎる疑問だけど単純な計算だったら8ビットの方が無駄がないよね。
1+1を一万回再計算するなら、8ビットの3G(ギガ)と32ビットの3Gでも差はないんじゃないの?
- 166 :ナイコンさん:03/01/25 08:22.net
- >>165
1万回だと8bitはオーバーフロー処理が必要。
やはり32bitレジスタは便利だよ。
200回程度インクリメントするなら、メモリ節約
にはなるね。
- 167 :ナイコンさん:03/01/25 10:17.net
- スーパースカラになった時点で決定的な差が
- 168 :ナイコンさん:03/01/25 10:58.net
- >>166
俺は>>165の文章を
mov cx, 10000
lbl1:
mov al, 1
add al, 1
loop lbl1
と解釈したが。
これならオーバーフロー処理はいらねぇ。
- 169 :ナイコンさん:03/01/25 11:41.net
- 役に立ちそうなのでage!
- 170 :ナイコンさん:03/01/25 16:10.net
- 68030のマニュアル読んだとき165と似たようなこと感じたな。
「凄いな、こんなに沢山レジスタ(とポインタ)使えるよ。
86系は今は普及してるけど後からこの仕様がボディブロー
のように効いてきて最後には負けるんじゃない?」
とか思ったのは遠い遠い昔のはなしだったり。
86スレなのでsage
- 171 :ナイコンさん:03/01/25 17:49.net
- >>170
はじめてIA-32のアドレッシングモードを知った時、
68kのパクリか!と思ったよ。
でもすぐにEIPやESP相対アドレッシングが無いことに
気が付いて、がっかりした記憶が。
あと、汎用レジスタが増えずに、FS,GSのみ追加された
ことにも首をかしげた。当時、プロテクトモードのことは
余り(というかほとんど)知らなかったからなぁ。
- 172 :171:03/01/25 17:52.net
- あー、すまん。
ESP相対は有るな。勘違いしとったよ。
EIP相対は無いが。
- 173 :ナイコンさん:03/01/26 12:19.net
- 「初めての486」を読んで
「ごちゃごちゃしていて汚い設計だな」
と思ったが
「どうせ面倒な部分はシステムが管理するからいいや」
と思考停止したあの日
- 174 :ナイコンさん:03/01/26 15:05.net
- POP SP
RET
- 175 :ナイコンさん:03/01/26 23:08.net
- http://pc3.2ch.net/test/read.cgi/tech/1040297337/l50
関連リンク 「アセンブラヽ(`Д´)ノモルァ」
- 176 :ナイコンさん:03/01/27 03:09.net
- HALT
- 177 :ナイコンさん:03/01/27 05:03.net
- INTRをアクティブにしました
- 178 :ナイコンさん:03/01/27 13:48.net
- STI
CLI
- 179 :ナイコンさん:03/01/29 23:38.net
- loadall386 ; ぼくのこと忘れてください.....。
- 180 :ナイコンさん:03/01/29 23:55.net
- >>176
HALTじゃなくてHLTだろが!!
- 181 :私的EQU:03/01/30 01:21.net
- 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.net
- >>181
何か許しがたいものがある。
- 183 :ナイコンさん:03/02/03 15:03.net
- U EQU PUSH
O EQU POP
UA EQU PUSHA
OA EQU POPA
100行超えたあたりでいちいち打ち込むの面倒くさくなったんだよね。
頻繁に使う命令は自己流に短縮したり
- 184 :ナイコンさん:03/02/06 18:34.net
- mov al, 0FFh
xchg al, byte ptr[semaphore] ; 昔は、使っていた。
- 185 :ナイコンさん:03/02/06 21:52.net
- >>183
構造化マクロとか68風ニーモニックマクロとか、あったね。
だだ、仕事で使うのは、止めてけれと思うことしばし。
- 186 :ナイコンさん:03/02/20 06:11.net
- 最近アセンブラいじってる?
- 187 :ナイコンさん:03/02/24 23:39.net
- >>186
つーか、win32apiとかアセンブラから読んでたら氏んじまう
- 188 :ナイコンさん:03/02/25 18:54.net
- PUSH パラメータ
PUSH パラメータ
PUSH パラメータ
CALL win32API
なだけだが、
- 189 :山崎渉:03/04/17 12:26.net
- (^^)
- 190 :山崎渉:03/04/20 05:59.net
- ∧_∧
( ^^ )< ぬるぽ(^^)
- 191 :山崎渉:03/05/22 02:09.net
- ━―━―━―━―━―━―━―━―━[JR山崎駅(^^)]━―━―━―━―━―━―━―━―━―
- 192 :ナイコンさん:03/06/03 23:45.net
- mov cx,0ffffh
@@:
nop
loop @b
; 暇つぶし
- 193 :ナイコンさん:03/06/07 12:03.net
- かい〜わ
かい〜の
- 194 :ナイコンさん:03/06/08 08:35.net
- 保守
- 195 :ナイコンさん:03/07/01 14:18.net
- ;hoshu @age
mov sure,ue
総レス数 452
142 KB
新着レスの表示
掲示板に戻る
全部
前100
次100
最新50
read.cgi ver.24052200