■ このスレッドは過去ログ倉庫に格納されています
8086アセンブラで会話しよう。
- 1 :MASM:01/12/16 01:40.net
- XOR AX, AX
- 2 :名無しさん@お腹いっぱい。:01/12/16 01:56.net
- halt
- 3 :さあね:01/12/16 03:55.net
- PORK &HC000,255
- 4 :んー。:01/12/16 07:40.net
- INT 18H;
- 5 : :01/12/16 10:42.net
- LD (HL),A
- 6 :porori:01/12/16 12:56.net
- XLAT
- 7 :名無しさん@お腹いっぱい。:01/12/16 13:19.net
- NOP
NOP
HALT
- 8 :名無しさん@お腹いっぱい。:01/12/16 14:48.net
- CMP AL,5A
- 9 :名無しさん@お腹いっぱい。:01/12/16 17:21.net
- jmp 9
- 10 :名無しさん@お腹いっぱい。:01/12/16 17:36.net
- ; つーか、PORKって豚だろ?
- 11 :名無しさん@お腹いっぱい。:01/12/16 19:20.net
- PUSH AX
PUSH DX
POP AX
POP DX
XOR AX, DX
XOR DX, AX
XOR AX, DX
解析していて見かけたコード。お前ら XCHG になにか恨みでもあるのか。
- 12 :名無しさん@お腹いっぱい。:01/12/16 19:37.net
- >11
XCHGはクロック食うとかだっけ?
- 13 :出張あさはかマン:01/12/16 19:52.net
- >>11
8080互換コードなんじゃ?
- 14 :出張あさはかマン:01/12/16 19:54.net
- あえていうならCP/Mバイナリを直接MS-DOSへ移植、とか。
- 15 : ◆xK91AxII :01/12/16 23:01.net
- out 0f0H, al
jmp $
- 16 :いっぱんほど:01/12/16 23:12.net
- MOV ax
- 17 : ◆xK91AxII :01/12/17 02:19.net
- 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.net
- INT 1BH
- 19 :おなかすいた:01/12/17 06:24.net
- XOR AX, AX
- 20 :やーおはよう ◆xK91AxII :01/12/17 07:11.net
- mov ax, 0a00H
int 18H
- 21 :AirH動かない...:01/12/17 11:20.net
- >>3
poke
- 22 :名無しさん@お腹いっぱい。:01/12/17 14:47.net
- >>21
つうかBASIC :-)
- 23 :名無しさん@お腹いっぱい。:01/12/17 15:14.net
- shl eax,16
- 24 : ◆xK91AxII :01/12/17 16:12.net
- mov dx, OFFSET _msg
mov ah, 9
int 21H
;中略
_msg db '8086でお願いします。', 13, 10, '$'
- 25 : ◆PC98AdY6 :01/12/17 17:44.net
- 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.net
- ;FDプロテクト外しdsk?, RADIX 16 って付けてほしいにょ。
mov ax, 4cffH
int 21H ;逝ってよし(ぉ
- 27 : ◆PC98AdY6 :01/12/18 10:25.net
- mov bx,HANDLE
mov ah,45H
int 21H ;オマエモナー
>25の6行目axじゃなくてahだった(苦笑
- 28 : ◆PC98AdY6 :01/12/18 11:30.net
- 日高徹/青山学 著
8086 マシン語秘伝の書(ISBN 4-7665-1079-8)
組み込み系のプログラマだけど、たまに読むと参考になります(w
- 29 :名無しさん@お腹いっぱい。:01/12/18 16:40.net
- mov ax,ip
sub ax,5
mov ip,ax
- 30 :名無しさん@お腹いっぱい。 :01/12/18 16:59.net
- MOVF 0x20,W
MOVWF 0x21
BTFSS STATUS,Z
GOTO $+4
BSF STATUS,C
- 31 : ◆xK91AxII :01/12/19 00:32.net
- ;>> 28
mov bx, ax
mov ah, 3eH
int 21H
;>>30 bitTestは80386から。
- 32 :名無しさん@お腹いっぱい。:01/12/19 01:20.net
- つーかマクロアセンブラなんかい!
CD 1B をとにかくサーチ。以上!
- 33 : :01/12/19 01:46.net
- 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.net
- pusha
- 35 :反68:01/12/19 02:19.net
- そういや昔はアセンブラ使ってたな(笑)
REP LODSBで転送するところをREP LODSDに変えると4倍速だ(笑)
端数の補正は必要だけどね(笑) しまった、MMX以前の話だ(爆笑)
- 36 : ◆xK91AxII :01/12/19 02:23.net
- jmp $+2; パイプラインクリア
- 37 :反68:01/12/19 02:26.net
- >>36
うわ、結構懐かしいワ(笑)
jmp addr;タスクスイッチ
こんなのはどうだ?(笑)
- 38 : ◆xK91AxII :01/12/19 02:32.net
- ;>>37
;80386以降のみですか。
;板のローカルルールからすれば、Win3.1も桶っぽいので、
;こういうのもアリってことでいきますか。
- 39 :名無しさん@お腹いっぱい。:01/12/19 02:34.net
- ;---------------------------------------------------------------
;【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.net
- >>38
それはいいけど、オレは毎日出てこないから、あまり関係ないかも(笑)
>;80386以降のみですか。
駄目ですね。286を忘れちゃ駄目だよ(笑)
オレは286でプロテクトモードのイロハを独学したよ(笑)
- 41 :名無しさん@お腹いっぱい。:01/12/19 02:37.net
- リセットかけないとリアルモードに戻れないのな・・・286
プロテクトモードからDOSのルーチン使おう思うとそりゃもう大変。
- 42 :反68:01/12/19 02:39.net
- >>39
掲示板にソース出してんじゃねーっ!、つーの!(笑)
でもさ、オレは大文字でソース書くけどな(微笑)
>>39みたいなアホは小文字で書いてるな(笑)
もしかすると>>39の道具も・・・○△□・・・なのか?(大爆笑)
- 43 :名無しさん@お腹いっぱい。:01/12/19 02:41.net
- >>42
個人攻撃に走るのやめたほうがいいよ。
忠告しとく。
- 44 :反68:01/12/19 02:41.net
- >>41
それがチミの頭の悪いところ(爆笑)
じゃあ、戻らなきゃいいんだよ、わかるか、アホ(爆笑)
自分でプロテクトモード用ルーチン作ればいいだけだよ。あんたアホ?(大爆笑)
- 45 :反68:01/12/19 02:43.net
- >>43
あんたにも忠告しとく(笑)
オレを敵に回すな(爆笑)
- 46 :41:01/12/19 02:47.net
- その件は「DOS+@で」という条件つきの
仕事でやってたからしょうがなかったのさ。
ところで、独学された成果ってどこかで発表したり
製品になったりしてないんですか?
- 47 : ◆xK91AxII :01/12/19 02:48.net
- >>40 286を使ったことは一度もなかったりするんで(汁
>>44
各種disk読み出しroutine作るのは死ねる。
...が、リセットかけるよりはマシか。
- 48 : ◆xK91AxII :01/12/19 02:51.net
- ;>>46
;286でプロテクトモード、しかも仕事ですか。
;プロていうのは厳しいんですね。
- 49 :反68:01/12/19 02:53.net
-
>>47
>286を使ったことは一度もなかったりするんで(汁
なるほど(笑) プロテクトモードの学習用程度には良いと思うよ。
>各種disk読み出しroutine作るのは死ねる。
オレは外部I/Oルーチンは作らなかった(笑) ローダに読ませてマ
スクさせてたぞ(笑) ゲームプログラムだったからな(微笑)
死ねると言うより、8877の動作原理がわからず仕舞だったな・・・。
- 50 :反68:01/12/19 03:00.net
- 「リセット」って言っても、リセットスイッチ押すワケじゃないよ(笑)
単にリセットベクタにジャンプするだけだからね。そこから、レジューム
する間にオーバーヘッドが発生する事はしょうがないけどな(笑)
- 51 :反68:01/12/19 03:05.net
- どうやらこのスレの住人は寝た様だな。
オレも消えるとするか(笑)
- 52 :名無しさん@お腹いっぱい。:01/12/19 10:20.net
- 8877って何?
- 53 :名無しさん@お腹いっぱい。:01/12/19 10:58.net
- M$DOS 2.11 がライセンスフリーだったからフル活用したよ。
というかFD,HDD両対応のプログラム書こうとするとそれ以外無いし。
つーか jmp $+2 はPentium以降で死ぬと思われ。
- 54 :名無しさん@お腹いっぱい。:01/12/19 12:56.net
- うわ、粘着がここにも...
- 55 :名無しさん@お腹いっぱい。:01/12/19 23:14.net
- >>52
8877って富士通のFDCだろ?
データバスの論理が逆になってる8866ってのもあったような気がする。
NECのuPD765と並んで良く使われたな。
プロテクトかけるには8877の方がいろいろ融通が利いて良かったので、
PC-9801用(uPD765使用)のFDを8877使って作ったり(笑)
- 56 :52:01/12/20 01:09.net
- >>55
思い出した。ありがとう。
データバスの論理が逆になってるのは、MB8876だったと思う。
MZのFDCがMB8876で、制御プログラム書いた覚えがあるからたぶん間違いない。
X1はMB8877なのになあ。
- 57 : ◆xK91AxII :01/12/20 02:47.net
- ;そして、生き残ったのは...。
- 58 :反68:01/12/21 02:16.net
- >>57
オレだ(微笑)
- 59 :反68:01/12/21 02:18.net
- >>56
8877か、NECが765だったな。
88とかのインテリジェント方式は内心、羨ましかったが・・・(微笑)
- 60 : ◆xK91AxII :01/12/21 02:24.net
- ;>>59
;あれ、使いこなせますか。<ぜっぱち内蔵
;よく知らないんですが、スゴイですね。
;#新規って?
- 61 :52:01/12/21 02:25.net
- >>59
別にCPUとメモリが載ってた上にPC-8801mk2になって内蔵されてからは
アホやん!どこがインテリジェントやねん!と思ってました。
とかいいつつあの16KBのメモリのおかげでいろいろできたんですがね・・・。
ところで、その10年前のパソコン通信みたいなノリはわざとですか?
- 62 :52:01/12/21 02:27.net
- いかん。スレと違う話題になってきてる。
すんません>>1
- 63 :反68:01/12/21 02:31.net
- >>61
ええと、わざとです(微笑)
>>60
おっと、メ-アド変えてなかったな、失礼(笑)
------------------------------------------------------------
出始めがVICだったので、普通のパソコンユーザーとは多分にうまく
いかないだろうが、知らない視点からも話す事を期待してくれ(笑)
- 64 :ナイコンさん:01/12/21 02:35.net
- AAMとかAADといったBCD関係の命令がありますが、
実際こういうのって、実務で使う事ってありましたか?
- 65 :反68:01/12/21 02:40.net
- >>64
AAx命令は1桁の掛け算・割り算に使うものだよ。
実行結果を良く見てみると良い。
Z80に比べて最適化のテクニックが生み出しにくい86系CPUの
別の側面だろうな(微笑)
- 66 :ナイコンさん:01/12/21 02:41.net
- add byte ptr cs:[$+5],1
- 67 :反68:01/12/21 02:44.net
- >>66
で、何がしたいの?オレにはわからない(微笑)
INC byte ptr CS:[$+5]
ってできたっけ?(微笑)
アドレッシングモード忘れたぞ(爆笑)
- 68 :ナイコンさん:01/12/21 03:01.net
- >AAx命令は1桁の掛け算・割り算に使うものだよ。
うん、それは知ってるんだけど、実際に実務に使ってる人って
いるんだろうかという疑問があったわけ。
Z80が長くて、DAA命令を使う事もあったんだけど、
ADD A,90H
DAA
ADC A,40H
DAA
という裏技的な16進ASCII変換にしか使ったことなくて
昔から、BCD演算が必要な場面って実際あるの?と思って
たわけです。
- 69 :反68:01/12/21 03:02.net
- >>68
>うん、それは知ってるんだけど、実際に実務に使ってる人って
>いるんだろうかという疑問があったわけ。
答えは極めて簡単。OA用途でアセンブラを使う場面はありえないか
ら[×]だろ?
- 70 : ◆xK91AxII :01/12/21 03:04.net
- ;青木豊氏みたいなノリだ...
- 71 :反68:01/12/21 03:07.net
- ;データセグメント部分終了(笑)
- 72 :ナイコンさん:01/12/21 07:08.net
- >>68
?それで上手く変換されてるの?
AND 0FH
DAA
ADD 0F0H
ADC 040H
とかじゃなくて?
(下位4bitを'0'-'9','A'-'F'の16進ASCII文字に変換。このコード初めて見ると驚くね)
まだ俺が寝ぼけてて理解できんだけかもしれんが(と、逃げ道も作っておく)
- 73 :72:01/12/21 07:13.net
- AND A,0FH
DAA
ADD A,0F0H
ADC A,040H
こうだよな。マジ寝ぼけてるらしい・・・・
- 74 :ナイコンさん:01/12/21 19:58.net
- ;
; 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.net
- ちなみにMSX-BASICは内部でBCD演算してたよ。
- 76 :72:01/12/22 19:56.net
- わかった。
なるほど、わざわざ2回に分けて60h足すわけか。
>>72 の方がシンプルで短いじゃん、と思ったらANDはHビットをセットするから
DAAの前にOR Aとか入れる必要あるんだね。>>72-73 書いた時は気づきもしなかった。
しかしひどいな、>>73 でもまだ間違ってる。
- 77 :ナイコンさん:01/12/23 02:26.net
- 自己書き換えのせいでPentiumで動かないプログラム萌え。
- 78 :名無しさん@お腹いっぱい。:01/12/23 17:49.net
- Z80から86へやってきてJPではまったやつは俺だけではあるまい
- 79 :ナイコンさん:01/12/24 12:20.net
- x86にRETZがないのが驚いた。でも今はx86使い…。
- 80 :ナイコンさん:01/12/24 14:33.net
- >>79
確かに。 8086に条件付リターン命令がないと知って、最初萎えたよ。
- 81 :ナイコンさん:01/12/24 15:47.net
- VZの構造化マクロを自分のプログラムでこっそり使ってました。
- 82 :ナイコンさん:01/12/25 15:53.net
- 680x0系にはプロテクトモードがない。
そもそもバンク切り替えという概念がない。
- 83 :ナイコンさん:01/12/25 16:03.net
- >>82
はぁ?
- 84 :ナイコンさん:01/12/25 16:05.net
- >>83
君はモトローラー系CPU(68000以降)の事が理解出来てないようだな。
- 85 :ナイコンさん:01/12/25 16:13.net
- スーパーバイザモードとユーザーモード。
- 86 :ナイコンさん:01/12/26 01:50.net
- >>82
バンク切り替えとCPUのアーキテクチャは直接の関係はないのだが。
# アーキテクチャ上、バンク切り替えを使わないとどうにもならない
# CPUが存在したことも事実ではあるが。
- 87 :名無しさん@お腹いっぱい。:01/12/26 06:08.net
- MMUのことをMemory Mapping Unitと呼んでいたこともあったな(笑
- 88 :ナイコンさん:01/12/26 08:22.net
- 君はセグメントの概念が理解できずにモトローラに逃げた口だね。>>84
確かに美しい実装とは言い難いが現状も変わらない。
- 89 :ナイコンさん:01/12/28 09:44.net
- もし68000で16MBを超えるメモリ空間を制御する必要が生じたら?
- 90 :名無しさん@お腹いっぱい。:01/12/29 07:37.net
- 68030に乗り換える
- 91 :ナイコンさん:02/01/01 03:26.net
- >>89
FC2〜FC0 を利用するというのは?
- 92 :ore:02/01/09 16:57.net
- >>89
68000にはちゃんとしたMMUなかったっけ
- 93 :ナイコンさん:02/01/09 17:10.net
- セグメントは別に悪いことではない。
8086の問題は1セグメントが64Kバイトしかなかったという点だ。
- 94 :ナイコンさん:02/01/09 18:42.net
- PowerPCにもセグメントあるしな。確か256MB。
8086は互換性重視の設計だからしかたないかも。
CPUにしろ本体にしろ、設計がクソでも互換性を重視したものが
生き残ってきてるしね。
互換性をある程度無視してもなんとかできるのは、巨大すぎる会社ぐらいか。
- 95 :ナイコンさん:02/01/11 21:11.net
- >>94
PowerPCのメモリ範囲は4GBですが何か?
そして分割して使う事がないからセグメントとは言わないよーだマヌケ。
これだからx86厨房は。悔しいからってガセネタ流すなよ。
所詮はCISC。
- 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
総レス数 452
142 KB
新着レスの表示
掲示板に戻る
全部
前100
次100
最新50
read.cgi ver.24052200