当前位置:文档之家› 形式语言第二章参考答案

形式语言第二章参考答案

形式语言第二章参考答案
形式语言第二章参考答案

2.1回答下面的问题: (周期律 02282067) (1)在文法中,终极符号和非终极符号各起什么作用?

? 终结符号是一个文法所产生的语言中句子的中出现的字符,他决定了一个文法的产生语

言中字符的范围。

? 非终结符号又叫做一个语法变量,它表示一个语法范畴,文法中每一个产生式的左部至

少要还有一个非终结符号,(二,三型文法要求更严,只允许左部为一个非终结符号)

他是推导或归约的核心。

(2)文法的语法范畴有什么意义?开始符号所对应的语法范畴有什么特殊意义? ? 文法的非终结符号A 所对应的语法范畴代表着一个集合L (A ),此集合由文法产生式

中关于A 的产生式推导实现的

? 开始符号所对应的语法范畴则为文法G = {V ,T ,P ,S}所产生的语言L (G )

={w S T w w *

*

|?∈且}

(3)在文法中,除了的变量可以对应一个终极符号行的集合外,按照类似的对应方法,一个字符串也可以对应一个终极符号行集合,这个集合表达什么意义?

? 字符串对应的终极符号行集合表示这个字符串所能推导到的终极字符串集合,为某个句

型的语言。

(4)文法中的归约和推导有什么不同?

? 推导:文法G = {V ,T ,P ,S},如果,)(,,*

T V P ∈∈→δγβα则称γαδ在G 中

推导出了γβδ。

? 归约:文法G = {V ,T ,P ,S},如果,)(,,*

T V P ∈∈→δγβα则称γβδ在G 中归

约到γαδ。

? 这他们的定义,我个人理解两个概念从不同角度看待文法中的产生式,推导是自上而下

(从产生式的左边到右边),而归约是自下而上(从产生式的右边到左边),体现到具体

实际中,如编译中语法分析时语法树的建立,递归下降,LL (1)等分析法采用自开始符号向下推导识别输入代码生成语法树,对应的LR (1),LALR 等分析法则是采用自输入代码(相当于文法中语言的句子)自底向上归约到开始符号建立语法树,各有优劣。

(5)为什么要求定义语言的字母表上的语言为一个非空有穷集合?

? 非空:根据字母表幂的定义:εε,}{0

∑=为字母表中0个字符组成的。这样,当字母

表中没有字符的情况,字母表也有一个元素,字母表为空就没有意义,而且,如果字母表为空,将无法定义其上的语言,使得理论体系不严密。 ? 有穷:我们将语言抽象成形式语言的目的就是为了有穷的表示无限的语言,在此基础上

我们才定义了字母表和语言,如果字母表为无穷的,他就违背了我们研究问题的初衷,

这也使得研究失去意义

(6)任意给定一个字母表∑

,该字母表上的语言都具有有穷描述吗?为什么?

? 错误,因为一个字母表上有不可数无穷多个语言,而有穷表示只可能是可数无穷多个,

又因为不可数无穷集和可数无穷集不是一一对应的,所以存在这样的语言,他不存在有穷表示。

(7)请总结一下,在构造文法时,可以从哪几个方面入手?

? 我们可以将其类比于软件工程中的概念:-)

? 首先,也是最重要的一点,需求分析,我们需要知道需要构造的语言的特点,具体表现

形式,以及一些需要注意的细节,通过一些特例提炼特点。

? 其次,概要设计,将语言从具体中抽象到符号上,按照其特性将其划分类别。 ? 再次,详细设计,将每一部分抽象的成果具体化,将所有细节符号化 ? 再次,编码,将详细设计的结果用文法符号的语言表示出来 ? 最后,测试,找出边缘数据,特殊数据进行测试。

(8)按照文法的乔姆斯基体系,文法被分为几类?各有什么样的特点? 分为四类:

? 文法G = {V ,T ,P ,S},对应的L(G)则为0型文法或短语结果文法。

? 如果对于P ∈→?βα,均有αβ≥成立,则称G为1型文法或上下文有关文法,

对应的L(G)称为1型语言。

? 如果对于P ∈→?βα,均有αβ≥成立,且V ∈α成立,则称G为2型文法,或

上下文无关文法,对应的L(G)为2型语言。

? 如果对于P ∈→?βα,所有βα→均有:wB A w A →→或成立,其中

,,,+

∈∈T w V B A 则称G为3型文法,或正则文法,对应的L(G)称3型语言。

(9)什么叫左线性文法?什么叫右线性文法?什么叫线性文法

? 文法G = {V ,T ,P ,S},如果对于P ∈→?βα,所有βα→均有:wBx

A w A →→或成立,,,,,*

T w x V B A ∈∈则称G为线性文法。

? 文法G = {V ,T ,P ,S},如果对于P ∈→?βα,所有βα→均有:wB

A w A →→或成立,其中,,,+∈∈T w V

B A 则称G为右线性文法。

? 文法G = {V ,T ,P ,S},如果对于P ∈→?βα,所有βα→均有:Bw

A w A →→或成立,其中,,,+∈∈T w V

B A 则称G为左线性文法。

(10)既然已经定义2-10中允许RL 包含空语句ε,那么定理2-6和定理2-7还有什么意义?

此为定义与定理的区别,定义2-10是针对文法G是RG的情况下,定义其产生式加上ε

S后仍为RG,G的语言仍为RL,而定理2-6和定理2-7针对的前提条件是如果→

L为RL,他们都是通过定义2-10证明得到的,可以在以后的推论中直接应用的。

******************************************************************************* 2. 设L = { 0n | n ≥1 },试构造满足要求的文法G.

(1)G是RG.

(2)G是CFG, 但不是RG.

(3)G是CSG, 但不是CFG.

(4)G是短语结构文法,但不是CSG.

解答:

1:S→0|0S

2:S→0|0S|SS

3:S→0|0S|AS

AS→SA

AS→0A

0A→S0

0AS→00

4:S→0|0S|AS

AS→SA|ABB

ABB→AS

AB→A|ε

******************************************************************************* 3.设文法G的产生式集如下,试给出句子id+id*id的两个不同的推导和两个不同的归约

E→id|c|+E|-E|E+E|E-E|E*E|E/E|E**E|Fun(E) (褚颖娜02282072)推导:

(1)E=>E+E=>E+E*E=>E+E*id=> E+id*id=>id+id*id

(2)E=>E*E=>E*id=>E+E*id=>E+id*id=>id+id*id

归约:

(1)id+id*id<= E+id*id<= E+E*id<= E+E*E <=E+E<=E

(2)id+id*id<= E+id*id<= E+E*id<=E*id<= E*E<=E

****************************************************************************** 2.4 设文法G的产生式集如下,试给出句子aaabbbccc的至少两个不同的推导和至少两个不同的归约(02282081刘秋雯)bB→bb

CB→BC

bC→bc

cC→cc

解:推导一:

S→aBC|aSBC

aB→ab

S=>aSBC

=>aaSBCBC

=>aaaBCBCBC

=>aaabCBCBC

=>aaabBCCBC

=>aaabbCCBC

=>aaabbCBCC

=>aaabbBCCC

=>aaabbbCCC

=>aaabbbcCC

=>aaabbbccc

推导二:

S=>aSBC

=>aaSBCBC

=>aaaBCBCBC

=>aaaBBCCBC

=>aaaBBCBCC

=>aaabbCBCC

=>aaabbBCCC

=>aaabbbCCC

=>aaabbbcCC

=>aaabbbccc

归约一、归约二分别为推导一和推导二的逆过程

******************************************************************************* 5 句子abeebbeeba的一个推导如下:(陈伟芳学号??)S=>aAa 使用产生式S→aAa

=>aSSa 使用产生式A→SS

=>abAbSa 使用产生式S→bAb

=>abSSbSa 使用产生式A→SS

=>abeSbSa 使用产生式S→e

=>abeebSa 使用产生式S→e

=>abeebbAba 使用产生式S→bAb

