I计组课后答案第十章部分Word下载.docx
《I计组课后答案第十章部分Word下载.docx》由会员分享,可在线阅读,更多相关《I计组课后答案第十章部分Word下载.docx(13页珍藏版)》请在冰豆网上搜索。
):
一个字的各位左移或右移,一端移出的位丢失,另一端是0被移入。
算术移位(有符号补码<
把数据看做是有符号整数而不移符号位。
算数右移(有符号补码>
左边符号位(高位)填充。
算数左移:
无溢出时,算数左移和逻辑左移都相当于乘以2。
如果出现溢出,算数左移和逻辑左移将产生不同的结果,但算数左移仍保留数的符号位不变。
10.8为何要控制传递(转移)指令?
(1)实现一个应用需要上千条甚至上百万条指令,若每条指令必须分立的写出,这将会是非常麻烦的事情。
若一个表或者列表来处理,则可使用程序循环的方法,一个指令序列重复执行直到所有的数据被处理。
(2)所有程序都涉及到某种选择,我们希望计算机能在满足某种条件下做某种事情,另一种条件下做另一种事情。
(3)大中型的计算机程序的编写,是一件较困难的任务。
若将此任务分成小的片段,每次只工作在另一种事情上,将是有益的。
10.9列出并简要说明生成条件的两种普通方式。
列出并简要说明实现条件转移的两种普通方式。
大多数机器提供了1位或多位的条件代码,它作为某种操作的结果被设置。
可以把这条件代码想象成一个用户可见的短寄存器。
另一种能使三地址指令格式的方法是,在同一条指令内完成比较和指定转移。
10.11列出为过程返回保存返回地址的三种可能位置
寄存器,被调过程开始处,堆栈顶部。
10.12什么是可重入过程?
可重入过程准许几个通过它的调用同时存在。
递归过程就是使用之一特征的。
10.13汇编语言和机器语言有何不同?
汇编语言使用符号名地址,而不是机器语言所使用的具体的物理内存地址,比机器语言易于读写、易于调试和修改,同时也具有机器语言执行速度快,占用内存空间少等优点。
但在编写复杂程序时具有明显的局限性,汇编语言依赖具体的机型,不能通用,也不能在不同机型之间移植。
汇编语言是面向具体机型的,他离不开具体计算机的指令系统。
10.14什么是逆波兰表示法?
逆波兰表示法,操作数跟随在它的两个操作数之后。
不管一个表达式有多复杂,使用逆波兰表示法都不需要括号。
10.15大数在先和小数在先有何不同?
对于同样一个多字节数值,大数在先情况,存储器安排成从左到右、从上到下;
而小数在先的情况,存储器安排从右到左、从上到下。
在两种策略中,每个数据都有同样的地址。
在任何一个给定的多字节标量值中,小数在先的字节排序是大数在先的反序,反之亦然。
端序不影响结构中数据项的次序。
习题
10.1
a.23
b.3233
10.2
a.7309
b.582
c.1010不是一个压缩十进制数,所以表达式错误!
10.3
a.0;
255
b.–127;
127
c.–127;
d.–128;
e.0;
99
f.–9;
+9
10.4
16980001011010011000
+17980001011110000110
00101100100011110
1110110
00111110011010100
01101000
10100
34840011010010000100
10.5
0736
+9674
10410
结果是:
0410
10.6
表达式:
X=(A+B*C)/(D-E*F)
零地址
一地址
二地址
三地址
PUSHA
LOADE
MOVER0,E
MULR0,E,F
PUSHB
MULF
MULR0,F
SUBR0,D,R0
PUSHC
STORET
MOVER1,D
MULR1,B,C
MUL
LOSDD
SUBR1,R0
ADDR1,A,R1
ADD
SUBT
MOVER0,B
DIVX,R1,R0
PUSHD
MULR0,C
PUSHE
LOADB
ADDR0,A
PUSHF
MULC
DIVR0,R1
ADDA
MOVEX,R0
SUB
DIVT
DIV
STOREX
POPX
10.7
A、数据传送:
位置x到累加器,累加器到x
AC
M(0)
M(X)
SUBS0
a
x
SUBSX
-x
B、加法:
将位置x的内容加到累加器
M
(1)
y
SUBS1
a-y
-x-a
a+x
10.8
NOOP可以用于中断机制中,也可以用于延迟执行程序。
10.9
5位的二进制
值
逻辑左移
算数左移
00000
00001
1
00010
2
00100
4
00011
3
00110
6
00111
7
01110
14
01000
8
10000
溢出
01001
9
10010
11100
01100
01111
15
11110
-16
10001
-15
-14
10100
10111
-9
11000
-8
11001
-7
11101
-3
11010
-6
-2
-4
11111
-1
10.10
朝负无穷舍入
10.11
可以
10.12
两个八位的数相加,得到的结果的存在数大于9,则在对应位上加6。
10.13
比较指令CMP:
目标操作数-源操作数
(a)、
无符号整数
比较结果
Z
C
目标<
源
目标>
目标=源
(b)、
有符号整数
标记
S!
=0
S=0
ZF=1
(c)、
等于
Z=0
大于
A>
B,且AB同号时,S=0,O=0,Z=0
B,且AB异号时,S=0,O=0,Z=0(无溢出)或S=1,O=1,Z=0(有溢出)
大于等于
B,且AB同号时,S=0,O=0
B,且AB异号时,S=0,O=0(无溢出)或S=1,O=1(有溢出)
小于
A<
B,且AB同号时,S=1,O=0
B,且AB异号时,S=1,O=0(无溢出)或S=0,O=1(有溢出)
小于等于
B,且AB同号时,S=1,O=0,Z=0
B,且AB异号时,S=1,O=0,Z=0(无溢出)或S=0,O=1,Z=0(有溢出)
不等于
10.14
(a)符号,阶值,有效值
(b)32位全为0
(c)阶值的偏表示
(d)满足,但IEEE还有一个-0的表示,-0<
0。
10.15
(a)Scond优点:
对于一个字长的值,在参数传递上更加便利,使之成为一个典型的参数传递。
缺点:
条件为真时设操作数为整数1,对所有的二进制操作数来讲没有什么优势。
(b)
(c)
实现IFa>
bTHEN
SUBCX,CX;
置CX为0
MOVAX,B;
B的内容传送到AX寄存器
CMPAX,A;
AX的内容与A的内容相比较
SETGTCX;
CX=(a>
b)
TESTJCXZOUT;
若CX等于0则转移
THENOUT
(d)
实现A:
=(B>
C)OR(D=F)
MOVEAX,B
CMPEAX,C
SETGBL
MOVEAX,D
CMPEAX,F
MOVBH,0
SETEBH
ORBL,BH
10.16
a、压缩字节,一次加一个字节:
AB0890C2
4598EE50
F0A07E12
B、压缩字,一次加两个字节
AB0890C2
4598EE50
F0A07E12
10.17
如果处理器利用栈来进行子程序处理,它只在执行调用和返回指令时用到栈。
所以不需要面向栈的指令。
10.18
a.(A+B+C)*D
b.(A/B)+(C/D)
c.A/(B*C*(D+E))
d.A+(B*((C+(D+E)/F)–G)/H)
10.19
a.AB+C+D+E+
b.AB+CD+*E+
c.AB*CD*+E+
d.AB-CDE*–F/G/*H*
10.20
AB+C–
等价于(A+B)–C
要紧,由于舍入的影响
10.21
输入
输出
栈(顶在右)