トップページ⇒tech
1001コメント328KB

アセンブラの宿題質問スレ

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2006/10/18(水) 00:04:05
アセンブラの宿題ができないときに、
アセンブラ好きのお兄さんに尋ねるスレ。

・必ずCPUの名前を書くこと!
・情報を小出しにしない。書ける情報は全て書いた方が得だよ。
0322デフォルトの名無しさん2007/02/19(月) 13:40:24
>>321
レスありがとうございます

プログラムが16進数で書いてあり、読める形にしたいのですが
どうしたら、ふるいMPUなのでコード表もありません、
ウインドウズ環境で動く逆アセンブラのソフトないですかね?
0323デフォルトの名無しさん2007/02/19(月) 14:21:22
ベクターにこのようなソフトありますが
使い方わかりません
http://www.vector.co.jp/soft/dos/prog/se358557.html

お願いします
0324デフォルトの名無しさん2007/02/19(月) 20:16:15
>>322
> どうしたら、ふるいMPUなのでコード表もありません、
英語でいいならフリースケール・セミコンダクタの英語サイトに行けば無料配布してるぞ。
ProduntsからHC11ってのを選べばいろいろ出てくる。
0325デフォルトの名無しさん2007/02/19(月) 20:17:10
Productsな。cが横にこけた。
0326デフォルトの名無しさん2007/02/20(火) 04:56:38
実行コードしか残ってないソフトを逆アセンブルして修整したい、とかそういう事情?
8bitのソフトなんてちっちゃいんだから、作っちゃったほうが手間要らないのでは?
0327デフォルトの名無しさん2007/02/20(火) 06:22:06
6809の正常進化版? 6809用だったら古いフロッピーに一式入っているんだが。
問題は、今時5.25"を読める環境がないことだなw

勉強がてら、自分で作るのお勧め。
なーに、バイナリモジュールを16進ダンプかHEXフォーマットかSフォーマットにしてやって、
それを入力に使えばスクリプト形言語でちょちょいのぱーだよ。
0328デフォルトの名無しさん2007/02/20(火) 13:47:34
>>326
>>327
ご指導ありがとうございます
初心者すぎて、ちょっと無理みたいです、
データアップロードしますので、どなたかお願いします
0329デフォルトの名無しさん2007/02/20(火) 18:57:41
まて、今時初心者が何で6811なんか触る?
0330デフォルトの名無しさん2007/02/21(水) 03:11:50
>>328
アップロードします
http://up.kabubu.net/cgi/up2/upload.php
ファイル名 ”68hc11バイナリ
よろしくお願いします。
0331デフォルトの名無しさん2007/02/21(水) 03:15:42
すいません
ファイル名”バイナリーファイル68hc11”でした
0332デフォルトの名無しさん2007/02/21(水) 20:36:21
Disassembler拾ってきて試してみたが
これってプログラムじゃなくて何かのデータなんじゃ・・・?
0333デフォルトの名無しさん2007/02/22(木) 00:19:17
確かに、3/4はデータっぽいね。
0334デフォルトの名無しさん2007/02/22(木) 02:57:35
>>332
>>333
どこかにアップしてもらえませんか?
よろしくお願いします。
03353332007/02/22(木) 06:43:42
アップも何も、私ゃダンプ眺めただけだがね。
32KBのうち、オフセット0x1d1cから0xffが集中して入っているし、
オフセット0x20e0からは3バイト+1-2バイトのタグ型データ構造に見えるし、
他にもいかにもデータって感じでバイト列が並んでいるがね。
0336デフォルトの名無しさん2007/02/22(木) 13:59:22
一応RTSを中心にしてその前後を見て回ったけど、意味のあるコードが見つからなかった。
全部Bxxとかの条件分岐だけで飛んでたりしたら嫌だなぁ。
眺めてるとだんだん無圧縮のスプライトパターンデータとかに見えてくる。
これの出所ってどこ?
0337デフォルトの名無しさん2007/02/23(金) 02:33:30
>>336
ボッシュの8ビットCPUです。
なんとかなりませんか?
0338デフォルトの名無しさん2007/02/23(金) 02:36:33
経緯も何も判らんでなんとかなりませんか言われても、なんともなりませんがな。
0339デフォルトの名無しさん2007/02/23(金) 03:00:02
ECUのROMか?
0340デフォルトの名無しさん2007/02/23(金) 03:29:25
ECU?車のコンピュータみたいですが。
エンジンコントロール用みたいです、
0341デフォルトの名無しさん2007/02/23(金) 09:22:12
だとしたら暗号化ぐらいされてるかもよ。ROMから逆アセンブルされることも想定して。
もしそうなら暗号化キーがなきゃお手上げ。
0342デフォルトの名無しさん2007/02/23(金) 12:29:26
っていうか、昔から勘違いしてる奴が多いけど(PC-8001の例の事件の影響だろうけど)
逆アセンブルしたソースを人が読める形に修正する、なんて殆どの場合不可能だよw

