質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Q&A

2回答

2960閲覧

6502 Assembly Language の読み方がわからない。

TomofumiKimura

総合スコア65

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

0グッド

0クリップ

投稿2017/06/05 10:54

編集2017/06/06 01:46

今Assembly Language のテスト勉強をしているのですが、少し自分の理解が合っているのかがわかりません。それぞれのコードが何をしているのかを書いて見たのですが、答えは合っているのでしょうか?dcbの部分がわかりません。6502 のmnemonics のリストにはなかったので。お願いします。。。

jmp MAIN // MAINに移動。

INPUT: INPUT レーベル
dcb $01 __???わかりません
__
RESULT: // RESULT レーベル
dcb $00 // ??? わかりません。

MAIN:// MAIN レーベル
lda INPUT // a をINPUTに保存
pha // stack に加える。・???
jsr METHOD // METHODを呼ぶ??
sta RESULT // a をRESULT に保存??
pla // a を受け取る??

DONE:
jmp DONE // forever loop??

METHOD:
tsx // s をx に転送
lda $0103, x // わかりません。。。
clc // わかりません。
adc $0103, x // わかりません。
rts // わかりません。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

daive

2017/06/05 11:09

「Assembly Language のテスト勉強」をしているのであれば、アセンブラなり、CPUの仕様が解るのでは?アセンブラは、CPUに密着した言語ですので、ターゲットCPUが何か?アセンブラは、どこの何を使うのか?情報処理技術者試験用であれば、仮想CPUと、それ用のアセンブラだし。
TomofumiKimura

2017/06/05 11:23

あ、大学のcomputer science のテスト勉強です。。。わからないからここで聞いています。
guest

回答2

0

naomi3 さんが、殆ど説明されているので、
$:言語によって、&Hだったり、0X だったり、16進表記の記号と同じ、
ちなみに、アセンブラによっては、16進表記ではなく、8進表記のものもあるので、注意
Z80、8080などは、8進表記で表現すると、その命令がどのレジスタやハードを操作しようと
しているのかが、直ぐにわかる様になっています。
⇒当時は、日立始め、各社が独自ニーモニック表記を採用していたり、独自クロス開発環境があったり
混沌の時代でしたので、、、
また、償却終わってないから、なんて腐った理由で、
今でいう開発ホストが、10Ⅱで、独自アセンブラだったりw。

検索ワード:6502 アーキテクチャー
で、
MOS 6502:https://ja.wikipedia.org/wiki/MOS_6502
が探せると思います。そこの最下段のリンク
6502.org:http://www.6502.org/
Documents Archive
http://www.6502.org/documents
から、必要な資料を参照してみてください。

Wiki の記述の、概要部分のうち
0から255番地までのメモリ(ゼロページ)を1バイト少ないコードでアクセスできる
アドレッシングモードが豊富 Xレジスタでインデックストインダイレクト、Yレジスタでインダイレクトインデックストと動作が違う
は、重要な部分です、実際扱う事は無いと思いますが。

当時のCPUで面白いのは、
東芝の12ビットCPU(PDP-11コンパチ命令)、
TIのCPU(超独自)
NS32シリーズ
MC6809:OS-9で、1MHzのCPUなのに、TSSで運用できた。

OSでも、FLEX(6800/6809版CP/M)、MDOS、
TurboDOS(MultiCPU:Z80用OS)、歴史に埋もれた種々雑多。

投稿2017/06/06 07:11

編集2017/06/06 07:18
daive

総合スコア2028

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ターゲットCPUが何かがわからなければ、確かなことはわかりません。

勘です。保障しません。
これ以外はわかりません。

jmp MAIN ( jump MAIN ) MAINへ飛ぶ
lda INPUT ( load INPUT onto accumulator ) メモリINPUTからデータをアキュミュレータ・レジスタに読み込む
pha ( push accumulator ) アキュミュレータ・レジスタのデータをスタックにプッシュする
jsr METHOD ( jump sub-routine METHOD ) サブルーチンMETHODへ飛ぶ
sta RESULT ( store accumulator into RESULT ) アキュミュレータ・レジスタのデータをメモリRESULTに保存する
pla ( pull accumulator ) スタックからデータをアキュミュレータ・レジスタにプルする
clc ( clear carry flag ) 繰上げフラグを0にクリアする
adc ( add with carry flag ) 繰上げフラグと共に加算する
rts ( return from sub-routine ) サブルーチンから戻る

dcb $01 (define ? byte 01) アセンブラの疑似命令、ここのメモリにバイト・データ 01 を置く

大学のcomputer scienceなら、オリジナルCPUの可能性があります。
先生に訊くのが最も正確と思います。

投稿2017/06/05 13:04

naomi3

総合スコア1105

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

TomofumiKimura

2017/06/06 01:31

ありがとうございます。ターゲットは6502であると思います
cateye

2017/06/12 06:48

"6502 アセンブラ"で検索すればかなりヒットします。ファミコンが有名ですねd^^
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問