こんにちは。大学で情報を専攻していた者です。
SEP-Eというcpuには詳しくないのですが、今のところ回答が付いていなかったので、こうかな?と思うものを書いてみました。
前半がプログラムの内容とレジスタ内容の遷移で、後半が答えです。((3)は「なし」が続いてしまったので、ちょっと自信ないです……。)
詳しめに書いてみたので、読んでいただいて怪しいところがあればご指摘ください🙇♀️
IT
มัธยมปลาย
3問とも計算方法も答えも分からず、質問させて頂きました。
教えていただけると幸いですm(_ _)m
[3]表 2.1の命令を持つSEP-E の CPU が、あるプログラムを7000番地から実行開始して
数命令動いたところで、現在は命令フェッチ前の状態にあるとする。 この時、汎用レジスタの値
は表 2-2 主記憶装置(メインメモリ)の内容は表 2-3 のようになっている。 なお、レジスタの内
容および番地はすべて16進数である。 以下の設問に答えなさい。000円
2005
LOOT
80001
表2.1
命令一覧表(一部抜粋)
P-E
ニモニック
TVCM 動作概要
0005
NZ V C*
|ADD, F:T
加算 (T+F→T)VOY
* * * *
|AND, F:T
ビット毎の論理積 (TAF→T)
0000
** 0-
BIT,F:T
ビット毎の論理積 (TAF, フラグ変化のみ)
* * 0-
CMP,F:T
比較 (T-F, フラグ変化のみの減算)
* * * *
DEC,D-:T
値を1減らす (T-1→T)
* * * *
|HLT, D-:D-
実行を停止する
|INC, D-:T
|JCY,F:D7
値を1増やす (T+1→T)
|C=1のときジャンプ (F→(R7) if C=1)
|JMI,F:D7 |N=1のときジャンプ (F→(R7) if N=1)
|JOV,F:D7 |V=1のときジャンプ (F→(R7) ifV=1)
無条件ジャンプ(F→(R7))
|JP,F:D7
|JR,F:D7
無条件相対ジャンプ ((R7)+F→(R7))
****
---
|JRM,F:D7 |N=1のとき相対ジャンプ ((R7)+F (R7) ifN=1)
JZE,F:D7 |Z=1のときジャンプ (F→(R7) if Z=1)
MOV,F:T
移動 (FT)
OR,F:T
ビット毎の論理和(TVF→T)
SLA,D-:T
左シフト (T×2→T)
|SLR, D-:T
左ローテイト
SRA,D-:T
|右シフト(T÷2→T)
|SRR, D-:T
右ローテイト
|SUB, F:T
減算 (T-F→T)
|XOR,F:T
ビット毎の排他的論理和 (TF→T)
* * 0-
**0-
* * * *
* * 0 *
* * 0 *
* * 0 *
* * * *
**0-
※N (Negative; 負), Z (Zero; ゼロ), C (Carry; キャリー), V (Overflow; オーバーフ
ロー), * 演算結果に応じて変化する, -: 変化しない, 0: 必ず0になる
5
表 2.2 汎用レジスタの内容
レジスタ 内容(値)
表 2.3 主記憶装置の内容(一部)
番地
命令ニモニック
RO
0003
7000
|MOV, IP7:D3
R1
[0008
7001
.data 700C
R2
[0008
7002
|MOV,13:D1
R3
[700C
7003
MOV, IP7:D2
R4
[0004
7004
.data 0001
R5(PSW)
[0000
7005
CMP,D2:D1
R6(SP)
[9000
7006
|JMI,IP7:D7
R7(PC)
[7003
7007
.data 700B
7008
SLA,D-:D2
7009
|JP,IP7:D7
PSW:Program Status Words
700A
.data 7005
700B
HLT,D-:D-
SP: Stack Pointer
700C
.data 0008
PC:Program Counter
これから実行する命令が格納
されている主記憶のアドレス
700D
.data 0009
700E
.data 000A
(1) この直後に実行される命令をニモニックで答えよ(オペランドも記述すること)。
(5点)
(2) その後、 実行する命令番地が 7008 に達した。 この時点 (7008番地の命令を実
行する直前)でのR2 R3 の値を答えよ。 (5点×2、 計10点)
(3)その後、機械語5命令を実行する過程で、実行する命令番地と、値が変化する
レジスタ(PC SP PSW を除く) と、 変化後の値を書きなさい。なお、 どのレジス
タも値が変化しない場合は、 「なし」と記述しなさい。
(2点×5、計10点)
実行する命令番地
実行によって変化したレジスタと、 その値
7008
คำตอบ
ข้อสงสัยของคุณเคลียร์แล้วหรือยัง?
เมื่อดูคำถามนี้แล้ว
ก็จะเจอคำถามเหล่านี้ด้วย😉