1read 100read
2012年5月昔のPC100: 8086アセンブラで会話しよう。 (274) TOP カテ一覧 スレ一覧 2ch元 削除依頼
【意外と】HARDOFF【穴場】 (331)
大昔のコンピュータグラフィックス@クスクス (178)
とりあえずハァハァ! (200)
EPSON 98互換機 Part3 (464)
プロテクトについて語ろう (755)
PCエミュレーター統合スレッド Part5 (195)

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


1 :01/12/16 〜 最終レス :12/04/15
XOR AX, AX

2 :
halt

3 :
PORK &HC000,255

4 :
INT 18H;

5 :
LD (HL),A

6 :
XLAT

7 :
NOP
NOP
HALT

8 :
CMP AL,5A

9 :
jmp 9

10 :
; つーか、PORKって豚だろ?

11 :
PUSH AX
PUSH DX
POP AX
POP DX
XOR AX, DX
XOR DX, AX
XOR AX, DX
解析していて見かけたコード。お前ら XCHG になにか恨みでもあるのか。

12 :
>11
XCHGはクロック食うとかだっけ?

13 :
>>11
8080互換コードなんじゃ?

14 :
あえていうならCP/Mバイナリを直接MS-DOSへ移植、とか。

15 :
out 0f0H, al
jmp $

16 :
MOV ax

17 :
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 :
INT 1BH

19 :
XOR AX, AX

20 :
mov ax, 0a00H
int 18H

21 :
>>3
poke

22 :
>>21
つうかBASIC :-)

23 :
shl eax,16

24 :
mov dx, OFFSET _msg
mov ah, 9
int 21H
;中略
_msg db '8086でお願いします。', 13, 10, '$'

25 :
mov ax,5690
mov bx,400
mov cx,302
mov dx,1f4
int 1b
cmp ax,b0
jnz $ 'nopに書き換えちゃえ〜

