番地機械語ニモニック表記コメント
0 11101000 Shift 8 ;無駄な命令.ただしAccumulatorの内容は0になる
1 10011111 Store 31 ; Accumulator の内容を31 番地へ格納
2 01100001 Load 1 ; 1 番地のデータ(Store 命令) をAccumulator へ
3 01000110 Sub 6 ; 6 番地の内容(= 1) をAccumulator から引く
4 10000001 Store 1 ; 引いた結果を1 番地に格納
5 01100111 Load 7 ; 7 番地の内容(= 0) をAccumulator へ
6 00000001 Jump 1 ; 1 番地にジャンプする
7 00000000 0 ; 0 データの保管場所
このプログラムが停止するのはどんなときですか?
これを実行したら3分くらい止まらなかったのですが・・・
No.6ベストアンサー
- 回答日時:
----------
0 111 01000 Shift 8 ; 無駄な命令.ただしAccumulatorの内容は0になる
1 100 00111 Store 7 ; Accumulator の内容を7 番地へ格納
2 011 00001 Load_ 1 ; 1 番地のデータ(Store 命令) をAccumulator へ
3 010 00110 Sub__ 6 ; 6 番地の内容(= 1) をAccumulator から引く
4 100 00001 Store 1 ; 引いた結果を1 番地に格納
5 011 00111 Load_ 7 ; 7 番地の内容(= 100 00111) をAccumulator へ
6 000 00001 Jump_ 1 ; 1 番地にジャンプする
7 100 00111 Store 7 ; Accumulator の内容を7 番地へ格納
----------
0 111 01000 Shift 8 ; 無駄な命令.ただしAccumulatorの内容は0になる
1 100 00110 Store 6 ; Accumulator の内容を6 番地へ格納
2 011 00001 Load_ 1 ; 1 番地のデータ(Store 命令) をAccumulator へ
3 010 00110 Sub__ 6 ; 6 番地の内容(=100 00110) をAccumulator から引く
4 100 00001 Store 1 ; 引いた結果を1 番地に格納
5 011 00111 Load_ 7 ; 7 番地の内容(= 100 00110) をAccumulator へ
6 100 00110 Store 6 ; Accumulator の内容を6 番地へ格納
7 100 00111 Store 7 ; Accumulator の内容を7 番地へ格納
----------
0 111 01000 Shift 8 ; 無駄な命令.ただしAccumulatorの内容は0になる
1 000 00000 0 ; データ 0
2 011 00001 Load_ 1 ; 1 番地のデータ(= 0) をAccumulator へ
3 010 00110 Sub__ 6 ; 6 番地の内容(=100 00110) をAccumulator から引く
4 100 00001 Store 1 ; 引いた結果を1 番地に格納
5 011 00111 Load_ 7 ; 7 番地の内容(= 100 00110) をAccumulator へ
6 100 00110 Store 6 ; Accumulator の内容を6 番地へ格納
7 100 00111 Store 7 ; Accumulator の内容を7 番地へ格納
----------
1番地の命令が、書き換わり、
「Accumulator の内容を7 番地へ格納」し、
つぎに
「Accumulator の内容を6 番地へ格納」すると、
ループは終了します。
No.5
- 回答日時:
機械後のビットパターンを見る限りでは、8bitの中の
上位4bitをコマンド、下位4bitをデータとしている様に
みえるのですが...4bit CPU?
8bit CPUの場合だとコマンド・データ様に1~2バイト
アドレスに2バイト使用するので、質問にある様な番地
にはなりません。
番地 機械語 ニモニック表記コメント
0000 Shift 8 ;無駄な命令.ただしAccumulatorの内容は0になる
0001 8 ;(1byte データ)
0002 Store 31 ; Accumulator の内容を31 番地へ格納
0003 &H31 ;(2byteアドレス CPUにより格納方法が異なる)
0004
0005 Load 1 ; 1 番地のデータ(Store 命令) をAccumulator へ
0006 &H00001 ;(2byteアドレス)
0007
0008 Sub 6 ; 6 番地の内容(= 1) をAccumulator から引く
0009 &H0006 ;(2byteアドレス)
000A
000B Store 1 ; 引いた結果を1 番地に格納
000C &H00001 ;(2byteアドレス)
000D
000E Load 7 ; 7 番地の内容(= 0) をAccumulator へ
000F &H00007 ;(2byteアドレス)
0010
0011 Jump 1 ; 1 番地にジャンプする
0012 &H0001 ;(2byteアドレス)
0013
0014 0 ;データの保管場所
...どちらにしても何をしようとしているのか意図不明
コマンドの部分を書き換えようとしているみたいですが
その場合、動作は不定となります。
>これを実行したら3分くらい止まらなかったのですが・・・
逆に言えば3分で止まったのでしょうか?
#たまたまHALT(プロセッサの動作を停止)相当の値の格納
#された番地に辿りついた?
No.3
- 回答日時:
これは、組み込み用のCPUですかね、
むしろ、どうやって止めたかに興味がありますね。
通常、プログラムが無限ループに入った時の対処はまずはOSに依存します。
組み込みだと、OSなんぞは、ありませんでしょうからな~
No.2
- 回答日時:
31番地から0番地の内容を全て0にする。
ということで良いですか?1番地のStore命令は順次1減算されますからストアするアドレスは
31番地から0番地へ移動します(下位4ビットがアドレスなら)。
ところが、6番地を0にしてしまうと次に実行するときは
6 00000000 Jump 0 ; 0番地へジャンプ
となります。
0番地に戻って実行を続行すると、3番地の命令が
3 01000110 Sub 6 ; 番地の内容(=0) をAccumulator から引く
ですので、0を引くことになり1番地の内容が変化しません。
よって、この状態で無限にループする事になります。
No.1
- 回答日時:
プログラムアドレスとデータアドレスが別空間であるなら、永久ループだと思います。
機械語でしたら、CPUがわからないと回答できないとも思います。
(コメントが正しいとも限りませんし)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) 機械語に詳しい方 2 2022/07/10 12:06
- Visual Basic(VBA) ファイル全てを .xlsm に変更したところ、プログラムが途中で落ちてしまっています 17 2022/12/07 12:03
- 事件・事故 ガーシー容疑者にパスポート返納命令。なぜ? ガーシー容疑者だけ特別扱いなのか? 7 2023/03/18 08:16
- その他(コンピューター・テクノロジー) 量子コンピュータの動作原理がわかりません。同じビットが、1でも0でも有って良いだろうか? 3 2023/02/04 03:20
- C言語・C++・C# C言語の質問です。 以下の命令を実行するプログラムを作りました ①文字列aとbの長さを表示 ②aとb 1 2022/04/29 15:35
- Excel(エクセル) 【VBA】指定フォルダに格納中のテキストファイルをエクセルで処理し結果のエクセルを新規フォルダに保存 1 2022/03/25 14:19
- iPhone(アイフォーン) 【iPhone SIMフリー】ドコモ契約者です。「機種変更を自分でする方法」について、初歩的な質問で 10 2023/08/25 06:08
- Visual Basic(VBA) 指定月分の顧客データファイルを統合して並べ替え、所定の場所に貼り付ける 3 2022/09/10 07:55
- Visual Basic(VBA) 指定月分の顧客データファイルを統合して並べ替え、所定の場所に貼り付ける (再質問) 4 2022/09/14 22:51
- その他(ソフトウェア) Microsoft Store Guitar Pro購入後の質問 1 2022/08/11 17:15
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
追加クエリで重複データなしで...
-
【VB】セルが空になるまで処理...
-
Excel VBAのユーザーフォームで...
-
VBAでの行数を揃える方法
-
マクロでファイルを読み込み、...
-
csvデータ不要列の削除をbatフ...
-
pandasでsqlite3にテーブル作成...
-
【SQL】他テーブルに含まれる値...
-
フラグをたてるってどういうこ...
-
SELECT INTOで一度に複数の変数...
-
エラーを起こす方法
-
truncate tableを使って複数の...
-
UPDATEで既存のレコードに文字...
-
Accessで今日から5日後
-
selectの単純繰り返し
-
timestampのデータはどのように...
-
MySQLで数字の値のもののみを取...
-
sqlに記述できない文字
-
SELECTした結果に行番号を求めたい
-
既存データをINSERT文にして出...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
pandasでsqlite3にテーブル作成...
-
csvデータ不要列の削除をbatフ...
-
Excel VBAのユーザーフォームで...
-
【VB】セルが空になるまで処理...
-
ACCESS VBAでSeekメソッドの処...
-
追加クエリで重複データなしで...
-
JDBCを使ってdate型へのINSERT...
-
自作アプリからAPIで他のアプリ...
-
EXCELで外部データの取り込みが...
-
ListBoxにAddItemする際、重複...
-
データテーブルの使い方に関して
-
エクセル 2つの列にある値の完...
-
マクロでファイルを読み込み、...
-
VBAでの行数を揃える方法
-
【ExcelVBA】範囲選択の方法に...
-
一週間前から,今までVBAで行っ...
-
機械語
-
PHPとMYSQL、DBのデータが空の...
-
Accessでパラメーター以外の削...
-
エクセルで去年のデータを今年...
おすすめ情報