OP为操作码,6位,可实现64种操作;M为寻址特征,4位,反映寄存器寻址、直接寻址、相对寻址;
R
i
R
j
R_i\ R_j
RiRj各取4位,指出源操作数和目的操作数的寄存器编号 (2)取数/存数指令 取数/存数指令为“寄存器–存储器”型,取双字长为32位,格式为: |OP 6位|M 2位|
R
i
R_i
Ri 4位|
A
1
A_1
A1 4位| |
A
2
A_2
A2 | OP为操作码,6位不变;M为寻址特征,2位不变;
R
i
R_i
Ri为4位,为源操作数地址(存数指令)或目的操作数(取数指令);
A
1
,
A
2
A_1,A_2
A1,A2共20位,为存储器地址,可直接访问按字节编址的1MB的存储器 (3)相对转移指令为一地址指令格式,取单字长为16位,格式为:
注:对于转移指令JMP A,当CPU从存储器中取出一字节时,会自动执行
(
P
C
)
+
1
→
P
C
(PC)+1\rightarrow PC
(PC)+1→PC,若转移指令的地址为X,且占2B,在取出该指令后,PC的值会增加2,即
(
P
C
)
=
X
+
2
(PC)=X+2
(PC)=X+2,在执行完该指令后,会自动跳转到
X
+
2
+
A
X+2+A
X+2+A的地址继续执行
基址寻址
E
A
=
(
B
R
)
+
A
EA = (BR)+A
EA=(BR)+A,其中基址寄存器既可以采用专用寄存器,也可以采用通用寄存器
指令系统中采用不同寻址方式的目的是() A. 提供扩展操作码的可能并降低指令译码难度 B. 可缩短指令字长,扩大寻址空间,提高编程的灵活性 C. 实现程序控制 D. 三者均正确 解答:采用不同的寻址方式是为了缩短指令字长,扩大寻址范围,提高编程的灵活性,但这也提高了指令译码的复杂度,程序控制是靠转移指令而非寻址方式实现的。选B
在指令寻址的各种方式中,获取操作数最快的是() A. 直接寻址 B. 立即寻址 C. 寄存器寻址 D. 间接寻址 解答:立即寻址指令直接给出操作数,最快;其次是寄存器寻址,只需访问一次寄存器;然后是直接寻址,需访问一次主存;最后是间接寻址,需访问主存两次或多次。注意:寄存器间接寻址取操作数的速度接近直接寻址
指令寻址方式有顺序和跳跃两种,采用跳跃寻址方式可以实现() A. 程序浮动 B. 程序的无条件浮动和条件浮动 C. 程序的无条件转移和条件转移 D. 程序的调用 解答:跳跃寻址通过转移类指令实现,可用来实现程序的条件或无条件转移。 错误原因:错选了B,原因:不理解程序浮动
对按字节寻址的机器,程序计数器和指令寄存器的位数各自取决于() A. 机器字长,存储器的字数 B. 存储器的字数,指令字长 C. 指令字长,机器字长 D. 地址总线长度,存储器的字数 解答:机器按字节寻址,PC给出下一条指令字的访存地址(指令在内存中的地址),因此取决于存储器的字数;指令寄存器IR用于接收取得的指令,因此取决于指令字长
数据寻址方式
假设某条指令的第一个操作数采用寄存器间接寻址方式,指令中给出的寄存器编号为8,8号寄存器中的内容为1200H,地址为1200H的单元中的内容为12FCH,地址为12FCH的单元中的内容为38D8H,地址38D8H的单元中的内容为88F9H,则该操作数的有效地址为() A. 1200H B. 12FCH C. 38D8H D. 88F9H 解答:寄存器间接寻址:
E
A
=
(
R
i
)
EA = (R_i)
EA=(Ri),因此EA=1200H 错误原因:粗心,认为要选的是有效地址中的内容
关于地址的计算
(
2014
)
(2014)
(2014)某计算机有16个通用寄存器,采用32位定长指令字,操作码字段(含寻址方式位)为8位,STORE指令的源操作数和目的操作数分别采用寄存器直接寻址和基址寻址方式,若基址寄存器可使用任一通用寄存器,且偏移量用补码表示,则STORE指令中偏移量的取指范围为() A. -32768~+32767 B. -32767~+32768 C. -65536~+65535 D. -65535~+65536 解答:指令格式
O
P
A
1
A
2
OP \ A_1\ A_2
OPA1A2,OP占8位,剩下24位;源操作数采用寄存器直接寻址,有16个通用寄存器,需要4位,剩下20位;目的操作数采用基址寻址,
E
A
=
(
B
R
)
+
A
EA =(BR)+A
EA=(BR)+A,基址寄存器用掉4位,剩余16位,偏移量用补码表示,因此范围为-32768~+32767 错误原因:最后一步用16位的补码表示范围时计算错,错选C。直接算出了
2
1
6
=
65536
2^16=65536
216=65536,然后就认为了范围是 -65536~+65535
(
2020
2020
2020)某计算机采用16位定长指令字格式,操作码位数和寻址方式位数固定,指令系统有48条指令,支持直接、间接、立即、相对4中寻址方式,在单地址指令中,直接寻址方式的可寻址范围是() A. 0~255 B. 0~1023 C. -128~127 D. -512~511 解答:4种寻址方式,M占2位,有48条指令,OP占6位;单地址指令中地址字段占8位,直接寻址方式访问区域是主存,因此寻址范围是0~255。注意:主存的地址不能为负,内存的地址都用无符号数表示。 错误原因:错选了C。这回默认了用8位补码表示范围,算对了8位补码的表示范围,但是!主存地址是用无符号数表示的!
(
2019
2019
2019)某计算机采用大端方式,按字节编址,某指令中操作数的机器数为1234 FF00H,该操作数采用基址寻址方式,形式地址(用补码表示)为FF12H,基址寄存器的内容为F000 0000H,则该操作数的LSB(最低有效字节)所在的地址为() A. F000 FF12H B. F000 FF15H C. EFFF FF12H D. EFFF FF15H 解答:EA=(BR)+A,A使用补码表示=FF12H = 1111 1111 0001 0010B,A的原码为1000 0000 1110 1110B = -EEH,BR中的内容是无符号数,因此EA=F000 0000H - EEH = EFFF FF12H,因为采用大端方式,所以最低有效字节存储在EFFF FF15H,选D
标志寄存器
(
2011
2011
2011)某机器有一个标志寄存器,其中有进位/借位标志CF,零标志ZF,符号标志SF和溢出标志OF,条件转移指令bgt(无符号整数比较大于时转移)的转移条件是() A.
C
F
+
O
F
=
1
CF+OF=1
CF+OF=1 B.
S
F
‾
+
Z
F
=
1
\overline{SF}+ZF=1
SF+ZF=1 C.
C
F
+
Z
F
‾
=
1
\overline{CF+ZF}=1
CF+ZF=1 D.
C
F
+
S
F
‾
=
1
\overline{CF+SF}=1
CF+SF=1 解答:bgt指令比较A,B,将A,B相减,若
A
>
B
A\gt B
A>B则A-B一定没有进位/借位,也不为0,因此CF和ZF均为0.选C 补充:内容来自《汇编语言程序设计(第5版)》钱晓捷 电子工业出版社
P
39
P_{39}
P39
m
o
v
d
e
s
t
,
s
r
c
;
d
e
s
t
←
s
r
c
mov\ dest,\ src\ \ ; dest\leftarrow src
movdest,src;dest←src
源操作数:立即数、寄存器或主存单元
目的操作数:寄存器或主存单元
内容复制,但不能用于直接从内存复制到内存
push指令
p
u
s
h
r
e
g
32
/
m
e
m
/
c
o
n
32
;
s
p
←
s
p
−
4
,
s
s
:
[
s
p
]
←
r
e
g
32
/
m
e
m
/
c
o
n
32
push\ reg32/mem/con32 \ ;sp\leftarrow sp-4,ss:[sp]\leftarrow reg32/mem/con32
pushreg32/mem/con32;sp←sp−4,ss:[sp]←reg32/mem/con32
pop指令
p
o
p
r
e
g
32
/
m
e
m
/
c
o
n
32
;
s
s
:
[
s
p
]
←
r
e
g
32
/
m
e
m
/
c
o
n
32
,
s
p
←
s
p
+
4
pop\ reg32/mem/con32\ ;ss:[sp]\leftarrow reg32/mem/con32,sp\leftarrow sp+4
popreg32/mem/con32;ss:[sp]←reg32/mem/con32,sp←sp+4
RISC更能提高运算速度。RISC的指令数、寻址方式和指令格式种类少,设有多个通用寄存器,采用流水线技术,所以运算速度快,大多指令在一个时钟周期内完成。补充(来自课本
P
333
P_{333}
P333):RISC机采用寄存器窗口堆叠技术,程序嵌套时不必将寄存器内容保存到存储器中,所以又提高的执行速度;采用组合逻辑控制,比微程序控制的CISC机延迟小,缩短了CPU周期