1read 100read
2012年4月昔のPC59: 8086アセンブラで会話しよう。 (274) TOP カテ一覧 スレ一覧 2ch元 削除依頼
95年のマックはいくらが適正価格? (150)
ANEX98は(・∀・)イイ! (632)
ANEX98は(・∀・)イイ! (632)
【空想】もしあの機種がもっと続いていたら【妄想】 (263)
ThinkPad220と共に (183)
ここだけ永久に1995年なスレ【Win95 OSR 5】 (680)

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元 削除依頼
★ まだデゼニランドをクリア出来ないやつの数→ (389)
秋葉原で逝った御食事処 一軒目 (905)
PC9801シリーズの音源 (205)
FMシリーズを語るスレ Part9 (207)
ゲームのP〜個しまくりました(゚∀゚)アヒャ って奴→ (415)
テクノポリスの美少女CG (922)
--log9.info------------------
Sandboxie Vol.3 (152)
スパイウェア削除ソフトAd-Aware SE その40 (500)
!ninja テストスレ 【test】 inセキュリティ part18 (959)
対エシュロンにもっとも効果的な手段は? (500)
【DeepGuard】F-Secure総合 Part21【マルチエンジン】 (335)
■BitDefender 31 (634)
ネットでストーカー被害に合って困っています。 (265)
Online Armor Personal Firewall Free Part4 (439)
Win XPのファイアーウォール (866)
Emsisoft Emergency Kit (276)
【トレンドマイクロ】スパイバスター2006(仮称)β版 (326)
【VB】ウイルスバスター2008 Part038【TrendMicro】 (572)
トレンドマイクロ スパイバスター part1 (439)
ノーガード VS ウイルスバスター (147)
【総合】サンドボックス 砂箱 sandbox (232)
トレンドマイクロ「( ´,_ゝ`) 賠償?しねぇよ(笑)」 (366)
--log55.com------------------
少しずつゲームを作るスレ
マザー2.5を作ろうぜ!
エミュ鯖の製作
◆ ツクールは終わった ◆
一人でBF3級のグラのゲームを作りたいのですが
【フリー】モーション付きXファイル出力【ツール】
おい貴様ら!園芸シュミレーションって作れますか?
「ゲーム学会」発足記念スレ