可能な場合なんてむしろ例外的。
それは人的資源の質や量の問題と無関係に、ね。
0343デフォルトの名無しさん2007/02/23(金) 12:53:31
いや寧ろ、逆アセンブルしたものが読めるようになってもハード構成やOSの仕様などが判らんとお手上げなケースが多いわけで。

>>337
エンジンコントロール用と言ったって、アクセル開度制御しかしないのと空燃比から加給器の制御までするのとでは全然違うわけだが。
少なくとも可読文字で数字が並んでたりするので、自分でダンプくらい眺めなさいよ。
0344デフォルトの名無しさん2007/02/23(金) 13:03:09
こことかどうよ

【チューン】ECUって難しいの?【仕上げ】
http://hobby9.2ch.net/test/read.cgi/car/1161445315/l50
0345デフォルトの名無しさん2007/02/24(土) 03:47:57
>>341
暗号キーは無いみたいです、

土日でイロイロ調べてみます、
お世話になるかもしれませんがよろしくお願いします
0346デフォルトの名無しさん2007/02/24(土) 18:09:35
犯罪の手助けをしろと言うのですね。
0347デフォルトの名無しさん2007/02/25(日) 05:15:02
経過報告します。
ハンドアセンブルしようとデータシート探しても見つからず、、、、

鬱
0348デフォルトの名無しさん2007/02/25(日) 17:33:23
>>346
何の罪になると言うんだ?
0349デフォルトの名無しさん2007/02/25(日) 18:54:54
>>348
逆アセ自体を禁止しているものであれば、、ということだろう。
0350デフォルトの名無しさん2007/02/25(日) 20:49:28
まあ普通契約で禁止されてるな。
少なくとも「是非やってください」と言うところはない。
0351デフォルトの名無しさん2007/02/26(月) 08:27:27
契約で禁止されてたって、契約違反にはなっても犯罪にはならないでしょ。
法律で禁止されてるのを破るのが犯罪。
0352デフォルトの名無しさん2007/02/26(月) 21:32:32
すごい斬新な発想だなw
0353デフォルトの名無しさん2007/02/26(月) 23:27:06
>>351
間違ってますよ、その認識。
0354デフォルトの名無しさん2007/02/27(火) 10:08:41
>>353
よければ詳しく。
0355デフォルトの名無しさん2007/02/27(火) 13:18:38
>>352,353が認識している犯罪の定義を知りたい。
0356デフォルトの名無しさん2007/02/27(火) 16:23:38
MIPSアセンブリを使って $f12にあるfloat型のインプットをASCII ストリングに変換する
関数を書きたいです。 $a0に変換されたストリングを保管するアドレスが渡されるという前提です。
0357デフォルトの名無しさん2007/02/27(火) 16:24:24
関数の名前はitofです
0358デフォルトの名無しさん2007/02/27(火) 18:08:50
逆アセンブラて、してはいけないのですか?
アセンブラの勉強のために、質問してただけなんですけど。
大丈夫ですよね、、、、、

で、結果報告です、
ハンドアセンブラしようとデータシート探しましたが見つからず
おまけに、68hc11ではなくて、6803?の疑問が浮上しました
1993年に68hc11発売されていましたか?教えてください
0359デフォルトの名無しさん2007/02/27(火) 18:42:22
>>358
1984年発表。
0360デフォルトの名無しさん2007/02/27(火) 23:17:56
問題
a=b+cを実現するためのアセンブラを示し、その横にマシン語を示すこと
ただし、aは100h番地、bは10h番地、cは20h番地に割り当てられているとする(hは16進数の表現の意味)