26 :
;FDプロテクト外しdsk?, RADIX 16 って付けてほしいにょ。
mov ax, 4cffH
int 21H ;逝ってよし(ぉ

27 :
mov bx,HANDLE
mov ah,45H
int 21H ;オマエモナー
>25の6行目axじゃなくてahだった(苦笑

28 :
日高徹/青山学 著
8086 マシン語秘伝の書(ISBN 4-7665-1079-8)
組み込み系のプログラマだけど、たまに読むと参考になります(w

29 :
mov ax,ip
sub ax,5
mov ip,ax

30 :
MOVF 0x20,W
MOVWF 0x21
BTFSS STATUS,Z
GOTO $+4
BSF STATUS,C

31 :
;>> 28
mov bx, ax
mov ah, 3eH
int 21H
;>>30 bitTestは80386から。

32 :
つーかマクロアセンブラなんかい!
CD 1B をとにかくサーチ。以上!

33 :
push cs
pop ds
mov dx,offset msg
mov ah,09h
int 21h
xor ah,ah
int 21h
msg:
db '逝ってよし','$'

34 :
pusha

35 :
そういや昔はアセンブラ使ってたな(笑)
REP LODSBで転送するところをREP LODSDに変えると4倍速だ(笑)
端数の補正は必要だけどね(笑) しまった、MMX以前の話だ(爆笑)

36 :
jmp $+2; パイプラインクリア

37 :
>>36
うわ、結構懐かしいワ(笑)
jmp addr;タスクスイッチ
こんなのはどうだ?(笑)

38 :
;>>37
;80386以降のみですか。
;板のローカルルールからすれば、Win3.1も桶っぽいので、
;こういうのもアリってことでいきますか。

39 :
;---------------------------------------------------------------
;【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 :
>>38
それはいいけど、オレは毎日出てこないから、あまり関係ないかも(笑)
>;80386以降のみですか。
駄目ですね。286を忘れちゃ駄目だよ(笑)
オレは286でプロテクトモードのイロハを独学したよ(笑)

41 :
リセットかけないとリアルモードに戻れないのな・・・286
プロテクトモードからDOSのルーチン使おう思うとそりゃもう大変。

42 :
>>39
掲示板にソース出してんじゃねーっ!、つーの!(笑)
でもさ、オレは大文字でソース書くけどな(微笑)
>>39みたいなアホは小文字で書いてるな(笑)
もしかすると>>39の道具も・・・○△□・・・なのか?(大爆笑)

43 :
>>42
個人攻撃に走るのやめたほうがいいよ。
忠告しとく。

44 :
>>41
それがチミの頭の悪いところ(爆笑)
じゃあ、戻らなきゃいいんだよ、わかるか、アホ(爆笑)
自分でプロテクトモード用ルーチン作ればいいだけだよ。あんたアホ?(大爆笑)

45 :
>>43
あんたにも忠告しとく(笑)
オレを敵に回すな(爆笑)

46 :
その件は「DOS+@で」という条件つきの
仕事でやってたからしょうがなかったのさ。
ところで、独学された成果ってどこかで発表したり
製品になったりしてないんですか?

47 :
>>40 286を使ったことは一度もなかったりするんで(汁
>>44
各種disk読み出しroutine作るのはる。
...が、リセットかけるよりはマシか。

48 :
;>>46
;286でプロテクトモード、しかも仕事ですか。
;プロていうのは厳しいんですね。

49 :

>>47
>286を使ったことは一度もなかったりするんで(汁
 なるほど(笑) プロテクトモードの学習用程度には良いと思うよ。
>各種disk読み出しroutine作るのはる。
 オレは外部I/Oルーチンは作らなかった(笑) ローダに読ませてマ
スクさせてたぞ(笑) ゲームプログラムだったからな(微笑)
ると言うより、8877の動作原理がわからず仕舞だったな・・・。

50 :
「リセット」って言っても、リセットスイッチ押すワケじゃないよ(笑)
単にリセットベクタにジャンプするだけだからね。そこから、レジューム
する間にオーバーヘッドが発生する事はしょうがないけどな(笑)

51 :
どうやらこのスレの住人は寝た様だな。
オレも消えるとするか(笑)

52 :
8877って何?

53 :
M$DOS 2.11 がライセンスフリーだったからフル活用したよ。
というかFD,HDD両対応のプログラム書こうとするとそれ以外無いし。
つーか jmp $+2 はPentium以降で死ぬと思われ。

54 :
うわ、粘着がここにも...

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

56 :
>>55
思い出した。ありがとう。
データバスの論理が逆になってるのは、MB8876だったと思う。
MZのFDCがMB8876で、制御プログラム書いた覚えがあるからたぶん間違いない。
X1はMB8877なのになあ。

57 :
;そして、生き残ったのは...。

58 :
>>57
オレだ(微笑)

59 :
>>56
8877か、NECが765だったな。
88とかのインテリジェント方式は内心、羨ましかったが・・・(微笑)

60 :
;>>59
;あれ、使いこなせますか。<ぜっぱち内蔵
;よく知らないんですが、スゴイですね。
;#新規って?

61 :
>>59
別にCPUとメモリが載ってた上にPC-8801mk2になって内蔵されてからは
アホやん!どこがインテリジェントやねん!と思ってました。
とかいいつつあの16KBのメモリのおかげでいろいろできたんですがね・・・。
ところで、その10年前のパソコン通信みたいなノリはわざとですか?

62 :
いかん。スレと違う話題になってきてる。
すんません>>1

63 :
>>61
ええと、わざとです(微笑)
>>60
おっと、メ-アド変えてなかったな、失礼(笑)
------------------------------------------------------------
出始めがVICだったので、普通のパソコンユーザーとは多分にうまく
いかないだろうが、知らない視点からも話す事を期待してくれ(笑)

64 :
AAMとかAADといったBCD関係の命令がありますが、
実際こういうのって、実務で使う事ってありましたか?

65 :
>>64
AAx命令は1桁の掛け算・割り算に使うものだよ。
実行結果を良く見てみると良い。
Z80に比べて最適化のテクニックが生み出しにくい86系CPUの
別の側面だろうな(微笑)

66 :
add byte ptr cs:[$+5],1

67 :
>>66
で、何がしたいの?オレにはわからない(微笑)
INC byte ptr CS:[$+5]
ってできたっけ?(微笑)
アドレッシングモード忘れたぞ(爆笑)

68 :
>AAx命令は1桁の掛け算・割り算に使うものだよ。
うん、それは知ってるんだけど、実際に実務に使ってる人って
いるんだろうかという疑問があったわけ。
Z80が長くて、DAA命令を使う事もあったんだけど、
ADD A,90H
DAA
ADC A,40H
DAA
という裏技的な16進ASCII変換にしか使ったことなくて
昔から、BCD演算が必要な場面って実際あるの?と思って
たわけです。

69 :
>>68
>うん、それは知ってるんだけど、実際に実務に使ってる人って
>いるんだろうかという疑問があったわけ。
 答えは極めて簡単。OA用途でアセンブラを使う場面はありえないか
ら[×]だろ?

70 :
;青木豊氏みたいなノリだ...

71 :
;データセグメント部分終了(笑)

72 :
>>68
?それで上手く変換されてるの?
AND 0FH
DAA
ADD 0F0H
ADC 040H
とかじゃなくて?
(下位4bitを'0'-'9','A'-'F'の16進ASCII文字に変換。このコード初めて見ると驚くね)
まだ俺が寝ぼけてて理解できんだけかもしれんが(と、逃げ道も作っておく)

73 :
AND A,0FH
DAA
ADD A,0F0H
ADC A,040H
こうだよな。マジ寝ぼけてるらしい・・・・

74 :
;
; AND 0FH
; ADD A,90H
; DAA
; ADC A,40H
; DAA
;
;でAレジスタの下位4ビットをASCIIの '0'〜'9', 'A'〜'F'に変換できるYO!
;(Z80でスマソ)

75 :
ちなみにMSX-BASICは内部でBCD演算してたよ。

76 :
わかった。
なるほど、わざわざ2回に分けて60h足すわけか。
>>72 の方がシンプルで短いじゃん、と思ったらANDはHビットをセットするから
DAAの前にOR Aとか入れる必要あるんだね。>>72-73 書いた時は気づきもしなかった。
しかしひどいな、>>73 でもまだ間違ってる。

77 :
自己書き換えのせいでPentiumで動かないプログラム萌え。

78 :
Z80から86へやってきてJPではまったやつは俺だけではあるまい

79 :
x86にRETZがないのが驚いた。でも今はx86使い…。

80 :
>>79
確かに。 8086に条件付リターン命令がないと知って、最初萎えたよ。

81 :
VZの構造化マクロを自分のプログラムでこっそり使ってました。

82 :
680x0系にはプロテクトモードがない。
そもそもバンク切り替えという概念がない。

83 :
>>82
はぁ?

84 :
>>83
君はモトローラー系CPU(68000以降)の事が理解出来てないようだな。

85 :
スーパーバイザモードとユーザーモード。

86 :
>>82
バンク切り替えとCPUのアーキテクチャは直接の関係はないのだが。
# アーキテクチャ上、バンク切り替えを使わないとどうにもならない
# CPUが存在したことも事実ではあるが。

87 :
MMUのことをMemory Mapping Unitと呼んでいたこともあったな(笑

88 :
君はセグメントの概念が理解できずにモトローラに逃げた口だね。>>84
確かに美しい実装とは言い難いが現状も変わらない。

89 :
もし68000で16MBを超えるメモリ空間を制御する必要が生じたら?

90 :
68030に乗り換える

91 :
>>89
FC2〜FC0 を利用するというのは?

92 :
>>89
68000にはちゃんとしたMMUなかったっけ

93 :
セグメントは別に悪いことではない。
8086の問題は1セグメントが64Kバイトしかなかったという点だ。

94 :
PowerPCにもセグメントあるしな。確か256MB。
8086は互換性重視の設計だからしかたないかも。
CPUにしろ本体にしろ、設計がクソでも互換性を重視したものが
生き残ってきてるしね。
互換性をある程度無視してもなんとかできるのは、巨大すぎる会社ぐらいか。

95 :
>>94
PowerPCのメモリ範囲は4GBですが何か?
そして分割して使う事がないからセグメントとは言わないよーだマヌケ。
これだからx86厨房は。悔しいからってガセネタ流すなよ。
所詮はCISC。

96 :
こういうスレがあると嬉しくなります
いろいろと勉強になります
うれしage!

97 :
>>95
うわっ、PowerPCでメシ食ってる俺が86厨房とか言われてるよー。
ひょっとして煽られてるのかもしれないけどマジレス。
PowerPCの資料見ればわかるんだけど、SR0〜15っちゅーレジスタが
あったりします。さて、この「SR」とは何の略でしょう?
モトローラのWebサイトから英語版はダウンロードできると思うんで
読んでみてください>>95
英文が読めなければ、ソフトバンクの「Inside PowerPC」のP71〜72他を
読むといいかな。この本はPowerPC初心者向けにとてもいいと思う。
(他にないってのもあるけど)
セグメントといえば有名な64KBの壁を想像される方が多いのですが、
PowerPCの「セグメント」は80x86みたいな難儀なもんではありません。
私が>>94での書き方もまずかったと思うけど、
「セグメントという言葉=80x86の64KB=邪悪」っていう誤解は
とっとと捨てていただきたいと思う。

98 :
Status Register?

99 :
Segment Register?

100read 1read
1read 100read
TOP カテ一覧 スレ一覧 2ch元 削除依頼
★PC8801に可能はない★ (135)
●NECのVU55L使ってる奴まだいる? (370)
【アミーガ】 復活!AMIGA総合スレ 【アミガ】 (779)
★M Z−700に可能はない [PART4] ★ (271)
日本パソコンの歴史について(77年〜93年まで) (159)
ヤフオクも駄目、4/1からレトロPC販売禁止?〜電気用品安全法 (206)
--log9.info------------------
【勝負】不覚にもワロタと言わせてやる【第11戦!】 (569)
女の賞味期限は30歳までだと思う (609)
■私は男のココを見て決める 2人目■ (783)
35歳無職 職歴無しからの社会復帰 8歩目 (815)
妻が浮気、殴ってDV扱いされる俺 (202)
30代 男のファッション 21 (210)
30代の趣味 (394)
中学生・高校生時代にブリーフ穿いていた人集合 (975)
朝鮮人=民主党=マスコミ=目的は日本侵略 (236)
子供の頃みたいな遊びがしたい (240)
30代後半で親と同居のヤツいる? (198)
正直、国際結婚が頭をよぎってる人→ (120)
1979・S54生まれの奴らのスレ (820)
結婚したがらない女性も増えている IN30代板 1 (569)
今日使ったお金報告 (200)
S49(1974)年Part44 もう38と思っておこうよ (101)
--log55.com------------------
【歌手】元「ICONIQ」伊藤ゆみ、エイベックス退所を発表 昨年韓国の事務所と契約
【薬物】沢尻エリカ被告初公判 傍聴券求め2229人が日比谷公園に列 倍率117倍!酒井法子さんの330倍が過去最高
【芸能】<島田紳助>ついに年内復帰か?宮迫や亮の活動再開が追い風に..果たして本気で芸能界復帰を考えているのか
【裁判】 沢尻エリカ被告、職業 「無職です」
【音楽】“ドライブ中の音楽”流す理由や聴いてる曲は?「邦楽」(88.7%)「アニメソング」(66.6%)「洋楽」(56.4%)
【サッカー】<ガンバ大阪>DF昌子源(トゥールーズ)を獲得へ…海外挑戦にひと区切りつけJでの再起検討
東出昌大、賠償地獄5億円超え!
【ビートたけし言いたい放題】<“芸能界暗黙のルール”を暴露!>「昔の審査はインチキ」