=>abeebbSSba 使用产生式A→SS

=>abeebbeSba 使用产生式S→e

=>abeebbeeba 使用产生式S→e

不能给出abeebbeeb的归约,因为由文法G中产生式推出的句子只有三种情况:头尾都是a,头尾都是b,或者只有一个e,而abeebbeeb上面三个条件都不符合,所以它不是文法G 的一个句子,当然也就不能给出它的一个归约了。*******************************************************************************

2.6 设文法G的产生式集如下,请给出G的每个语法范畴代表的集合.

S→aSa|aaSaa|aAa

A→bA|bbbA|bB

B→c B|cC

C→ccC|DD

D→dD|d

解:

set(D)={d}+

set(C)={ c2n d m|m≥2 n≥0}

set(B)={ c n d m |m≥2 n≥1}

set(A)={ b p c n d m | p≥1, m≥2, n≥1}

set(S)={ a q b p c n d m a q| p≥1 ,m≥2, n≥1, q≥1}

******************************************************************************* 7.给定如下文法,请用自然语言描述它们定义的语言。(吴贤珺02282047)

⑴A→aaA│aaB

B→Bcc│D#cc

D→bbbD│#

解:该语言由四部分组成:第一部分是偶数个a(至少有两个),第二部分是3的倍数个b (可以是0个),第三部分是两个“#”号,第四部分是偶数个c(至少有两个)。

⑵A→0B│1B│2B

B→0C│1C│2C

C→0D│1D│2D│0│1│2

D→0B│1B│2B

解:该语言的句子是字母表∑={0,1,2}上所有长度为3的倍数的字符串,且非空。

⑶A→0B│1B│2B

B→0C│1B│2B

C→0E│1D│2D│0│1│2

D→0C│1B│2B

E→0E│1D│2D│0│1│2

解:观察发现C和E所对应产生式右部是相同的。所以将文法化简成如下的形式:A→0B│1B│2B

B→0C│1B│2B

C→0C│1D│2D│0│1│2

D→0C│1B│2B

作出状态图如下:

D

可以看出从初始状态A到终态F,至少要经过A→B→C→F的过程,所以字符串的长度至少为3。而且,到F只能经过C,如果到达C后走其它的路径,那么所经过的弧上

的字符串都是以0为结尾,也就是要回到C,最后一个字符一定是0。这样,该文法所确定的语言就是所有倒数第2个字符是0的串。

⑷S→aB│bA

A→a│aS│BAA

B→b│bS│ABB

解:由于该文法所确定的语言一时不易看出,可以先考虑简单的形式:

S→aB│bA

A→a│aS

B→b│bS

不难看出,该文法所确定的语言为所有由ab和ba组成的串,且非空。这些串有一个特点,就是a和b的个数相等。然后,把产生式A→BAA和B→ABB加回到原来的文法中,并且可以把这两个产生式看成是在左部的符号前分别加上串BA和AB。不妨把它们看成一个符号C和D。这样原文法可以改造成如下形式:

S→aB│bA

A→a│aS│CA

B→b│bS│DB

C→BA

D→AB

发现插入的C和D所导入的A和B是成对的,原文法所确定的语言可能就是字母表∑={a,b}上所有含有相同个a和b的字符串,且非空。从上面简单形式的文法中已经看到,它所确定的字符串比a和b个数相同的所有串少的只是多个a或b连续的情况。

而加上产生式A→BAA和B→ABB后则刚好满足。

例如:由S推出aB后,在B前“插入”D(即AB),可由AB中的A推出a,就得到aaBB,如此类推,最终可得该文法所接受的语言为:字母表∑={a,b}上所有a和b个数相等的非空字符串。

******************************************************************************* 8.设∑={0,1},请给出∑上的下列语言的文法

(1)所有以0开头的串

S→0A|0

A→0|1||0A|1A

(2)所有以0开头以1结尾的串

S→0A

A→1|0A|1A

(3)所有以11开头以11结尾的串

S→11A|11

A→11|0A|1A

(4)所有最多有一对连续的0或者最多有一对连续的1

1:x中既没有成对的0,也没有成对的1

2:x有一对连续的0

3:x有一对连续的1

4:x中既有一对连续的0,也有一对连续的1

S→A|B|C|D

A→ε|A’|A”

A’→0|01|01A’

A”→1|10|10A”

B→B’00B”

B’→1|01|1B’|01B’

B”→1|10|1B”10B”

C→C’11C”

C’→0|10|0C’|10C’

C”→0|01|0C”|01C”

D→E00F11H|P11G00K

E→1|1E’|E’

E’→01E’|E’

F→ε|10|10F // F 以1开头,以0结尾;不含连续0和连续1 H→0|H’0|H’

H’→01|01H’

P→0|0P’|P’

P’→10P’|10

G→ε|01|01G // G 以0开头,以1结尾;不含连续0和连续1 K→1|K’1|K’

K’→10|10K’

(5) 所有最多有一对连续的0而且最多有一对连续的1

1:x中既没有成对的0,也没有成对的1

2:x只有一对连续的0,没有连续的1

3:y只有一对连续的1,没有连续的0

4:x中既有一对连续的0,也有一对连续的1

S→A|B|C|D

A→ε|A’|A”

A’→0|01|01A’

A”→1|10|10A”

B→B’00B”’

B’→ε|1|01|01B’’|1 B’’// B’是不含连续0,也不含连续1的串B’’→01|01 B’’

B”’→ε|1|10|10B””// B””是不含连续0,也不含连续1的串B””→10|10 B””

C→C’11C”’// C’是不含连续1,也不含连续0的串C’→ε|0|10|0C”|10C”

C”→10|10 C”

C”’→ε|0|01|01C””// C””是不含连续1,也不含连续0的串C””→01|01 C””

D →E00F11H|P11G00K

E →1|1E ’|E ’ E ’ →01E ’|E ’

F →ε|10|10F // F 以1开头,以0结尾;不含连续0和连续1

H →0|H ’0|H ’

H ’ →01|01H ’ P →0|0P ’|P ’

P ’ →10P ’|10

G →ε|01|01G // G 以0开头,以1结尾;不含连续0和连续1 K →1|K ’1|K ’ K ’ →10|10K ’

(6)所有长度为偶数的串 S →01|10|00|11|01S|10S|00S|11S (7)所有包含子串01011的串 S →X01011Y X →ε|0X|1X

Y →ε|0Y|1Y

(8)所有含有3个连续0的串 S →X000Y X →ε|0X|1X Y →ε|0Y|1Y