おねがいします
0361デフォルトの名無しさん2007/02/27(火) 23:26:29
>>355
まったく・・・
犯罪:罪を犯すこと。また、犯した罪。
罪:法律的・道徳的・宗教的な規範に反する行為。など
つまり、違法かどうかと犯罪とは必ずしも対ではない。
0362デフォルトの名無しさん2007/02/28(水) 00:11:29
おいおいアホだろw

激しくスレ違いだけど、契約って行為そのものが法律行為だから
これを履行しないことは違法性を構成するに決まってるじゃんw

っていうか、法的拘束力のない契約にそもそも何の意味があるんだよw
0363デフォルトの名無しさん2007/02/28(水) 00:38:19
>>362
契約は、必ずしも法律行為ではないよ。
0364デフォルトの名無しさん2007/02/28(水) 04:19:47
エンジニアが逆アセンブルするのは必然だが
素人が趣味で解析したがるのは迷惑。
自分のマニアっぷりを自慢するために解析結果を公開したりするし。
0365デフォルトの名無しさん2007/02/28(水) 04:23:00
>>358
心配ならメーカに問い合わせたら?
つーか、アセンブラの勉強のためなら逆アセンブルするのは無意味だよ。
前から何人も書いているけどコード部とデータ部の区別やら環境やらが判らんと意味を為さないし。
そんなことよりも、アセンブラの勉強のためなら素直にアセンブラで書かれたソースを読めばいいじゃない。
0366デフォルトの名無しさん2007/02/28(水) 05:45:41
>>360  こんなんでいいの?
;  a=b+cを実現するためのアセンブラを示し、その横にマシン語を示すこと
;  ただし、aは100h番地、bは10h番地、cは20h番地に割り当てられているとする
            CSEG
0000 2A1000    lhld    010h   ; b
0003 EB       xchg
0004 2A2000    lhld    020h   ; c
0007 19       dad    D
0008 220001    shld    0100h  ; a=b+c
000B         END
0367デフォルトの名無しさん2007/02/28(水) 15:07:48
>>366
ありがとうございます!

とても助かりましたー
0368デフォルトの名無しさん2007/03/02(金) 19:32:51
68hc11のコード表 激希望
アップロードお願い
0369デフォルトの名無しさん2007/03/02(金) 20:04:42
検索しろよ
0370デフォルトの名無しさん2007/03/03(土) 02:29:30
>>368
オペコードマップ
ttp://home.earthlink.net/~tdickens/68hc11/68hc11_opcode_map.html

命令表
ttp://home.earthlink.net/~tdickens/68hc11/68hc11_opcode_map.html

どっちも英語ではあるけど、表だから問題なく読めるよね。
0371デフォルトの名無しさん2007/03/03(土) 04:35:10
どっちもオペコードマップになっている希ガスw
ってことで、ここからオペコードマップにも命令リストにもアクセスできる。
ttp://home.earthlink.net/~tdickens/68hc11/docs_references.html
0372デフォルトの名無しさん2007/03/03(土) 13:34:21
>>370
>>371
ありがとうございます、今週は進むと思います
0373デフォルトの名無しさん2007/03/04(日) 23:58:34
>>372です
今週は少し進みましたが、、、、、
逆アセンブラソフトほしいn

こういうソフト見つけましたが使えますかねー?
http://down.upsdn.net/html/1/1.html
0374デフォルトの名無しさん2007/03/05(月) 10:51:16
ウザ
0375デフォルトの名無しさん2007/03/05(月) 10:52:01
勉強が目的なのに楽ばかり考えてどうすんだ?
逆アスくらい自力でできるだろうよ。

って、元辿って読んだらリバースエンジニアリング目的かよ。
0376デフォルトの名無しさん2007/03/05(月) 10:56:37
最終的には、俺たちにチューンしてくれと泣きついてな
0377デフォルトの名無しさん2007/03/07(水) 03:41:12
6×10の計算なんですがどうしても答えがでません。
修正お願いします。。
(3回目のLOOPでゼロフラグが立たない理由もお願いします)    

ORG 8000H
XOR A
LD B,06H
LD C,0AH

LOOP: LD D,A
LD A,C
AND 01H
JP Z,SKIP
LD A,D
ADD A,B
LD D,A

SKIP: SLA B
SRA C
JP NZ,LOOP
LD A,D
LD (8200H),A
JP 0000H
     END
0378デフォルトの名無しさん2007/03/07(水) 04:04:51
実行してないけど、多分こうじゃない?
LOOP: LD D,A
LD A,C
↓
LD D,A
LOOP: LD A,C

JP Z,SKIPでZが立ってる時って、A=0だろ。そのままJP NZ,LOOP → LD D,A(D=0) になってるように思う。

あとSRA Cって10→5→2→1→0
0379デフォルトの名無しさん2007/03/07(水) 06:06:59
素直にCをB回足せばいいのに
0380デフォルトの名無しさん2007/03/07(水) 06:17:37
↑馬鹿
0381デフォルトの名無しさん2007/03/07(水) 11:38:13
先生からもらった関数が動かないんですが・・・
0382デフォルトの名無しさん2007/03/07(水) 11:49:44
>>381
で、宿題は?
0383デフォルトの名無しさん2007/03/07(水) 16:41:43
>>380 だって6×8ならそのほうがクロック少ないじゃん(w
0384デフォルトの名無しさん2007/03/07(水) 22:12:52
訂正されたのを実行しましたがやっぱり答えがあいません。
ちなみに答えは12+24+48=84になってしまいます。
24を足しているのがおかしいのです。
3周目のAND 01Hで0010Hと0001HをANDした結果Zフラグが立って
スキップにいけば問題解決なんですが、スキップに飛びません。
Aレジスタの中身を見てみるとちゃんと0000HなのですがZフラグが
立ちません。今みてみるとHフラグは立っていました。
なぜZフラグが立たないのでしょうか
0385デフォルトの名無しさん2007/03/07(水) 22:46:27
そりゃぁあんた、ZフラグはANDなんかじゃ勃たないだろよ。
0386デフォルトの名無しさん2007/03/07(水) 23:28:04
>>384
CPU壊れてるんじゃね?
0387デフォルトの名無しさん2007/03/07(水) 23:28:19
そもそも何のニーモニックなのか最初にはっきり言えよw
Z80?

>>385
A=0で立たないフラグはもはやゼロフラグじゃないだろw
0388デフォルトの名無しさん2007/03/08(木) 04:19:40
ANDなんかじゃダメなんだ。もっと奮い立つようなものじゃないとw
0389デフォルトの名無しさん2007/03/08(木) 05:23:49
>>384
アセンブルしたコードを貼って味噌。HEX出力でもバイナリダンプでもいいから。
#つーか、なんでjr使わないでjp使っているんだろ。
0390デフォルトの名無しさん2007/03/08(木) 07:25:45
8085じゃないの?
0391デフォルトの名無しさん2007/03/08(木) 07:34:53
Zilogニモニックで8080/8085はないだろうよ。
#8080は互換性あるけど、8085は(8085で追加されたインストラクションが)互換性ないし。
03923902007/03/08(木) 07:59:33
ニモニックはZ80らしいですね。Hフラグってハーフキャリーフラグのことかな?
lstをそのまま貼ると崩れちゃうんで、スペースを全角に直して貼ってみます。
         ORG 8000H 
8000 AF     XOR A 
8001 0606    LD B,06H 
8003 0E0A    LD C,0AH 

8005 57  LOOP: LD D,A 
8006 79     LD A,C 
8007 E601    AND 01H 
8009 CA0F80   JP Z,SKIP 
800C 7A     LD A,D 
800D 80     ADD A,B 
800E 57     LD D,A 
               
800F CB20 SKIP: SLA B 
8011 CB29    SRA C 
8013 C20580   JP NZ,LOOP 
8016 7A     LD A,D 
8017 320082   LD (8200H),A 
801A C30000   JP 0000H 
801D       END
03933902007/03/08(木) 08:22:45
論理の流れはよさげですけどねえ・・・
LOOP:時点での
     D   C   B    足し算
1回目 0   1010 000110 足さない
2    0   0101 001100 足す
3    0Ch 0010 011000 足さない
4    0Ch 0001 110000 足す
足したあと、Cregを右シフトで0になるから
     3Ch 0000 1100000 
こういう展開を期待してるわけですよね?
0394デフォルトの名無しさん2007/03/08(木) 08:39:56
元質以外が貼って何の意味があるんだよ。
0395デフォルトの名無しさん2007/03/09(金) 04:37:18
元質の人はパニクっててそれどこじゃないかと思って。元質の人の参考になるかどうか
判らないけど、同じ8bitの掛け算で8085のclibに使われてるコードを貼っときますね。
レジスタ使い・8回loopするとかが違ってるけど、こちらはサイズ優先の工夫がされてるみたい。
MULAB:  ;   A*B-->A(8bit)
00F0 E5    push hl
00F1 67    mov h,a
00F2 AF    xra a
00F3 0E08   mvi c,8
00F5 87    add a
00F6 29    dad h
00F7 D2FB00 jnc 00FB
00FA 80    inr b
00FB 0D    dcr c
00FC C2F500 jnz 00F5
00FF E1    pop hl
0100 C9    ret
0396デフォルトの名無しさん2007/03/09(金) 22:18:38
みなさんありがとうございます!!
やりたいことは>>393 さんの通りです。
正直どう修正すればいいのか分からずじまいでした。
手直しまでしてもらいましてありがとうございます!
今から参考にして直してみます
0397デフォルトの名無しさん2007/03/10(土) 06:45:46
判ったら結果書いてね♪
0398デフォルトの名無しさん2007/03/11(日) 15:19:35
リテラルについての質問なんですが、
たとえば、論理加算で、

ADDL GR1,=100  これはできますよね?

ADDL GR1,=#FFFF こんなように16進数を使うことはできるんですか?
0399デフォルトの名無しさん2007/03/11(日) 15:28:55
だからさあ、何のニーモニックかぐらい書けよ
俺様がやってることが世界の全てとでも思ってるのか?w
0400デフォルトの名無しさん2007/03/11(日) 17:29:57
16進のリテラルは0ABCDhのように頭ゼロ、末尾にhをつけて書くことが多いですよ。
頭のゼロで「数値リテラルであってラベルでない」とアセンブラが認識できるから。
cみたいに0xで始まる書き方も許せばいいのにと個人的には思うけど、あまり見かけません。
0401デフォルトの名無しさん2007/03/11(日) 17:39:43
>>400
>0xで始まる書き方も許せばいい
これは逆に、c で0Ahや10bという書き方を許さないのが疑問なんだが。
0402デフォルトの名無しさん2007/03/11(日) 17:44:04
だからアセにもcにいろいろあるんだよ。
自分の身近な物が世の中の全てだと思う奴のことを「セカイ系」って言うらしいけど
最近確かにこういうセカイ系タイプって増えてるな。

リテラルの書き方なんてアセのメーカーによってマチマチじゃん。
マイコン系ならcでもビットワイズのリテラルを許すものもあるし。
0403デフォルトの名無しさん2007/03/11(日) 17:55:43
>>402
ここでいってるcはANSIだろう。
asmはいろいろだが。
0404デフォルトの名無しさん2007/03/11(日) 18:15:52
>>398
まあ、エスパーの漏れ様が答えてやると、
 仕 様 く ら い 読 め
ってことだな。

2.5 機械語命令
adr
アドレスは,10 進定数,16 進定数,アドレス定数又はリテラルで指定する。
リテラルは,一つの10 進定数,16 進定数又は文字定数の前に等号(=)を付けて
記述する。CASL�Uは,等号の後の定数をオペランドとするDC 命令を生成し,そ
のアドレスをadr の値とする。
0405デフォルトの名無しさん2007/03/11(日) 23:24:05
まあ、アセンブラ=CASLとかアセンブラ=x86とか思ってる馬鹿には来て欲しくないね。
0406デフォルトの名無しさん2007/03/11(日) 23:29:04
アセンブラ=6809
0407デフォルトの名無しさん2007/03/12(月) 00:53:05
アセンブラ=プライスレス
0408デフォルトの名無しさん2007/03/13(火) 19:20:14
俺なんか、[]つけるのか#つけるのかHつけるのか0xつけるのか$つけるのか
ソースとデスティネーションが右左のどっちか、
リテラルとメモリのラベル、オフセットなどの区別の仕方はどうなってるのか、
そういうのは必ずマニュアルを見て確認してるぞ。
たまにアセンブラのマニュアル忘れてくれる営業さんがいるんだが、
インラインアセンブラとか使うときにどーしろっつーんじゃい。

アセンブラを勉強するなら、環境によってみんな文法が違うってことをまずはじめに覚えろ。
それができたら質問してよろしい。
簡単に言うと、「まず、どのCPUを使うのかを書け!わからなかったらアセンブラに手を出すな!!」
0409デフォルトの名無しさん2007/03/14(水) 05:12:06
>>396はどうなったのかな?
0410デフォルトの名無しさん2007/03/14(水) 08:13:35
アセンブリ言語の標準規格って全然ないのかな。
dest/src の順番すらアセンブラによってまちまちだし。
0411デフォルトの名無しさん2007/03/14(水) 14:46:23
アセンブラどころか命令によってまちまちだったりするぞ
0412デフォルトの名無しさん2007/03/14(水) 15:22:06
まま、それがASMのいいところ・・・
0413デフォルトの名無しさん2007/03/14(水) 18:21:20
へたに標準規格作られてもさぁ、gas使う時みたいな違和感を感じるだけなんじゃないかね?
個人的にはソース・デストの順が好き。
0414デフォルトの名無しさん2007/03/15(木) 04:40:28
IBMが←だったので、当時の互換機はそれを真似したが、
その後マイコンの時代になると→がメジャーになってきたね。
0415デフォルトの名無しさん2007/03/15(木) 07:58:03
mov 系と LD/ST系があってだな
0416デフォルトの名無しさん2007/03/15(木) 10:18:39
load reg, mem
store reg, mem
の類は同じニモニックセットでも矢印の向きが変わる典型って訳だな。
0417デフォルトの名無しさん2007/03/16(金) 18:43:47
レジスタとアドレスを要求するOPでは
左レジスタの方が感覚に合うなあ
0418デフォルトの名無しさん2007/03/16(金) 20:31:12
左レジスタって意味わかんないだろw
0419デフォルトの名無しさん2007/03/17(土) 22:15:52
お前だけだろ。

「右」「左」が区別できる奴なら普通わかると思うが。

一般的な言い回しとは思わないけど。
0420デフォルトの名無しさん2007/03/17(土) 22:18:58
そんなことないでしょ。分かるのは恐らくエスパだけ。もちろんこれ逆説的表現ね。
左srcとか左destなら話も分かるが、左レジスタって一体何だよw
0421デフォルトの名無しさん2007/03/17(土) 23:06:57
>>419
    /::::i::::、:::ヽ、:::::\:ヽ:\::::::ヽ:::、::ヽ::、:',
    /::i|::l::ト、ヽ::、:::ヽ:、::::::\::ヽ::::l::::ヽ::i:::i:::!
   /:/:!:::!:|::ヽ:\ヽ::::、:\::::ヽ:::ヽ!::::::i::|:::!::!
   !ハ::|::::i::l:|心、:ヽ::\:ヽ_\、\:::ヽ:::|!::|:|i 駄目だ こいつ・・・
    i、:!:|:、N{、ヒjヽゝ\ヾイ ヒj >、ヽi:、|!:|:l
     ヽ:!::トヽ ̄ l! `  ` ̄´ |::l::|:|j:,!:!  早くなんとかしないと・・・
      ト、::! u         j |::/lj:::!リ
        ヾ、  丶 -    u リイ:|リ
        リヽ ‐、ー- 、_   /イ:::i
       rー'"ト:l゙、   ̄   ./  , |::!
      / ヘ ヾ ヽ、 _,. '   / |:
■ このスレッドは過去ログ倉庫に格納されています