******************************************************************************* 2.9 设},,,{c b a =∑,构造下列语言的文法。 (1) }0|{1≥=n b a L n n 。

解答:)},|{},,{},({1S aSb S b a S G ε→=。 (2) }1,|{2≥=m n b

a L m

n

解答:)},|,|,|{},,{},,,({2S b bB B a aA A B A S b a B A S G →→→=。

(3) }1|{3≥=n a b a L n

n n 。

解答:),},,{},,,({33S P b a B A S G = :3P S →aAB|aSAB

BA →AB aB →ab bB →bb bA →ba aA →aa

(4) }1,,|{4≥=k m n a b a L k m n 。

解答:)},|,|,{},,{},,({4S b bB B a aA A ABA S b a A S G →→→=。 (5) },|{5+∑∈∑∈=w a awa L 。

解答:)},|||||,{},,,{},,({5S c b a cW bW aW W aWa S c b a W S G →→=。 (6) },|{6+

∑∈=w x xwx

L T

解答:),},,,{},,({66S P c b a W S G = :6P c W c b W b a W a S ||→ c b a cW bW aW W |||||→。 (7) },|{7+∑∈==w w w w L T 。

解答:}},|||||{},,,{},,{{7S c b a cWc bWb aWa S c b a W S G →=。

(8) },|{8+

∑∈=w x w xx L T 。

解答:),},,,{},,,({88S P c b a X W S G = XW S P →:8

c b a c X c b X b a X a X |||||→ c b a cW bW aW W |||||→。

******************************************************************************* 第10题参见下题:

11、给定RG

11111(,,,)G V T P S = 2222,2(,,)G V T P S =

试分别构造满足下列要求的RG G ,并证明你的结论。

12(1)()()()L G L G L G =

{}()

{}

{}{}

()()()()()()

12121

21212332111*

12122121111*

2222 V V S V V G S V

V T T P P P S P S S T S S S S x L G S x

x L G L G L G L G x S S x x x x T x L G S x G P x L ωωωααεεεεεεω+

+

+

=??=

=→∈?→→→∈?=∈∈∈≠→=∈∈?∈ 解:

不妨假设,并且,令,,,其中,

且证明:

(1)设,则若,因为,,所以成立若,由产生式,不妨设,其中,则,因为的产生式包括,所以()()()

()()()

()(){

}

()()()(){}()

()2121212*

*

*

*

121211112222

132111212

1212*

1312

*

2221 G x x x L G L G L G L G L G x L G L G x x x x T S x x T S x x P S S T S S x S x x x x L G L G L G L G x P S S S x x S S x x L G L G L G εωωωεααεε++

+

+

=∈?∈=∈?∈?≠→∈???

∈?=→→?=→?∈,可知所以 (1)设,不妨设,其中,,,时,由中且,则所以,时,由中时,由,得所以()()()()()

212L G L G L G L G ?=综上,

12(2)()()()L G L G L G =

{}()

{}()()()()()()()

()()()()

12121

212123312*

1211*

12*

*

*

312*

111 V V S V V G S V

V T T P P P S P S S S x L G L G x L G S x

G S x x L G L G L G L G x L G S x P S x S x

S x x L G L G L G ααα=??=

=→→→∈∈??∈?∈????∈? 解:

不妨假设,并且,令,,,其中,

或证明:

(1)设不妨设那么可知由构造方法可知,且即(2)设则,由知,或不妨设则,同理()()()()()()()()

21212 L G L G L G L G L G L G L G L G ??= 则 所以

{}12(3)()(),(),L G L G a b L G a =其中,b 是两个不同的终极符号

{}()

{}

{}

()()()

{}12121

212123*

*

322111*

212*

*

112211*********

(),() ()V V S V V G S V

V T T P P P S P S aS bS T S S S x L G S x S aS x a T S L G L G x a L G a b L G b L G ωωωωααωωωωωωωωωωω=??=

=→∈?→→∈?→=∈?∈∈=∈∈ 解:

不妨假设,并且,令,,,其中,

其中且证明:

(1)设则由产生式,不妨设则,则,所以同理{}{}{}{}(){}21212**

1211221122*

312121212,()()(),() (),()

()() (),() ()(),()

a b L G L G L G a b L G x L G a b L G x a L G L G S S P S aS a L G a b L G L G L G L G a b L G ωωωωωωωωω?∈=∈∈?????=可得(2)设不妨设其中,即, 由中产生式 所以综上可得,

*

1(4)()()L G L G =

解:

P={S →α|S1→α∈P1}∪{S →ε}∪{S →αS|S1→α∈P1} 证明略。

1(5)()()L G L G +

=

解:

P={S →α|S1→α∈P1}∪{S →αS|S1→α∈P1} 证明略。

******************************************************************************* 12.设文法G 有如下产生式: (吴贤珺 02282047) S →aB │bA

A →a │aS │bAA

B →b │bS │aBB

证明L(G)={ω│ω中含有相同个数的a和b,且ω非空}。

证:观察发现A的产生式A→bAA中的bA可以用S来代替,同样B的产生式B→aBB中的aB也可以用S代替。这样原来的文法可以化为如下的形式:

S→aB│bA

A→a│aS│SA

B→b│bS│SB

进一步地,可以把产生式A→aS中的S代换,把文法化为如下的形式:

S→aB│bA

A→a│aaB│abA│SA

B→b│baB│bbA│SB

下面,我们就对字符串ω的长度施归纳,同时证明以下三个命题成立。

⑴*

Sωiffω中含有相同个数的a和b,且ω非空。

?

⑵*

Aωiffω中含有a的个数比b的个数恰好多一个。

?

⑶*

Bωiffω中含有a的个数比b的个数恰好少一个。

?

第一步,由于只有A和B可以直接推出终结符,当ω的长度为1时,直接用A推出a 或直接用B推出b。

直接用A推出a时,ω中a的长度为1,b的长度为0,含有a的个数比b的个数恰好多一个。

直接用B推出b时,b的长度为1,a的长度为0,ω中含有a的个数比b的个数恰好少一个。

这样,由S→aB│bA,知S推出的最短串,分别是ab和bb,其长度是2,并且a和b的个数相等。

第二步,假设上面的三个命题对长度为x的串成立。对S,x=2n(n≥1);对A和B,x=2n+1(n≥0)。我们可以看到,由A或B推出的串长度如果要变长的话,必须把A 或B用其除A→a或B→b之外的产生式代替。

i).考虑代替A的情形。

若A用aaB代替,由假设B中a的个数比b的个数恰好少一个,则aaB中a的个

数比b的个数恰好多一个。

若A用abA代替,由假设A中a的个数比b的个数恰好多一个,则abA中a的

个数比b的个数恰好多一个。

若A用SA代替,由假设A中a的个数比b的个数恰好多一个,而S中a和b的

个数相等,则SA中a的个数仍然比b的个数恰好多一个。

ii).考虑代替B情形。

若B用baB代替,由假设B中a的个数比b的个数恰好少一个,则baB中a的个

数比b的个数也恰好少一个。

若B用bbA代替,由假设A中a的个数比b的个数恰好多一个,则bbA中a的

个数比b的个数恰好少一个。

若B用SB代替,由假设B中含有a的个数比b的个数恰好少一个,而S中a和

b的个数相等,则SB中a的个数仍然比b的个数恰好少一个。

这样,命题

?

Aωiffω中含有a的个数比b的个数恰好多一个。

*

?

Bωiffω中含有a的个数比b的个数恰好少一个。

*

就得到了证明。又由于S的产生式只有S→aB│bA,由以上两个命题,显然有命题Sωiffω中含有相同个数的a和b,且ω非空。成立。

*

?

汇编语言第二章答案

2.1 在80x86微机的输入/输出指令中,I/O端口号通常是由DX寄存器提供的,但有时也可以在指令中直接指定00~FFH的端口号。试问可直接由指令指定的I/O端口数。 答:可直接由指令指定的I/O端口数为256个。 2.2 有两个16位字1EE5H和2A3CH分别存放在80x86微机的存储器的000B0H和000B3H单元中,请用图表示出它们在存储器里的存放情况。 答:存储器里的存放情况如右下图所示: 000B0H E5H 000B1H 1EH 000B2H 000B3H 3CH 000B4H 2AH 2.3在IBM PC机的存储器中存放信息如右下图所示。试读出30022H和30024H字节单元的内容,以及30021H和30022H字单元的内容。 30020H 12H 30021H 34H 30022H ABH 30023H CDH 30024H EFH 答:30022H字节单元的内容为ABH;30024H字节单元的内容为EFH。30021H字单元的内容为AB34H;30022H字单元的内容为CDABH。 2.4 在实模式下,段地址和偏移地址为3017:000A的存储单元的物理地址是什么?如果段地址和偏移地址是3015:002A和3010:007A呢? 答:3017:000A、3015:002A和3010:007A的存储单元的物理地址都是3017AH。 2.5 如果在一个程序开始执行以前(CS)=0A7F0H,(如16进制数的最高位为字母,则应在其前加一个0) (IP)=2B40H,试问该程序的第一个字的物理地址是多少? 答:该程序的第一个字的物理地址是0AAA40H。 2.6在实模式下,存储器中每一段最多可有10000H个字节。如果用调试程序DEBUG的r命令在终端上显示出当前各寄存器的内容如下,请画出此时存储器分段的示意图,以及条件标志OF、SF、ZF、CF的值。 C>debug -r AX=0000 BX=0000 CX=0079 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=10E4 ES=10F4 SS=21F0 CS=31FF IP=0100 NV UP DI PL NZ NA PO NC 答:此时存储器分段的示意图如右图所示。OF、SF、ZF、CF的值都为0。 2.7 下列操作可使用那些寄存器?

汇编语言基础练习题目

、填空 1. 在8086/8088的计算机中,存储单元的20位物理地址由两部分组成,即16 位的 段地址 和16位的 偏移地址,物理地址=段地址X 10H+偏移量。 2. 段的起始地址必须是某小段的首地址,它能被 10H 整除。 3. 已知01020H 字单元的内容为6A58H 请分别写出它的两个字节单元的地址和 内容: (01020H =58H, ( 01021H =6AH 4. 指令执行后,若标志寄存器的ZF=0,则表示结果不为0;若SF=0,则表示结 果的符号是正号,即结果为正数。 5. 控制器从存储器取出一条指令后,指令指针寄存器IP 的内容是 将要执行的下 一条指令开始的偏移地址。 6. 段地址和偏移地址为1000: 127B 的存储单元的物理地址是1127BH 解:由物理地址=段地址X 10H+偏移量的公式可得 物理地址=1000HX 10H+127BH=10000H+127BH=1127BH 、选择 1. 与CS 寄存器组合才能形成代码段的物理地址的寄存器是 解:16K 个字单元,即为32K 个字节单元。由于2的15次方为32K,因此至 少需要15位二进制数才能表示16K 个字单元。 3. 已知一数据段的段地址是0100H,这个段的第6个字单元的物理地址是(B ) o 解:由于一个字单元占用两个字节,第一个字单元的偏移地址为 0000H,因 此第一个字单元的物理地址为 01000H 。以后每一个字单元的地址在前一个的基 C )。 A. SP 寄存器 B. BP 寄存器 C. IP 寄存器 D. BX 寄存器 2.如果存储器分段时, 的二进制数至少是( 一个段最多允许16K 个字单元,那么表示该段内偏移地址 A )o A.15 位 位 B.16 位 C.17 位 D.18 A. 01010H B. 0100AH C.01012H D.01006H

汇编语言课后习题答案

2.1已知DS=2000H、BX=0100H、SI=0002H,存储单元[20100H]~[20103H]依次存放12345678H,[21200H]~[21203H]依次存放2A4C B765H,说明下列每条指令执行完后AX寄存器的内容。 (1)mov ax,1200h (2)mov ax,bx (3)mov ax,[1200h] (4)mov ax,[bx] (5)mov ax,[bx+1100h] (6)mov ax,[bx+si] (7)mov ax,[bx][si+1100h] 〔解答〕 (1)AX=1200H (2)AX=0100H (3)AX=4C2AH;偏移地址=bx=0100h (4)AX=3412H;偏移地址=bx=0100h (5)AX=4C2AH;偏移地址=bx+1100h=1200h (6)AX=7856H;偏移地址=bx+si=0100h+0002h=0102h (7)AX=65B7H;偏移地址=bx+si+1100h=0100h+0002h+1100h=1202h 〔习题2.2〕指出下列指令的错误 (1)mov cx,dl (2)mov ip,ax (3)mov es,1234h (4)mov es,ds (5)mov al,300 (6)mov[sp],ax (7)mov ax,bx+di

(8)mov20h,ah 〔解答〕 (1)两操作数类型不匹配 (2)IP指令指针禁止用户访问 (3)立即数不允许传给段寄存器 (4)段寄存器之间不允许传送 (5)两操作数类型不匹配 (6)目的操作数应为[SI] (7)源操作数应为[BX+DI] (8)立即数不能作目的操作数 〔习题2.5〕已知SS=2200H、SP=00B0H,画图说明执行下面指令序列时,堆栈区和SP的内容如何变化?mov ax,8057h push ax mov ax,0f79h push ax pop bx pop[bx] 〔解答〕 mov ax,8057h push ax mov ax,0f79h push ax pop bx;bx=0f79h pop[bx];DS:[0f79h]=8057h

汇编语言王爽第二版课后答案

第一章基础知识 检测点(第8页) ---------------------- (1) 13 (2) 1024,0,1023 (3) 8192,1024 (4) 2^30,2^20,2^10 (5) 64,1,16,4 (6) 1,1,2,2,4 (7) 512,256 (8) 二进制 注意: 1.第4题中的符号'^'指求幂运算(如: 2^30指2的30次方) 第二章寄存器(CPU工作原理) 检测点(第18页) ---------------------- (1)写出每条汇编指令执行后相关寄存器中的值。第一空:F4A3H 第二空:31A3H 第三空:3123H 第四空:6246H 第五空:826CH 第六空:6246H 第七空:826CH 第八空:04D8H 第九空:0482H 第十空:6C82H 第十一空:D882H 第十二空:D888H 第十三空:D810H 第十四空:6246H (2)只能使用目前学过的汇编指令,最多使用4条指令,编程计算2的4次方。 解答如下: mov ax,2 add ax,ax add ax,ax add ax,ax 检测点(第23页) ---------------------- (1)00010H,1000FH (2)1001H,2000H 第2题说明: 因为段的起始地址要为16的倍数。所以当段地址小于1001H或大于2000H时CPU都无法寻到。 检测点(第33页) ----------------------答:CPU修改了4次IP的值。 情况如下: 第1次:执行完mov ax,bx后 第2次:执行完sub ax,ax后 第3次:读入jmp ax后 第4次:执行完jmp ax后 最后IP的值为0 实验1 查看CPU和内存,用机器指令和汇编指令编程(第33页) ----------------------------------------------------- 1.预备知识:Debug的使用 <此部分略> 2.实验任务(第43页) (1) <此部分略> (2) <此部分略> (3) 通过DEBUG中的D命令查看到主板的生产日期[以月、日、年,分隔符为'/'的格式]存储在内存ffff:0005~ffff:000C(共8个字节单元中)处。此生产日期不能被改变,因为其具有‘只读’属性。 (4) 通过向内存中的显存写入数据,使计算机根据写入的数据进行ASCII转换,并将转换后且可打印的字符输出到屏幕上。<注:关于显存的详细讨论不在此题范围> 第三章寄存器(内存访问) 检测点(第52页) ---------------------- (1)(题目:略) 第一空:2662H 第二空:E626H 第三空:E626H 第四空:2662H 第五空:D6E6H 第六空:FD48H 第七空:2C14H 第八空:0000H 第九空:00E6H 第十空:0000H 第十一空:0026H 第十二空:000CH 提示:此题可在DEBUG中利用E命令在本机上按照题目中所给出的内存单元及其数据进行相应地修改,然后再用A命令进行写入(题目中所给出的)相应的汇编指令,最后再进行T命令进行逐步执行,以查看相应结果。

汇编语言课后习题解答

第1章基础知识 检测点1.1(第9页) (1)1个CPU的寻址能力为8KB,那么它的地址总线的宽度为13位。 (2)1KB的存储器有1024个存储单元,存储单元的编号从0到1023。 (3)1KB的存储器可以存储8192(2^13)个bit,1024个Byte。 (4)1GB是1073741824(2^30)个Byte、1MB是1048576(2^20)个Byte、1KB是1024(2^10)个Byte。 (5)8080、8088、80296、80386的地址总线宽度分别为16根、20根、24根、32根,则它们的寻址能力分别为: 64(KB)、1(MB)、16(MB)、4(GB)。 (6)8080、8088、8086、80286、80386的数据总线宽度分别为8根、8根、16根、16根、32根。则它们一次可以传送的数据为: 1(B)、1(B)、2(B)、2(B)、4(B)。 (7)从内存中读取1024字节的数据,8086至少要读512次,80386至少要读256次。 (8)在存储器中,数据和程序以二进制形式存放。

(1)1KB=1024B,8KB=1024B*8=2^N,N=13。 (2)存储器的容量是以字节为最小单位来计算的,1KB=1024B。 (3)8Bit=1Byte,1024Byte=1KB(1KB=1024B=1024B*8Bit)。 (4)1GB=1073741824B(即2^30)1MB=1048576B(即2^20)1KB=1024B(即2^10)。(5)一个CPU有N根地址线,则可以说这个CPU的地址总线的宽度为N。这样的CPU 最多可以寻找2的N次方个内存单元。(一个内存单元=1Byte)。 (6)8根数据总线一次可以传送8位二进制数据(即一个字节)。 (7)8086的数据总线宽度为16根(即一次传送的数据为2B)1024B/2B=512,同理1024B/4B=256。 (8)在存储器中指令和数据没有任何区别,都是二进制信息。

汇编语言课后习题答案---郑晓薇(整理后的)

习题一 1 无符号数: 11010011=211=D3H,01110111=119=77H, 10000011=131=83H, 00101111=47=2FH, 10101010=170=AAH 带符号数:11010011= -45=D3H,01110111=+119=77H,10000011= -125=83H, 00101111=+47=2FH,10101010= -86=AAH 2 5E8AH,0BE6H,3DEH,4940H 3 00011101+00110101=01010010=5 2H=82 01001001+11101000=00110001=3 1H=49 10111110+01010010=00010000=1 0H=16 10011010+11110001=10001011=8 BH= -117 4 00101001+01010011=01111100+0 0000110=10000010=82H=82 01110011-00100100=01001111-00000110=01001001=49H=49 01100110+00011000=01111110+0 0000110=10000100=84H=84 10010+01110101=00111+0000011 0 =00111=0207H=207 5 000020A3H,FF94H,00003456H,007FH,FFFFEC00H 6 无符号数:0~65535,0000H~FFFFH;带符号数:-32768~+32767,8000H~7FFFH 7 (1) 38H等于十进制数56,是十进制数56的补码,数字8的ASCII码,十进制数38的压缩BCD码 (2) FFH等于十进制数-1,是带符号数-1的补码,无符号数为255 (3) 5AH等于十进制数90,是十进制数90的补码,大写字母Z的ASCII码 (4) 0DH等于十进制数13,是十进制数13的补码,回车符的ASCII码 8 (1) 108=01101100B=6CH,补码01101100B,压缩BCD码01000,ASCII 码313038H (2) 46=00101110B=2EH,补码00101110B,压缩BCD码01000110,ASCII码3436H (3) –15=11110001B=F1H,补码11110001B,ASCII码2D3135H (4) 254=11110B=00FEH,补码11110B,压缩BCD码10100,ASCII 码323534H 9 (1) 56+63=01110111B,CF=0,SF=0,ZF=0,OF=0 (2) 83-45=00100110B,CF=0,SF=0,ZF=0,OF=0 (3) -74+29=11010011B,CF=0, SF=1,ZF=0,OF=0 (4) -92-37=01111111B,CF=1, SF=0,ZF=0,OF=1 10 回车、换行、响铃、ESC键、空格键、、P、p 习题二 9 最少划分为16个逻辑段,最多划分为65536个逻辑段(每段16个字节) 10 CS:IP,DS:BX、SI、DI,ES:BX、SI、DI,SS:SP、BP 11 字节单元保存8位数,字单元保存16位数。根据源操作数的属性确定要访问的是字节单元还是字单元。 12 对于字节单元来说,偶地址和奇地址一样;对于字单元而言,最好用偶地址保存,可减少CPU的访存次数。 13 首单元的物理地址=38AE8H,末单元的物理地址 =38AE8H+7FFFH=40AE7H 16 (1)物理地址=27679H (2) 物理地址=20F92H (3) 物理地址=20F92H (2)和(3)的物理地址是一样的。说明逻辑地

汇编语言程序设计实验教程第二章实验报告

汇编语言程序设计实验教程第二章 实验报告

实验2.1 用表格形式显示字符 1.题目:用表格形式显示ASCII字符SMASCII 2.实验要求: 按15行*16列的表格形式显示ASCII码为10H-100H的所有字符,即以行为主的顺序及ASCII码递增的次序依次显示对应的字符。每16个字符为一行,每行中的相邻两个字符之间用空白符(ASCII为0)隔开。 3.提示: (1)显示每个字符可使用功能号为02的显示输出功能调用,使用方法如下:mov ah,02h mov dl,输出字符的ASCII码 int 21h (2)显示空白符时,用其ASCII码0置入dl寄存器。每行结束时,用显示回车(ASCII 为0dh)和换行符(ASCII为0ah)来结束本行并开始下一行。 (3)由于逐个显示相继的ASCII字符时,需要保存并不断修改dl寄存器的内容,而显示空白、回车、换行符时也需要使用dl寄存器,为此可使用堆栈来保存相继的ASCII字符。具体做法是:在显示空白或回车、换行符前用指令 push dx 把dl的内容保存到堆栈中去。在显示空白或回车、换行符后用指令 pop dx 恢复dl寄存器的原始内容。 4.程序清单: code segment assume cs:code start: mov dx,0010h next: mov cx,10h loop1: mov ah,02h int 21h inc dx push dx

int 21h pop dx loop loop1 push dx mov dl,0ah int 21h mov dl,0dh int 21h pop dx cmp dx,100h jb next mov ah,4ch int 21h code ends end start 5.运行结果如下: 6.实验总结: 通过本次实验我深刻的知道用汇编语言编译程序的方法,掌握了如何合理的利用各个寄存器进行程序的控制操作,初步了解到循环程序的控制方法,以及dos中断调用的基本要领对学习汇编语言有了非常好的帮助作用! 汇编语言实验二查找匹配字符串 一、目的 查找匹配字符串SEARCH

汇编第五章课后题答案

1.从屏幕上输入小写字母,转化为大写字母输出 (解法1) DATA SEGMENT MESSAGE DB "ENTER A STRING:",0AH,0DH,'$' MAXLENGTH DB 50,?,50 DUP(?) ;每次最多可以输入49个字符DATA ENDS CODE SEGMENT ASSUME DS:DATA,CS:CODE START: MOV AX,DATA MOV DS,AX LEA DX,MESSAGE ;输出ENTER A STRING MOV AH,09H INT 21H LEA DX,MAXLENGTH ;输入字符串 MOV AH,0AH ;键盘输入到缓冲区,DS:DX=缓冲区首址 INT 21H ;(DS:DX)=缓冲区最大字符数,(DS:DX+1)=实际输入的字符数 MOV AH,02H ;输出回车换行 MOV DL,0AH INT 21H MOV AH,02H MOV DL,0DH INT 21H

MOV CL,MAXLENGTH+1;把字符的实际长度放入寄存器CL MOV CH,0 MOV BH,02H LEA SI,MAXLENGTH+2;取字符串的基地址放入SI XUN: MOV AL,[SI] CMP AL,'Z' JBE S1 ;小于等于'Z'转移 JMP S3 S1:CMP AL,'A' JAE DA ;大于等于'A'转移 JMP OUTPUT DA:ADD AL,20H JMP OUTPUT S3:CMP AL,'z' ;小于等于小Z转移 JBE S4 S4:CMP AL,'a' ;大于等于小a转移 JAE XIAO JMP OUTPUT XIAO: SUB AL,32 JMP OUTPUT OUTPUT: MOV DL,AL MOV AH,02H ;显示输出 INT 21H

美术基础知识大全(附经典试题)

美术基础知识 1.美术作品的形式语言:点、线、面、体积、色彩、明暗等 2.写生过程:大体阶段,深入阶段,调整阶段 3.美术课程标准的基本理念:使学生形成基本美术素养、激发学生学习美术的兴趣、在广泛的文化情景中认识美术、培养创新精神和解决问题的能力、为促进学生发展而进行评价。 4.新课标划分了造型.表现、设计.应用、欣赏.评述、综合.探索 5.色彩三要素:色相、明度、纯度 6.构图:1艺术形象在空间位置的确定。2空间大小的确定。3自身各部分之间、主体形象与陪体形象之间的组合关系及分隔形式。4与空间的组合关系及分隔形式。5所产生的视觉冲击和力感。6运用的形式美法则和产生的美感 7.美术的主要种类:绘画、雕塑、建筑、工艺美术、设计、书法等 8.绘画是造型艺术的基本种类,它以笔、墨、砚、颜料、画刀、调色板等工具材料和形体、明暗、色彩、构图等基本手段,在纸、纺织品、木板、墙壁等平面上表现物象的形状、体积、质感、量感和空间感,使人们在视觉上可以感受艺术形象。它既是生活的反映,也是作者对现实生活的感受,同时反映了作者的思想情感和价值观。 9.中国画简称国画,一般指毛笔在宣纸或绢、帛上,用中国画颜料所画的水墨画,淡彩画,重彩画等,手法上主要用线条和墨色来进行创作。从表现形式上可以分为写意画和工笔画,题材上分为花鸟画、山水画、人物画。用墨的方法大体上可以分为泼墨法、破墨法、积墨法、焦墨法、蕉墨法。笔法:勾、皴、点、染。特点:1、以线条为造型的主要手段,达到线墨色交相辉映;2、以画开拓诗的意境,画中有诗,托物喻情;3、将书、画、印三者融合一体,产生形意相生,形色相映的艺术效果。4,散点透视。 10.墨分五色:焦、浓、重、淡、清,六彩:黑、白、浓、淡、干、湿 11.水墨画:用笔注意轻、重、缓、急的变化。淡墨点、浓墨点交互使用,使墨“活”起来。 12.破墨法:是指先画好一种墨色,再用另一种不同的墨色覆盖、渗化。13.竹子的画法:先画竹干、竹节、再画竹枝和竹叶。竹叶的画法:以中锋为主,落笔稳、提笔快。 14.版画:以“版”材为媒介,以制版、印刷为表现手段来复制原作的绘画形式。版画的种类:凸版、凹版、平版、孔版、独幅版、玻璃版、拓片。版画术语:刀味、木味、刀法、阳刻、阴刻、主版、拓印。对中国传统版画的认识:传统版画在中国有著悠久的历史;根据史料,古代版画可追溯到西汉,到了明代中期,民间木版画有了空前的发展。30年代初期,中国新兴版画兴起,经历了半个多世纪的发展,出现了一批成就卓越的版画家。一九四九年以後,新兴版画迅速发展,专业版画家和业余版画作者遍布全国各阶层。这时期创作的版画除了木刻之外,铜版画、石版画、丝网版画也取得新的发展;近年来又发展出儿童版画、农民版画、版画藏书票等,获得各界好评。简述木刻的基本步骤?1绘制画稿2刻出主

汇编语言程序设计(钱晓捷)课后答案

汇编语言程序设计(第二版) 钱晓捷习题答案 第二章(01) 2.1 (1)AX=1200h (2)AX=0100h (3)AX=4C2Ah (4)AX=3412h (5)AX=4C2Ah (6)AX=7856h (7)AX=65B7h 2.2(1) 两操作数类型不匹配 (2) IP指令指针禁止用户访问 (3) 立即数不允许传给段寄存器 (4) 段寄存器之间不允许传送 (5) 两操作数类型不匹配 (6) 目的操作数应为[ BP ] (7) 源操作数应为[BX+DI] (8) 立即数不能作目的操作数 2.3 lea bx,table ;获取table的首地址,BX=200H mov al,8 ;传送欲转换的数字,AL=8 xlat ;转换为格雷码,AL=12H 2.4 堆栈是一种按“先进后出”原则存取数据的存储区域。 堆栈的两种基本操作是压栈和出栈,对应的指令是PUSH和POP。 2.5 mov ax,8057h push ax mov ax,0f79h push ax pop bx ;bx=0f79h pop [bx] ;DS:[0f79h]=8057h 2.6 AL=89h CF ZF SF OF PF AL=12h 1 0 0 1 1 AL=0afh 0 0 1 0 1 AL=0afh 1 0 1 0 1 AL=00h 0 1 0 0 1 AL=0ffh 0 0 1 0 1 AL=00h 0 1 0 0 1 2.7 W=X+Y+24-Z

2.8 (1)ADD DX,BX (2)ADD AL,[BX+SI] (3)ADD [BX+0B2H],CX (4)ADD WORD PTR [0520H],3412H (5)ADD AL,0A0H 2.9;为了避免与操作数地址混淆,将题中X,Y,Z,V 字操作数改为A,B,C,D mov ax,X ;ax=A imul Y ;dx,ax = A*B (将操作数看作符号数,以下同) mov cx,ax mov bx,dx ;bx,ax <-- dx,ax =A*B mov ax,Z ;ax = C cwd ;dx,ax =C (扩展符号后为双字) add cx,ax adc bx,dx ;bx,cx <-- bx,cx+dx,ax=A*B+C sub cx,540 sbb bx,0 ;bx,cx<-- A*B+C-540 mov ax, V ;ax= D cwd ;dx,ax= D (扩展符号后为双字) sub ax, cx sbb dx, bx ;dx,ax = dx,ax - bx,cx = D-(A*B+C-540) idiv X ;运算结果:[D-(A*B+C-540h)]/A ;ax存商,dx存余数 2.10;(1)xchg的操作数不能是立即数 (2不能对CS直接赋值 (3)两个操作数不能都是存储单元 (4)堆栈的操作数不能是字节量 (5)adc的操作数不能是段寄存器 (6)没有确定是字节还是字操作 (7)in不支持超过FFH的直接寻址 (8)out只能以AL/AX为源操作数 第二章(02) 2.11; 指令AX的值CF OF SF ZF PF Mov ax,1407h1470h----- And ax,ax1470h00000 Or ax,ax1470h00000 Xor ax,ax000011 Not ax0ffffh----- Test ax,0f0f0h0ffffh00101 注意: 1. mov, not指令不影响标志位 2. 其他逻辑指令使CF=OF=0, 根据结果影响其他标志位。

汇编语言习题-测验题答案

汇编语言各章习题、测试题答案 习题一 分别将下列二进制数作为无符号数和带符号数转换为十进制和十六进制数 01110111 00101111 十六进制运算 1A52H+4438H 3967H-2D81H 37H×12H 1250H×4H 将十进制数变为8位补码并做运算(结果用二进制、十六进制、十进制表示) 29+53 73-24 -66+82 -102-15 用压缩BCD码计算(结果用二进制、BCD码、十进制表示) 29+53 73-24 66+18 132+75 符号位扩展(字节扩展为字,字扩展为双字) 20A3H 94H 3456H 7FH EC00H 若机器字长为16位,其无符号数表示范围是多少带符号数表示范围是多少分别用十进制和十六进制表示。 写出下列十六进制数所能代表的数值或编码: (1)38H (2)FFH (3)5AH (4)0DH 将下列十进制数分别转换为二进制、十六进制、二进制补码、压缩BCD码和ASCII码: (1)108 (2)46 (3)-15 (4)254 写出下列算式的8位二进制运算结果,标志位CF、SF、ZF、OF分别是什么值 (1)56+63 (2)83-45 (3)-74+29 (4)-12-37 查表,指出ASCII码0DH、0AH、07H、1BH、20H、60H、50H、70H对应的控制字符。 测验一 单选题: 1.已知X=76,则[X]补= 。 A. 76H B. 4CH 2.已知[X]补=80H,则X= 。 A. 80H B. 0 C. 0FFH D. -80H 3.已知[X]补=98H,则[X]补/2= 。 A. 0CCH C. 49H D. 31H 4.已知X=78,Y=-83,则[X+Y]补= 。 A. 0F5H B. 0A1H C. 0FBH D. 65H 5.将124转换成十六进制数的结果是 A. 7CH B. 7DH C. 7EH D. 7BH 6.将93H看成一个压缩BCD码,其结果是 A. B. C. D. 7. 45转换成二进制数是 A. C. 00101101 D. 8.6CH转换成十进制数是 A. 118 B. 108 C. 48 D. 68 9.将93H扩展为字的结果是 A. FF93H B. 0093H C. 1193H D. 1093H

汇编语言程序设计(第四版)第3章【课后答案】

汇编语言程序设计第四版 【课后习题答案】--囮裑為檤 第3章汇编语言程序格式 〔习题3.1〕伪指令语句与硬指令语句的本质区别是什么?伪指令有什么主要作用? 〔解答〕 伪指令语句与硬指令语句的本质区别是能不能产生CPU动作; 伪指令的作用是完成对如存储模式、主存变量、子程序、宏及段定义等很多不产生CPU动作的说明,并在程序执行前由汇编程序完成处理。 〔习题3.2〕什么是标识符,汇编程序中标识符怎样组成? 〔解答〕 为了某种需要,每种程序语言都规定了在程序里如何描述名字,程序语言的名字通常被称为标识符; 汇编语言中的标识符一般最多由31个字母、数字及规定的特殊符号(如-,$,?,@)组成,不能以数字开头。 〔习题3.3〕什么是保留字,汇编语言的保留字有哪些类型,并举例说明。 〔解答 保留字是在每种语言中规定了有特殊意义和功能的不允许再做其它用处的字符串;汇编语言的保留字主要有硬指令助记、伪指令助记符、运算符、寄存器名以及预定义符号等。汇编语言对大小写不敏感。如定义字节数和字符串的DB就是伪指令助记符。 〔习题3.4〕汇编语句有哪两种,每个语句由哪4个部分组成? 〔解答〕 汇编语句有执行性语句和说明性语句; 执行性语句由标号、硬指令助记符、操作数和注释四部分组成; 说明性语句由名字、伪指令助记符、参数和注释四部分组成 〔习题3.5〕汇编语言程序的开发有哪4个步骤,分别利用什么程序完成、产生什么输出文件。 〔解答〕 ⒈编辑文本编辑程序汇编语言源程序.asm ⒉汇编汇编程序目标模块文件.obj ⒊连接连接程序可执行文件.exe或.com

⒋调试调试程序应用程序 〔习题3.6〕区分下列概念: (1)变量和标号 (2)数值表达式和地址表达式 (3)符号常量和字符串常量 〔解答〕 (1)变量是在程序运行过程中,其值可以被改变的量;标号是由用户自定义的标识符,指向存储单元,表示其存储内容的逻辑地址。 (2)数值表达式一般是由运算符连接的各种常数所构成的表达式,地址表达式是由名字、标号以及利用各种的操作符形成的表达式。 (3)在程序中,为了使常量更便于使用和阅读,经常将一些常量用常量定义语句定义为符号常量,被一对双引号括起来的若干个字符组成的字符序列被称为字符串常量。 〔习题3.7〕假设myword是一个字变量,mybyte1和mybyte2是两个字节变量,指出下列语句中的错误原因。 (1)mov byte ptr [bx],1000 (2)mov bx,offset myword[si] (3)cmp mybyte1,mybyte2 (4)mov al,mybyte1+mybyte2 (5)sub al,myword (6)jnz myword 〔解答〕 (1)1000超出了一个字节范围 (2)寄存器的值只有程序执行时才能确定,而offset是汇编过程计算的偏移地址,故无法确定,改为lea bx,myword[si] (3)两个都是存储单元,指令不允许 (4)变量值只有执行时才确定,汇编过程不能计算 (5)字节量AL与字量myword,类型不匹配 (6)Jcc指令只有相对寻址方式,不支持间接寻址方式 〔习题3.8〕OPR1是一个常量,问下列语句中两个AND操作有什么区别? AND AL,OPR1 AND 0feh 〔解答〕

汇编语言程序设计(第二版) 钱晓捷 课后答案

汇编语言程序设计(第二版)钱晓捷习题答案 第二章(01) 2.1 (1)AX=1200h (2)AX=0100h (3)AX=4C2Ah (4)AX=3412h (5)AX=4C2Ah (6)AX=7856h (7)AX=65B7h 2.2 (1) 两操作数类型不匹配 (2) IP指令指针禁止用户访问 (3) 立即数不允许传给段寄存器 (4) 段寄存器之间不允许传送 (5) 两操作数类型不匹配 (6) 目的操作数应为[ BP ] (7) 源操作数应为[BX+DI] (8) 立即数不能作目的操作数 2.3 lea bx,table ;获取table的首地址,BX=200H mov al,8 ;传送欲转换的数字,AL=8 xlat ;转换为格雷码,AL=12H 2.4 mov ax,8057h push ax mov ax,0f79h push ax pop bx ;bx=0f79h pop [bx] ;DS:[0f79h]=8057h 2.6 AL=89h CF ZF SF OF PF AL=12h 1 0 0 1 1 AL=0afh 0 0 1 0 1 AL=0afh 1 0 1 0 1 AL=00h 0 1 0 0 1 AL=0ffh 0 0 1 0 1 AL=00h 0 1 0 0 1 2.5 堆栈是一种按“先进后出”原则存取数据的存储区域。 堆栈的两种基本操作是压栈和出栈,对应的指令是PUSH和POP。 2.7 W=X+Y+24-Z 2.8 (1)ADD DX,BX (2)ADD AL,[BX+SI] (3)ADD [BX+0B2H],CX (4)ADD WORD PTR [0520H],3412H (5)ADD AL,0A0H 2.9;为了避免与操作数地址混淆,将题中X,Y,Z,V 字操作数改为A,B,C,D mov ax,X ;ax=A imul Y ;dx,ax = A*B (将操作数看作符号数,以下同) mov cx,ax mov bx,dx ;bx,ax <-- dx,ax =A*B mov ax,Z ;ax = C cwd ;dx,ax =C (扩展符号后为双字) add cx,ax

汇编语言程序设计习题答案

第一章. 习题 1.1用降幂法和除法将下列十进制数转换为二进制数和十六进制数: (1) 369 (2) 10000 (3) 4095 (4) 32767 答:(1) 369=1 0111 0001B=171H (2) 10000=10 0111 0001 0000B=2710H (3) 4095=1111 1111 1111B=FFFH (4) 32767=111 1111 1111 1111B=7FFFH 1.2将下列二进制数转换为十六进制数和十进制数: (1) 10 1101 (2) 1000 0000 (3) 1111 1111 1111 1111 (4) 1111 1111 答:(1) 10 1101B=2DH=45 (2) 1000 0000B=80H=128 (3) 1111 1111 1111 1111B=FFFFH=65535 (4) 1111 1111B=FFH=255 1.3将下列十六进制数转换为二进制数和十进制数: (1) FA (2) 5B (3) FFFE (4) 1234 答:(1) FAH=1111 1010B=250 (2) 5BH=101 1011B=91 (3) FFFEH=1111 1111 1111 1110B=65534 (4) 1234H=1 0010 0011 0100B=4660 1.4完成下列十六进制数的运算,并转换为十进制数进行校核: (1) 3A+B7 (2) 1234+AF (3) ABCD-FE (4) 7AB×6F 答:(1) 3A+B7H=F1H=241 (2) 1234+AFH=12E3H=4835 (3) ABCD-FEH=AACFH=43727 (4) 7AB×6FH=35325H=217893 1.5下列各数均为十进制数,请用8位二进制补码计算下列各题,并用十六进制数表示其 运算结果。 (1) (-85)+76 (2) 85+(-76) (3) 85-76 (4) 85-(-76) (5) (-85)-76 (6) -85-(-76) 答:(1) (-85)+76=1010 1011B+0100 1100B=1111 0111B=0F7H;CF=0;OF=0 (2) 85+(-76)=0101 0101B+1011 0100B=0000 1001B=09H;CF=1;OF=0 (3) 85-76=0101 0101B-0100 1100B=0101 0101B+1011 0100B=0000 1001B=09H;CF=0; OF=0 (4) 85-(-76)=0101 0101B-1011 0100B=0101 0101B+0100 1100B=10100001B=0A1H; CF=0;OF=1 (5) (-85)-76=1010 1011B-0100 1100B=1010 1011B+1011 0100B=0101 1111B=5FH; CF=0;OF=1 (6) -85-(-76)=1010 1011B-1011 0100B=1010 1011B+0100 1100B=11110111B=0F7H; CF=0;OF=0 1.6下列各数为十六进制表示的8位二进制数,请说明当它们分别被看作是用补码表示的 带符号数或无符号数时,它们所表示的十进制数是什么?

汇编语言王爽第二版课后答案

第一章基础知识 检测点1.1(第8页) ---------------------- (1) 13 (2) 1024,0,1023 (3) 8192,1024 (4) 2^30,2^20,2^10 (5) 64,1,16,4 (6) 1,1,2,2,4 (7) 512,256 (8) 二进制 注意: 1.第4题中的符号'^'指求幂运算(如: 2^30指2的30次方) 第二章寄存器(CPU工作原理) 检测点2.1(第18页) ---------------------- (1)写出每条汇编指令执行后相关寄存器中的值。第一空:F4A3H 第二空:31A3H 第三空:3123H 第四空:6246H 第五空:826CH 第六空:6246H 第七空:826CH 第八空:04D8H 第九空:0482H 第十空:6C82H 第十一空:D882H 第十二空:D888H 第十三空:D810H 第十四空:6246H (2)只能使用目前学过的汇编指令,最多使用4条指令,编程计算2的4次方。 解答如下: mov ax,2 add ax,ax add ax,ax add ax,ax 检测点2.2(第23页) ---------------------- (1)00010H,1000FH (2)1001H,2000H 第2题说明: 因为段的起始地址要为16的倍数。所以当段地址小于1001H或大于2000H时CPU都无法寻到。 检测点2.3(第33页) ----------------------答:CPU修改了4次IP的值。 情况如下: 第1次:执行完mov ax,bx后 第2次:执行完sub ax,ax后 第3次:读入jmp ax后 第4次:执行完jmp ax后 最后IP的值为0 实验1 查看CPU和内存,用机器指令和汇编指令编程(第33页) ----------------------------------------------------- 1.预备知识:Debug的使用 <此部分略> 2.实验任务(第43页) (1) <此部分略> (2) <此部分略> (3) 通过DEBUG中的D命令查看到主板的生产日期[以月、日、年,分隔符为'/'的格式]存储在内存ffff:0005~ffff:000C(共8个字节单元中)处。此生产日期不能被改变,因为其具有‘只读’属性。 (4) 通过向内存中的显存写入数据,使计算机根据写入的数据进行ASCII转换,并将转换后且可打印的字符输出到屏幕上。<注:关于显存的详细讨论不在此题范围> 第三章寄存器(内存访问) 检测点3.1(第52页) ---------------------- (1)(题目:略) 第一空:2662H 第二空:E626H 第三空:E626H 第四空:2662H 第五空:D6E6H 第六空:FD48H 第七空:2C14H 第八空:0000H 第九空:00E6H 第十空:0000H 第十一空:0026H 第十二空:000CH 提示:此题可在DEBUG中利用E命令在本机上按照题目中所给出的内存单元及其数据进行相应地修改,然后再用A命令进行写入(题目中所给出的)相应的汇编指令,最后再进行T命令进行逐步执行,以查看相应结果。

微型计算机原理第2版西安电子科技大学出版社第五章汇编语言程序设计课后习题答案

第五章汇编语言程序设计 1、画图说明下列语句所分配的存储器空间及初始化的数据值。 (1) BYTE_V AR DB ‘BYTE’,12,-12H,3 DUP(0,7, 2 DUP(1,2),7) (2) WORD_V AR DW 5 DUP(0,1,2),7,-5,’BY’,’TE’,256H 答:(1)(2) BYTE_V AR WORD_V AR 2、假设程序中的数据定义如下: P ARTNO DW ? P NAME DB 16 DUP(?) C OUNT D D ?

P LENTH EQU $- PARTNO 问:PLENTH的值为多少?他表示什么意义? 答:PLENTH的值为22,它表示当前已分配单元空间。 3、有符号定义语句如下: B UF DB 1,2,3,’123’ E BU F DB 0 L EQU EBUF-BUF 问:L的值是多少? 答:L的值为6; 4、假设成序中的数据定义如下: LNAME DB 30 DUP(?) A DDRESS D B 30 DUP(?) C ITY DB 15 DUP(?) C ODE_LIST DB 1,7,8,3,2 (1)用一条MOV指令将LNAME的偏移地址存入BX。 (2)用一条指令将CODE_LIST的头两个字节的内容放入SI。 (3)写一条伪指令定义符使CODE_LENGTH的值等于CODE_LIST域的实 际长度。 答:(1) MOV BX,OFFSET LNAME (2) MOV SI,WORD PTR CODE_LIST (3) CODE_LENGTH EQU $- CODE_LIST 5、对于下面的数据定义,试说明三条MOV语句指令的执行结果。 T ABLEA DW 10 DUP(?) T ABLEB DB 10 DUP(?) T ABLEC DB ‘1234’ 答: M OV AX,LENGTH TABLEA ;(AX)=000AH M OV BL,LENGTH TABLEB ;(BL)=0AH M OV CL,LENGTH TABLEC ;(CL)=01H 6、对于下面的数据定义,各条MOV指令单独执行后,有关寄存器的内容是什么? P LDB DB ? T ABLEA DW 20 DUP(?) T ABLEB DB ‘ABCD’;答:

8086汇编语言复习题解答

8086/8088汇编语言习题解答 第一章 1.1、试根据自己使用计算机的经历,列举几个必须使用或最好是使用汇编 语言编制程序的事例。 1.2、试完成下列数制间的转换 ⑴、十进制数转换为8位二进制数 十进制:100 对应二进制:01100100B 十进制:56 对应二进制:00111000B 十进制:111 对应二进制:01101111B 十进制: 120 对应二进制:01111000B 十进制: 70 对应二进制:01000110B ⑵、8位二进制数(无符号数)转换为十进制数 二进制:01010101B 对应十进制:85 二进制:10101010B 对应十进制:170 二进制:11110000B 对应十进制:240 二进制:00001111B 对应十进制:15 ⑶、十进制数转换为十六进制数 十进制:40 对应二进制:00101000B 十进制:80 对应二进制:01010000B 十进制:105 对应二进制:01101001B 十进制: 114 对应二进制:01101101B 十进制: 207 对应二进制:11001111B

1.3、试把下面用补码表示的二进制数转换为对应的十进制真值 二进制补码:01111000 对应的十进制值数真值:+120 二进制补码:11011001 对应的十进制值数真值:-39 二进制补码:10000001 对应的十进制值数真值:-127 二进制补码:10001000 对应的十进制值数真值:-120 二进制补码:00100111 对应的十进制值数真值:+39 二进制补码:11110000 对应的十进制值数真值:-16 1.4、由键盘输入字符通常都是以该字符的ASCII码形式表示的。若现在从键盘上输入十六进制数0~F,那么应如何处理才能把十六进制转换为4位二进制数0000~1111. 答:将键盘输入的数0~F的ASCII码,每输入一个字符,减去30H后,再存入内存,这样就完成了把从键盘上输入的十六进制ASCII码转换为4位二进制数0000~1111. 1.5、试分别判断下列各组数据中哪个数据最大?哪个最小? ①、A=0.101B B=0,101D C=0,101H ②、A=1011B B=1011D C=1011H 答:第①组:A=1×21-+1×23-=0.625 B=0.101 C=1×161-+163-=0.0625+0.00024414=0.06274414 所以A最大,C最小 第②组,B最大,A=B最小 1.6、现有一个二进制数10110110.若将该数看着是无符号数、原码表示的带符号数、补码表示的带符号数,它对应的十进制数的真值是多少?

相关主题
文本预览
相关文档 最新文档