第3章 寻址方式和指令系统

第三章习题集

一.判断(正确的在括号画“√”,错误的画“×”,每小题2分,共计20分)

1. 所有PC机具有相同的机器指令。 ( × )

2. 指令SBB SI,[SI],源操作数是寄存器间接寻址方式,目的操作数是寄存器寻址方式。

()

3. MOV 20H[BX],TABLE,其中TABLE是符号地址,源操作数是立即数寻址方式,目的操作数

是变址寻址方式。()

4.MOV AX,[BP]的源操作数物理地址为16d ×(DS)+(BP) ( 错 )

5. 偏移地址和有效地址是相等的。()

6.段内转移指令执行结果要改变IP、CS的值。 ( 错 )

7. 8086CPU寄存器中,负责与I/O接口交换数据的寄存器是DX。( × )

8. 堆栈是以先进后出方式工作的存储空间。( √ )

9、立即数只能存放在代码段中。( × )

10、间接寻址不能同时用于目的和源操作数。(√ )

11、指令AND AL,0 和指令MOV AL,0执行后的结果完全一样。( × )

12、字符串操作指令可以使用重复前缀来实现块操作。(√ )

13、NOP指令不使CPU执行任何操作,因此执行它不需要任何时间。(× )

14.OUT DX,AL指令的输出是16位操作数。(错)

15.不能用立即数给段寄存器赋值。

( 对 )

16.所有传送指令都不影响PSW寄存器的标志位。(错)

17.堆栈指令的操作数均为字。

(对)

18.REPE/REPZ是相等/为零时重复操作,其退出条件是:(CX)=0或ZF=0。(错)

19. INC [SI]指令合法。()

20. XCHG AX,ES 指令不合法。()

21. OUT DX,AL 指令不合法。()

22. MOV DS,1234H指令合法。()

23. MOV BL,AX [ ]

24. MOV AL,3F0H [ ]

25. MOV 12H,AL [ ]

26. POP CS [ ]

27. MOV CS,AX [ ]

28. MOV [BX],[DI] [ ]

29. PUSH CS [ ]

30. ADD [1234H],1234H [ ]

二.选择题(每小题1分,共15分)

1. 逻辑地址1000:2000对应的物理地址为( B )。

A、1200H

B、12000H

C、2100H

D、21000H

2. 下面哪个寄存器使用时的默认段寄存器为SS( C )。

A、AX

B、BX

C、SP

D、SI

3. 当使用BP寄存器作基址寻址时,若无指定段替换,则内定在( B )段内寻址。

A.程序

B.堆栈

C.数据

D.附加

4.在下面四组寄存器中,第组都可用于对存储器间接寻址方式的寄存器。

A. AX,BX,CX,IP;

B. BX,SP,DX,SI

C. IP,SP,BP,AX

D. BP,BX,SI,DI

5. 含有立即数的指令中,该立即数被存放在 a 。

A. 累加器中

B. 指令操作码后的内存单元中

C. 指令操作码前的内存单元中

D. 由该立即数所指定的内存单元中

6. 用段基值及偏移量来指明内存单元地址的方式称为( C )。

A、有效地址

B、物理地址

C、逻辑地址

D、相对地址

7. 已知物理地址为0FFFF0H,且段内偏移量为0B800H,若对应的段基地址放在DS中,

则DS=( B )。

A、0FFFFH

B、0F47FH

C、2032H

D、0F000H

8. 含有立即数的指令中,该立即数被存放在 a 。

A. 累加器中

B. 指令操作码后的内存单元中

C. 指令操作码前的内存单元中

D. 由该立即数所指定的内存单元中9.寄存器间接寻址方式中,操作数在 c 中。

A. 通用寄存器

B. 堆栈

C. 存储单元

D. 段寄存器

10.下列指令中,有语法错误的指令是(_D___)。

A. MOV AX,[1000H]

B. LEA AL,1000H

C. MOV [1000H],AL

D. MOV 1000H,AX

11. 下列指令语法有错的是:C

A. MOV AX,1000H

B. MOV AX,BX

C. MOV [AX],[1000H]

D. MOV AX,[1000H]

12. 8086/8088中除______两种寻址方式外,其它各种寻址方式的操作数均在存储器中。

( )

A. 立即寻址和直接寻址

B. 寄存器寻址和直接寻址

C. 立即寻址和寄存器寻址

D. 立即寻址和间接寻址

13.指令()的源操作数的寻址方式为直接寻址。

A. MOV [2000H],AL

B. IN AL,DX

C. XOR AL,[2000H]

D. MOV AX,2000H

14. 下列指令中,执行速度最快的指令是(____)。A

A. ADD AX,10

B. ADD AL,[SI+10H]

B. ADD AX,CX

C. ADD AX,[BX]

15. 下列指令中,不影响进位的指令是:( C )

A. ADD AX,BX

B. MUL BL

C. INC BX

D.SUB AL,BH

16. 执行PUSH AX指令后,堆栈指针SP的内容:B

A.减1

B. 减2

C. 加1

D. 加2

17. 下面对PUSH指令描述正确的是( C )。

A. PUSH只能将字节型数据压入堆栈。

B. PUSH只能将字型数据压入堆栈。

C. PUSH只能将双字节型数据压入堆栈。

D. PUSH可对任何类型数据操作。

18. 当对两个组合(压缩)BCD数(字节)相加后,应使用( B )调整。

A. AAA

B. DAA

C. AAS

D. DAS

19. 若CX=3,AX=1,执行完SHL AX,CL指令后,AX=( D )。

A. 1

B. 2

C.4

D. 8

20. 8086中( D )的源操作数和目的操作数可同时为存储器数。

A、数据传送指令

B、算术、逻辑运算指令

C、控制转移指令

D、串操作指令

21. 下列指令中隐含使用寄存器SI的是:B

A HLT B. CMPS

B C. XLAT D. NOT

22.下列指令中,有语法错误的指令是(_D__)。

A. MOV AX,[BX][SI]

B. LEA DI,[2000H]

C. OUT DX,AL

D. SHL BX,2

23. 将AL中带符号数乘10送AL,正确的程序段是( AB )。

A. SAL AL,1

B. ADD AL,AL

MOV BL,AL MOV BL,AL

SAL AL,1 ADD AL,AL

SAL AL,1 ADD AL,AL

ADD AL,BL ADD AL,AL

C. MOV CL,4

D. ADD AL,AL

MOV BL,AL ADD AL,AL

SAL AL,CL ADD AL,AL

ADD AL,BL ADD AL,AL

ADD AL,AL

24. 假定(SS)=2000H,(SP)=0100H,(AX)=2107H,执行指令PUSH AX后,存放数据

21H的物理地址是( D )。

A、20102H

B、20101H

C、200FEH

D、200FFH

25.设(SS)=4000H,(SP)=1000H,(AL)=78H,(AH)=0FCH,(DX)=5609H。现要求把AL

26.在串传送指令MOVSB中,源串操作数和目的串操作数使用的数据段和偏移地址指针寄存器为。

A. DS和SI; ES和DI

B. DS和DI; ES和SI

C. ES和SI; DS和DI

D. DS和SI; DS和DI;

27. c 寻址方式的跨段前缀不可省略。

A. DS:[BP]

B. DS:[SI]

C. DS:[DI]

D. SS:[BP]

28.若要检查BX寄存器中的D12位是否为1,应该用 d 指令。

A. OR BX,1000H

B. TEST BX,1000H

JNZ NO JNZ YES

C. XOR BX,1000H

D. AND BX,1000H

JZ YES JNZ YES

29.用BP作基址变址寻址时,操作数所在的段是当前 c 。

A. 数据段

B. 代码段

C. 堆栈段

D. 附加段

30.执行下列指令后:

MOV AX,1234H

MOV CL,4

ROL AX,CL

DEC AX

MOV CX,4

MUL CX

HLT

(AX)= a

A. 8D00H

B. 9260H

C. 8CAOH

D. 0123H

31. 下列程序:

NEXT:MOV AL,[SI]

MOV ES:[DI],AL

INC SI

INC DI

LOOP NEXT

可用指令 d 来完成该功能。

A. REP LODSB

B. REP STOSB

C. REPE SCASB

D. REP MOVSB

32. 设(AL)=-68,(BL)=86,执行SUB AL,BL指令后,正确的结果

是 c 。

A. CF=1

B. SF=1

C. OF=1

D. ZF=1

33.下列4条指令中,有几条指令需要使用DX寄存器( B )。

MUL BX; DIV BL; IN AX,20H; OUT 20H,AL;

A.1条 B.2条 C.3条 D.4条

34.下列指令中,不影响标志寄存器的标志位的指令是( D )。

A.SUB AX,BX B.ROR AL,1

C.JNC Label D.INT n

35.下列指令经汇编后,机器指令代码最长的是( D )。

A.MOV AX,0 B.SUB AX,AX

C.XOR AX,AX D.MUL BX

36.假设AX和BX寄存器中存放的是有符号整数,为了判断AX寄存器中的数据是否大于BX寄存器中的数据,应采用指令序列( D )。

A.SUB AX,BX B.SUB AX,BX

JC label JNC label

C.CMP AX,BX D.CMP AX,BX

JA label JG label

37.设DS=8225H,DI=3942H,指令NEG BYTE PTR[DI]操作数的物理地址是(A )

A、85B92H

B、86192H

C、BB690H

D、12169H

38.下列寄存器组中在段内寻址时可以提供偏移地址的寄存器组是( B )

A、AX,BX,CX,DX

B、BX,BP,SI,DI

C、SP,IP,BP,DX

D、CS,DS,ES,SS

39.循环指令LOOPNZ终止循环的条件是( B )。

A、CX=0,且ZF=0

B、CX=0,或ZF=1

C、CX10,且ZF=0

D、CX10,或ZF=1

40.对寄存器AX的内容乘以4的正确指令序列是( B )。

A、SHR AX,1 SHR AX,1

B、SHL AX,1 SHL,AX,1

C、ROL AX,1 ROL AX,1

D、RCR AX,1 RCR AX,1

41.设DH=10H,执行NEG DH指令后,正确的结果是( B )。

A、DH=10H CF=1

B、DH=0F0H CF=0

C、DH=10H CF=0

D、DH=0F0H CF=1

42.下列传送指令中有语法错误的是( A )。

A、MOV CS,AX

B、MOV DS,AX

C、MOV SS,AX

D、MOV ES,AX

43.下面指令执行后,改变AL寄存器内容的指令是( D )。

A、TEST AL,02H

B、OR AL,AL

C、CMP AL,BL

D、AND AL,BL

44.执行除法指令后,影响的标志位是( D )。

A、CF,OF

B、SF,ZF

C、CF,OF,SF

D、AF,CF,OF,PF,SF,ZF都不确定

45.执行下面指令序列后,结果是( A )。

MOV AL,82H

CBW

A、AX=0FF82H

B、AX=8082H

C、AX=0082H

D、AX=0F82H

46. MOV SP,3210H

PUSH AX

执行上述指令序列后,SP寄存器的值是( C )。

A、3211H

B、320EH

C、320FH

D、3212H

47. AL和VAR字节单元中分别存放一个带符号数,执行CMP AL,VAR时,如AL》VAR,那么溢出位和符号位的关系是( D )。

A、OF=SF

B、OF1SF

C、OF=SF=1

D、OF=SF=0 48.检查BUF的内容是否为正偶数,如是正偶数,则0 TAL。下面程序段正确的是( )。

A、MOV AL,BUF

JS K1

SHR AL,1

JNC K1

MOV AL,0

K1:……

B、MOV AL,BUF

AND AL,11

JNZ K2

MOV AL,0

K2:……

C、MOV AL,BUF

TEST AL,81H

JNZ K3

MOV AL,0

K3:……

D、MOV AL,BUF

JNP K4

TEST AL,80H

JNZ K4

MOV AL,0

K4:……

49. 堆栈的工作方式是( )

A.先进先出

B.随机读写

C.只能读出不能写入

D.后进先出50.现行数据段位于存储器BOOOOH到BOFFFH字节单元,则段寄存器DS的内容及该段长度(字节数)分别为:()

A. BOOOH,1000H B. O0OOH,OFFFH

C. BOOOH,OFFFH

D. BOOOH,OOFFH

三.多项选择题(每题有多个正确答案,选出所有正确答案,多选、少选均不得分

1. 汇编语言操作数类型有( ABC )。

A、立即数

B、寄存器数

C、存储器数

D、素数

2. 下列叙述正确的有( ABCD )。

A、REPZ和REPE执行相同的操作。

B、IRET用于中断服务程序的返回。

C、条件跳转指令是以PSW中的标志位为控制跳转操作的依据。

D、LOOP是以CX的值是否等于0来控制循环的。

3. 下列指令中,隐含使用AL寄存器的指令有( 4 )条。SCASB;CBW;HLT;MUL BL ;

CMPSB;XLAT

4.下列指令中源操作数使用寄存器寻址方式的有b,f 。

A)MOV BX,BUF[SI] B)ADD [SI+50],BX C)SUB AX,2

D)CMP AX,DISP[DI] E)MUL VAR[BX] F)PUSH CX

5.将累加器AX的内容清零的正确指令是b,c,d 。

A)CMP AX,AX B)SUB AX,AX C)AND AX,0 D)XOR AX,AX

6.正确将字变量WORD VARR偏移地址送寄存器AX的指令是c,d 。

A)MOV AX,WORD VARR B)LES AX,WORD VARR

C)LEA AX,WORD VARR D)MOV AX,OFFSET WORD VARR

7.调用CALL指令可有a,b,c,d,e 。

A)段内直接 B)段内间接 C)短距离(SHORT)

D)段间直接 E)段间间接

8.将AL中带符号数乘10送AL,正确的程序是 b d 。

A)ADD AL,AL B)ADD AL,AL

ADD AL,AL MOV BL,AL

ADD AL,AL ADD AL,AL

ADD AL,AL ADD AL,AL

ADD AL,AL ADD AL,BL

C)MOV CL,4 D)SAL AL,1

MOV BL,AL MOV BL,AL

SAL,AL,CL SAL AL,1

ADD AL,BL SAL AL,1

ADD AL,BL ADD AL,BL

9. 在下列指令中,隐含使用AL寄存器的指令有a,b,f 。

A)SCASB B)XLAT C)MOVSB D)DAA E)NOP F)MUL BH

四.填空题

1. 机器指令由操作码(操作数) 和操作数(操作码) 两部分组成。

2. 8086/8088CPU中存储单元的物理地址 =(__________)×______+__________;若(CS)

=0200H,(IP)=0051H,则物理地址为__________。

3.若一个数据块在内存中的起始地址为9E40H:C52AH,则这个数据块的起始地址的物理地址为(AA92AH )。

4.设有指令MOV [BP][SI], 2000H,源操作数为寻址方式,目的操作数为方式。

5.指令JMP NEAR PROG1,在程序代码段中的偏移地址为2013H(这是该指令第一字节的

偏移地址)。组成该指令的三字节机器码为E91234H(其中E9H为操作码)。执行该指令后,程序转移去的偏移地址为 H

6.假设(DS)=2000H,(BX)=1256H,(SI)=528FH,位移量TABLE=20A1H,(232F7H)=3280H,(264E5H)=2450H,则

执行指令JMP BX后,(IP)= 1056H ;

执行指令JMP TABLE[BX]{SI}后,(IP)= 3280H ;

执行指令JMP [BX][SI]后,(IP)= 2450H 。

7. ADD AX,BL指令出错的原因是(4);MOV [DI],[SI]指令出错的原因是(5);

INC 2030H指令出错的原因是(6);OUT 378H,AL指令出错的原因是(7)。8.设堆栈指针(SP)=6318H,此时若将AX、BX、CX、DX依次推入堆栈后,(SP)=( 6310H )。9.下面程序段执行后,(AX)= 0132H ,(BX)= 0112H 。

MOV AX,92H

MOV BX,10H

ADD BX,70H

ADC AX,BX

PUSH AX

MOV AX,20H

POP BX

ADD AX,BX

10. 已知BX=7830H,CF=1,执行指令:ADC BX,87CFH之后,BX=__0000H ___,标志位的

状态分别为CF=_1__,ZF=__1_____, OF=___0___,SF=___0___。

11.(SP)=1000H,(SS)=3000H,(31000H)=2000H,(DS)=4000H,(BX)=1200H,则 POP [BX] 指令执行完后(SP)= H (BX)= H (41200H)= H (一个字的内容)

12.用指令SUB对两个无符号8位二进制数进行减法运算后,结果为0FDH,且标志位CF =1,OF=1,此结果的十进制数应为

13. (AX)=8002H,(BX)=0001H,则,指令MUL BX执行后,(AX)= H;指令IMUL BX

执行后,(AX)= H

14. (AX)=4F08H,(CF)=0,(CL)=4,则 RCR AX,CL指令执行完(AX)= H,(CF)

=

15. 假设程序段如下:

MOV BX,2340H

MOV CL,5

ROL BX,CL

问: BX的值为(20)。

16. S)=0F800H,(DI)=180AH,(CX)=0105H,(0F980A)=0064H则指令执行SAR [DI], CL 后,(0F980A)=________H,CF=____

17.下面程序段执行后,(AX)=(1 )。

MOV SI,0

MOV DI,0

MOV CX,60

REP MOVSB

MOV AX,SI

18. 对于指令XCHG BX,[BP+SI],如果指令执行前,(BX)=6F30H,(BP)=0200H,(SI)

=0046H,(SS)=2F00H,(2F246H)=4154H,则执行指令后,(BX)= 4154H ,(2F246H)= 6F30H 。

19. 若AX=5555H,BX=FF00H,试问在下列程序段执行后,AX= (10),BX= (11)

和CF= (12)。

AND AX,BX

XOR AX,AX

NOT BX

20. 若(DS)=2000H,(AX)=3456H。CPU执行MOV [2000H],AX指令后,AX寄存器的低

八位存储在内存的物理地址为(13),AX寄存器的高八位存储在内存的物理地址为(14)。

21.假设(DS)=3000H,(BX)=0808H,(30808H)=012AAH,(3080A)=0BBCCH,当执行指令“LES DI,[BX]”后,(DI)= 12aa H ,(ES)= bbccH 。

22.假设(BX)= 0449H,(BP)= 0200H,(SI)= 0046H,(SS)= 2F00H,(2F246H)= 7230H 则执行XCHG BX,[BP+SI]指令后,(BX)= 7230H 。23.执行下列指令序列后,完成的功能是将(DX,AX)的值除4 。

MOV CX,4

NEXT: SHR DX,1

RCR AX,1

LOOP NEXT

24.下列指令执行后,BX= d36ah 。

MOV CL,3

MOV BX,4DABH

ROL BX,1

ROR BX,CL

五. 读程序,指出结果。

3. 执行下列指令后AL内容是( 11H ).

MOV AL,08H

ADD AL,09H

4. 执行下面的程序段后,AX的内容是( 5678H ),BX的内容是( 1234H ).

MOV AX,1234H

MOV BX,5678H

PUSH AX

PUSH BX

POP AX

POP BX

5. 执行下面的程序段后,AL的内容是( 80H ),BL的内容是( 0 ).

MOV AL,20H

TEST AL,80H

JNZ DO1

MOV BL,0

JMP DO2

DO1:MOV BL,1

DO2:HLT

5、下面程序段执行后,标志位CF=(1 ),OF=(1)

MOV AL,-64

MOV BL,-70

ADD AL,BL

6、下面程序段执行后,(AX)=(1 )。

MOV SI,0

MOV DI,0

MOV CX,60

REP MOVSB

MOV AX,SI

7、下面程序段执行后,(AX)=(0132H ),(BX)=(0112H )。

MOV AX,92H

MOV BX,10H

ADD BX,70H

ADC AX,BX

PUSH AX

MOV AX,20H

POP BX

ADD AX,BX

1、源程序如下:(5分)

MOV AH,0

MOV AL,9

MOV BL,8

ADD AL,BL

AAA

AAD

DIV AL

结果AL_________,AH=___________,BL=_____________。

AL=01H (2分) AH=00 H (2分) BL=08H (1分)

1、已知AX=0FF60H,CF=1

MOV DX,96

XOR DH,0FFH

SBB AX,DX

执行上述指令序列后,AX=_________0_______,CF=_________0_______ 2、设寄存器AL,BL,CL中内容均为76H,

XOR AL,0FH

AND BL,0FH

OR CL,0FH

执行上述指令序列后,AL=_______________79H_________

BL=____________6H_______________,CL=____________7FH_________。

3、已知AX=0A33AH,DX=0F0F0H

AND AH,DL

XOR AL,DH

NEG AH

NOT AL

执行上述指令序列后,AH=________60H_______,AL=_________35h__________

2、源程序如下:(4分)

MOV AL,0B7H

AND AL,0DDH

XOR AL,81H

OR AL,33H

JP LAB1

JMP LAB2

试问: 执行程序后AL=_______;

程序将转到哪一个地址执行:__________。

37H (2分) LAB2(2分)

六.问答题

1.分别指出下列指令中源操作数和目的操作数的寻址方式

(1) MOV EAX,12345678H

(2) MOV [ESI],AX

(3) MOV 2[EDI],BX

(4) MOV 2[BX+SI],DX

(5) MOV AX,[10]

(6) MOV EAX,2[ESI*4]

(7) MOV EAX,2[EBX*8][EDI]

(8) MOV EAX,[ESI][EBP+0FFFF0H]

(9) MOV EAX,2[EDI*8][EBP+80]

解:

2.某指令对应当前段寄存器CS=FFFFH,指令指针寄存器IP=FF00H,此时,该指令的物理

地址为多少?指向这一物理地址的CS 值和IP 值是唯一的吗?试举例说明 (4分)

故物理地址为0FEF0H 。 (2分)

指向该物理地址的CS ,IP 值不唯一。

例如:CS :IP=0000:FEF0H 也指向该物理地址。 (2分)

3. (AX )=1234H ,(BX )=5678H ,写出各条指令分别执行后,寄存器内容的变化及FLAG

寄存器的变化情况。(10分)

1.ADD AX ,BX 2.INC BX

CF=0;ZF=0;PF=1;OF=0 CF 保持;ZF=0;PF=0;OF=0 3.SBB BX ,AX 4.NEG BX CF=0;ZF=0;PF=0;OF=0 PF=1 4. 指出下列指令的错误原因

(1) INC [ESI] (2) MOV AX,BL (3) MOV 2,EAX (4) MOV AX,[DX] (5) MOV AX,[BX+BP] (6) MOV AX,[SI+DI] (7) MOV AH,300

(8) MOV [ESI],[EDI] (9) PUSH AL (10) POP DH (11) MOV CS,AX (12) MOV SS,AX (13) SHL AX,3

5.比较下列两条指令,指出它们的区别

MOV EAX,[ESI]

MOV [ESI],EAX

解:这两条指令的区别是,指令“MOV EAX,[ESI]”是将内存单元DS:[ESI]中的内容读到CPU中的寄存器EAX;而指令“MOV [ESI],EAX”是将CPU中寄存器EAX中的内容写入内存单元DS:[ESI]。

6.比较下列两条指令,指出它们的区别

MOV AX,[SI]

LEA AX,[SI]

解:这两条指令的区别是,指令“MOV AX,[SI]”是将内存单元DS:[SI]中的内容读到CPU中的寄存器AX;而指令“LEA AX,[SI]”是将内存单元DS:[SI]的偏移地址送到AX。7.假定(AX)= 5678H,不用计算,写出下面每条指令执行后(AX)=?

① TEST AX,1

② XOR AX,EAX

③ SUB AX,AX

④ CMP AX,8765H

解:①(EAX)=5678H ② 0 ③ 0 ④(AX)= 5678H

8.假定(AX)=1234H,(BX)=5678H指出下列指令中

①哪些指令执行后,源操作数和目的操作数都不发生变化?

②哪些指令执行后,源操作数和目的操作数都发生变化?

③哪些指令执行后, 源操作数不发生变化而目的操作数发生变化?

指令:

① TEST AX,1234

② AND AX,BX

③ SUB AX,1234H

④ CMP AX,1234H

⑤ XCHG AX,BX

解:

①指令“TEST AX,1234”和指令“CMP AX,1234H”执行后,源操作数和目的操作数都不发生变化。

②指令“XCHG AX,BX”执行后,源操作数和目的操作数都发生变化。

③指令“AND AX,BX”和“SUB AX,1234H”执行后, 源操作数不发生变化而目的操作数发生变化。

9.源程序如下:(5分)

CMP AX,BX

JNC L1

JZ L2

JNS L3

JNO L4

JMP L5

设AX=74C3H,BX=95C3H,则程序最后将转到哪个标号处执行?试说明理由。

∵74C3H

- 95C3H

DF00H

且有:CF=1,ZF=0,SF=1,OF=1

∴程序将转到L5标号处执行。(5分)

10. 已有AX=E896H,BX=3976H,若执行ADD BX,AX指令,则结果BX,AX,标志位

CF,OF,ZF各为何值?(5分)

BX=220CH (1分) AX=E896H (1分) CF=1 (1分) OF=0 (1分) ZF=0 (1分)

第三章课后习题参考答案

第三章课后习题参考答案 (一)填空题 1.一台计算机的指令系统就是它所能执行的指令集合。 2.以助记符形式表示的计算机指令就是它的汇编语言。 3.按长度分,MCS-51指令有)一字节的、二字节的和三字节的。 4.在寄存器寻址方式中,指令中指定寄存器的内容就是操作数。 5.在直接寻址方式中,只能使用八位二进制数作为直接地址,因此其寻址对象只限于内部RAM 。 6.在寄存器间接寻址方式中,其“间接”体现在指令中寄存器的内容不是操作数,而是操作数的地址。 7.在变址寻址方式中,以 A 作为变址寄存器,以 PC 或 DPTR 作基址寄存器。 8.在相对寻址方式中,寻址得到的结果是程序转移的目的地址。 9.长转移指令LJMP addr16使用的是相对寻址方式。 10.假定外部数据存储器2000H单元的内容为80H,执行下列指令后,累加器A的内容为 80H 。 MOV P2,#20H MOV R0,#00H MOVX A,@Ro 11.假定累加器A的内容为30H,执行指令: 1000H: MOVC A,@A+PC 后,把程序存储器 1031H 单元的内容送累加器A中。 12.假定DPTR的内容为8100H,累加器A的内容为40H,执行下列指令: MOVC A,@A+DPTR

后,送入A的是程序存储器 8140H 单元的内容。 13.假定(SP)=60H,(ACC)=30H,(B)=70H,执行下列指令: PUSH ACC PUSH B 后,SP的内容为 62H ,61H单元的内容为 30H ,62H单元的内容为 70H 。 14.假定(SP)=62H,(61H)=30H,(62H)=70H。执行下列指令: POP DPH POP DPL 后,DPTR的内容为 7030H ,SP的内容为 60H 。 15. 假定已把PSW的内容压入堆栈,再执行如下指令: MOV R0,SP ORL @Ro,#38H POP PSW 实现的功能是(修改PSW的内容,使F0、RS1、RS0三位均为1)。 16. 假定(A)=85H,(R0)=20H,(20H)=0AFH,执行指令: ADD A,@R0 后,累加器A的内容为 34H ,CY的内容为 1 ,AC的内容为 1 ,OV的内容为 1 。 17. 假定(A)=85H,(20H)=0FFH,(CY)=1,执行指令: ADDC A,20H 后,累加器A的内容为 85H ,CY的内容为 1 ,AC的内容为 1 ,OV 的内容为 0 。 18. 假定(A)=0FFH,(R3)=0FH,(30H)=0F0H,(R0)=40H,(40H)=00H。执行指令:

第3章 寻址方式和指令系统

第三章习题集 一.判断(正确的在括号画“√”,错误的画“×”,每小题2分,共计20分) 1. 所有PC机具有相同的机器指令。 ( × ) 2. 指令SBB SI,[SI],源操作数是寄存器间接寻址方式,目的操作数是寄存器寻址方式。 () 3. MOV 20H[BX],TABLE,其中TABLE是符号地址,源操作数是立即数寻址方式,目的操作数 是变址寻址方式。() 4.MOV AX,[BP]的源操作数物理地址为16d ×(DS)+(BP) ( 错 ) 5. 偏移地址和有效地址是相等的。() 6.段内转移指令执行结果要改变IP、CS的值。 ( 错 ) 7. 8086CPU寄存器中,负责与I/O接口交换数据的寄存器是DX。( × ) 8. 堆栈是以先进后出方式工作的存储空间。( √ ) 9、立即数只能存放在代码段中。( × ) 10、间接寻址不能同时用于目的和源操作数。(√ ) 11、指令AND AL,0 和指令MOV AL,0执行后的结果完全一样。( × ) 12、字符串操作指令可以使用重复前缀来实现块操作。(√ ) 13、NOP指令不使CPU执行任何操作,因此执行它不需要任何时间。(× ) 14.OUT DX,AL指令的输出是16位操作数。(错) 15.不能用立即数给段寄存器赋值。 ( 对 ) 16.所有传送指令都不影响PSW寄存器的标志位。(错) 17.堆栈指令的操作数均为字。 (对) 18.REPE/REPZ是相等/为零时重复操作,其退出条件是:(CX)=0或ZF=0。(错) 19. INC [SI]指令合法。() 20. XCHG AX,ES 指令不合法。() 21. OUT DX,AL 指令不合法。() 22. MOV DS,1234H指令合法。() 23. MOV BL,AX [ ] 24. MOV AL,3F0H [ ] 25. MOV 12H,AL [ ] 26. POP CS [ ] 27. MOV CS,AX [ ] 28. MOV [BX],[DI] [ ]

第3章答案指令系统1-40

第3章指令系统 1,简述下列基本概念:指令,指令系统,机器语言,汇编语言,高级语言。1、指令:CPU根据人的意图来执行某种操作的命令 指令系统:一台计算机所能执行的全部指令集合 机器语言:用二进制编码表示,计算机能直接识别和执行的语言 汇编语言:用助记符、符号和数字来表示指令的程序语言 高级语言:独立于机器的,在编程时不需要对机器结构及其指令系统有深入了解的通用性语言 2,什么是计算机的指令和指令系统? 2、见第1题。 3,简述89C51汇编指令格式。 3、操作码[目的操作数] [,源操作数] 4,简述89C51寻址方式和所能涉及的寻址空间。 5,要访问特殊功能寄存器和片外数据寄存器,应采用哪些寻址方式? 5、SFR:直接寻址,位寻址,寄存器寻址;片外RAM:寄存器间接寻址 6,在89C51片内RAM中,已知(30H)=38H, (38H)=40H, (40H)=48H, (48H)=90H, 请分析下面各是什么指令,说明源操作数的寻址方式以及按顺序执行每条指令后的结果。 6、MOV A,40H ;直接寻址(40H)→A MOV R0,A ;寄存器寻址(A)→R0 MOV P1,#0F0H ;立即数寻址0F0→P1

MOV @R0,30H ;直接寻址(30H)→(R0) MOV DPTR,#3848H ;立即数寻址3848H→DPTR MOV 40H,38H ;直接寻址(38H)→40H MOV R0,30H ;直接寻址(30H)→R0 MOV P0,R0 ;寄存器寻址(R0 )→P0 MOV 18H,#30H ;立即数寻址30H→18H MOV A,@R0 ;寄存器间接寻址((R0)) →A MOV P2,P1 ;直接寻址(P1)→P2 最后结果:(R0)=38H,(A)=40H,(P0)=38H,(P1)=(P2)=0F0H,(DPTR)=3848H,(18H)=30H,(30H)=38H,(38H)=40H,(40H)=40H,(48H)=38H 注意:→左边是内容,右边是单元 7,对89C51片内RAM的高128字节的地址空间寻址要注意什么 7、用直接寻址,位寻址,寄存器寻址 8,指出下列指令的本质区别。 8,MOV A,DATA ;直接寻址2字节1周期 MOV A,#DATA ;立即数寻址2字节1周期 MOV DATA1,DATA2 ;直接寻址3字节2周期 MOV 74H,#78H ;立即数寻址3字节2周期 如果想查某一指令的机器码,字节数或周期数可查阅书本后面的附录A 9,设R0内容为32H, A的内容为48H, 片内RAM的32H单元内容为80H, 40H单元内容为08H, 请指出在执行下列程序段后上述各单元内容的变化。 9、 MOV A,@R0 ;((R0))=80H→A MOV @R0,40H ;(40H)=08H→(R0) MOV 40H,A ;(A)=80→40H MOV R0,#35H ;35H→R0 最后结果:(R0)=35H (A)=80H,(32H)=08H,(40H)=80H 10,如何访问SFR,可使用哪些寻址方式? 10、用直接寻址,位寻址,寄存器寻址 11,如何访问片外RAM,可使用哪些寻址方式? 11、只能采用寄存器间接寻址(用MOVX指令) 12,如何访问片内RAM,可使用哪些寻址方式? 12、低128字节:直接寻址,位寻址,寄存器间接寻址,寄存器寻址(R0~R7) 高128字节:直接寻址,位寻址,寄存器寻址 13,如何访问片内外程序存储器,可使用哪些寻址方式? 13、采用变址寻址(用MOVC指令)

第三章寻址方式与指令系统

第三章寻址方式与指令系统 一:选择题 1:下列指令中正确的是() A:MOV BX,AL B:MOV BL,AX C:MOV BL,AL D:MOV BL,BP 2:下列指令不合法的指令是() A:IN AX,03F8H B:MOV AX,BX C:REP CMPSB D:SHR BX,CL 3:下列指令中正确的是() A:MOV 100,CL B:MOV CL,100H C:MOV CL,1000 D:MOV CL,100 4:下列指令中正确的是() A:MOV SS,2400H B:MOV 2400H,SS C:MOV SS,DS D:MOV SS,SP 5:下列指令中正确的是() A:XCHG AH,AL B:XCHG AL,20H C:XCHG AX,DS D:XCHG[BX],[20H] 6:执行完下列程序后,BX寄存器的内容是() MOV CL,3 MOV BX,0B7H ROL BX,1 ROR BX,CL A:002DH B:00EDH C:C02DH D:000DH 7:在程序运行过程中,确定下一条指令的物理地址的计算表达式是() A:CS×16+IP B:BX×16+DI C:SS×16+SP D:ES×16+SI 8:寄存器间接寻址方式中,操作数在()中 A:通用寄存器B:堆栈C:主存单元D:段寄存器 9:下列指令,指令()先执行CX-1赋给CX操作,然后再根据CX的值决定是否转移、循环或进行重复操作。 A:JNC B:REP C:JCXZ D:LOOP 10:运算型指令的寻址和控制转移型指令的寻址,其不同点在于() A:前者取操作数,后者决定程序的转移地址B:后者取操作数,前者决定程序的转移地址 C:两者都是取操作数D:两者都是决定程序的转移地址 11:在PC系列机中调试汇编语言程序的工具是DEBUG。用DEBUG调试程序时,可以在目标程序中设断点,或用单步跟踪来找出程序中的毛病。断点只能在RAM中设置,不能在ROM中设置,这是因为() A:ROM不能存放汇编程序B:ROM中数据不能修改 C:ROM不能放入断点中断指令D:ROM不能保护断点 12:DEBUG调试工具是汇编语言最有力的调试手段,当用D命令时显示的结果如下: 0000:0080 72 10 A7 00 7C 10 A7 00—4F 03 62 06 8A 03 62 06 0000:0090 17 03 62 06 86 10 A7 00—90 10 A7 00 9A 10 A7 00 INT 21H是最常用的DOS中断,试确定INT 21H的中断向量为 A:1072H:00A7H B:7C10H:A700H C:00A7H:107CH D;107CH:00A7H 13:设AL和BL是带符号数,当AL≤BL时转至NEXT处,在CMP AL,BL指令后应选择正确的条件指令是 A:JBE B:JNG C:JNA D:JNLE 二:填空题 1:若累加器AX中的内容为4142H,执行指令CMP AX,4041H后,(AX)= 。执行SUB AX,4041H 后,(AX)= 。 2:用CBW指令生成双倍长度的被除数存放在。用CWD指令生成双倍长度的被除数存放在。

第3章 8086寻址方式和指令系统-题

第3章8086寻址方式和指令系统 一、单项选择题(共50小题) 1、指令MOV AX,[3070H]中源操作数的寻址方式为() A、寄存器间接寻址 B、立即寻址 C、直接寻址 D、变址寻址 2、DS是() A、数据段寄存器 B、代码段寄存器 C、堆栈段寄存器 D、附加数据段寄存器 3、CF是() A、进位标志位 B、辅加进位标志位 C、符号标志位 D、全零标志位 4、SS是_() A、数据段寄存器 B、代码段寄存器 C、堆栈段寄存器 D、附加数据段寄存器 5、指令MOV [BX],AX中 A、目的操作数是寄存器操作数 B、源操作数是存储器操作数 C、目的操作数是存储器操作数 D、源操作数是立即操作数 6、CS是() A、数据段寄存器 B、代码段寄存器 C、堆栈段寄存器 D、附加数据段寄存器 7、指令MOV AX,[BP]中 A、源操作数存于数据段 B、源操作数存于堆栈段 C、目的操作数存于数据段 D、目的操作数存于堆栈段 8、BX是() A、8位通用寄存器 B、16位通用寄存器 C、16位段寄存器 D、16位变址寄存器 9、ZF是() A、进位标志 B、方向标志 C、符号标志 D、零标志 10、IP是() A、指令指针寄存器 B、堆栈指针寄存器 C、通用寄存器 D、变址寄存器 11、SI是() A、8位通用寄存器 B、16位通用寄存器 C、16位段寄存器 D、指令指针寄存器 12、DL是() A、16位段寄存器 B、16位通用寄存器 C、8位通用寄存器 D、16位标志寄存器 13、指令IDIV BX 的含义是() A、(AX)/(BX) B、(DX:AX)/(BX) C、(AL)/(BX) D、(AL)/(BL) 14、下面4个寄存器中,不能作为间接寻址的寄存器是() A、BX B、DX C、BP D、DI 15、设SS=2000H,执行下列程序段后SP=() MOV SP,2000H

计算机组成原理 第三章 答案

第3 章 6 7 11.设某机字长32位,CPU 有32个32位的通用寄存器,设计一个能容纳64种操作 的单字长指令系统。 (1)如果是存储器间接寻址方式的寄存器-存储器型指令,能直接寻址的最大主存 空间是多少? (2)如果采用通用寄存器作为基址寄存器,能直接寻址的最大主存空间又是多少? 解:因为计算机中共有64条指令,所以操作码占6位;32个通用寄存器,寄存器编号占5位;其余部分为地址码或标志位。 (1)如果是存储器间接寻址方式的寄存器-存储器型指令,操作码6位,寄存器编号 5位,间址标志1位,地址码20位,直接寻址的最大主存空间是220字。 (2)如果采用通用寄存器作为基址寄存器,EA =(Rb )+ A ,能直接寻址的最大主存空间是232字。 12.已知某小型机字长为16位,其双操作数指令的格式如下: 0567815 OP R A 其中:OP 为操作码,R 为通用寄存器地址。试说明下列各种情况下能访问的最大主存区 域有多少机器字? (1) A 为立即数。 (2) A 为直接主存单元地址。 (3) A 为间接地址(非多重间址)。 (4) A 为变址寻址的形式地址,假定变址寄存器为R1(字长为16位)。 解:(1)1个机器字。 (2)256个机器字。 (3)65536个机器字。 (4)65536个机器字。 13.计算下列4条指令的有效地址(指令长度为16位)。 (1)000000Q (2)100000Q (3)170710Q (4)012305Q 假定:上述4条指令均用八进制书写,指令的最左边是一位间址指示位@(@=0,直接寻址;@=1,间接寻址),且具有多重间访功能;指令的最右边两位为形式地址;主存容 量215单元,表3唱4为有关主存单元的内容(八进制)。 计算机组成原理教师用书 6 8 表3唱4 习题13 的表格 地址内容 000001000020000104671000002054304000031000000000410254300005100001000060632150000707771000010100005解:(1)000000Q 因为指令的最高位为0,故为直接寻址,EA = A =00000Q 。 (2)100000Q 因为指令的最高位为1,故指令为间接寻址。 (00000)=100002,最高位仍为1,继续间接寻址。

寻址方式及指令系统习题与解答

寻址方式及指令系统习题与解答 计算机科学与工程学院黄洪波2012年3月 一、单项选择题 1.设BX=2000H,SI=3000H,指令MOV AX,[BX+SI+8]的源操作有效地址为()。 A.5000H B.5008H C.23008H D.32008H 2.设DS=1000H,ES=2000H,BX=3000H,指令ADD AL,[BX]的源操作数的物理址为()。 A.13000H B.23000H C.33000H D.3000H 3.设DS=2000H,ES=3000H,SI=200H,指令MOV ES:[SI],AL的目的操作数的物理地址为()。 A.20200H B.30200H C.50200H D.200H 4.指令MOV MEM[BX],AX中的MEM是()。 A.原码B.反码C.补码D.移码 5.用来作为寄存器间接寻址的寄存器有()个。 A.8 B.6 C.5 D.4 6.指令MOV [BX+SI],AL中的目的操作数使用()段寄存器。 A.CS B.DS C.SS D.ES 7.指令MOV BX,[BP+5]中的源操作数使用()段寄存器。 A.CS B.DS C.SS D.ES 8.段内间接寻址只改变()中的内容。 A.CS B.IP C.CS和IP D.PSW 9.段间间接寻址只改变()中的内容。 A.CS B.IP C.CS和IP D.PSW 10.下述指令中不改变PSW的指令是()。 A.MOV AX,BX B.AND AL,0FH C.SHR BX,CL D.ADD AL,BL

11.下述指令中不影响CF的指令是()。 A.SHL AL,1 B.INC CX C.ADD [BX],AL D.SUB AX,BX 12.两个整数补码9CH和7AH相加运算后,会产生()。 A.无溢出且无进位B.无溢出但有进位 C.有溢出且有进位D.有溢出但无进位 13.指令JMP WORD PTR [BX]属于()寻址。 A.段内直接B.段内间接C.段间直接D.段间间接 14.指令MOV AX,[BX+SI+8]的源操作数属于()寻址。 A.直接 B.寄存器相对C.基址变址D.相对基址变址 15.指令()不改变CF的内容。 A.DEC AL B.ADD AX,CX C.SUB [BX],CL D.SBB AL,DL 16.十进制数字74所对应的压缩型BCD码的形式是()。 A.74 B.74H C.4AH D.4A 17.十进制数字85所对应的非压缩型BCD码的形式是()。 A.0085 B.0085H C.0805 D.0805H 18.设AL=67H,执行“CMP AL,76H”后,AL=()。 A.76H B.0DFH C.67H D.00 19.设AL=65H,BL=29H,执行下列指令后,AL=()。 ADD AL,BL DAA A.8EH B.94 C.94H D.8E 20.压栈操作是()位数的操作。 A.8 B.16 C.32 D.任意 21.执行IMUL指令时,如果乘积的高位部分不是低位部分的符号扩展,则()。A.OF=0、CF=0 B.OF=0、CF=1 C.OF=1、CF=0 D.OF=1、CF=1

第三章指令系统及寻址方式

第三章指令系统及寻址方式 一、教学内容 1.指令格式 2.指令寻址方式 3.指令系统 二、要求掌握指令的书写格式、指令的寻址方式和每一条指令的作用。 三、重点掌握指令的寻址方式和每一条指令的功能作用。 四、难点在于理解和掌握指令的寻址方式,怎样找到操作数所在存储单元的存放地址以及运用指令编程的技巧等。 五、本章分为4讲,每讲2学时。 第一讲指令寻址方式 1.指令的书写格式 指令有两种书写格式: ?机器指令:由一串二进制数描述 ?符号指令:用英文字母缩写词描述。符号指令的书写格式如下: 标号:操作助记符 [目的操作数][,源操作数];注释 几点说明: 1)标号—表示某一条指令所在存储单元的首址。标号应由字母打头,后跟字母、数字及特殊字符均可,但不能用关键字。 标号的用法: ①标号一般放在子程序(子过程)的第一条指令的开头; ②标号一般放在转移指令要转去的目的地的第一条指令的开头。 ③标号一般放在其他符号定义的前面。 2)指令助记符(操作助记符):MOV;ADD;SUB;END。 3)操作数—有源操作数和目的操作数,他们之间用“,” 分隔。操作数也可有可无。 2.数据寻址方式 一般在指令中包含有操作码和操作数,怎样找到指令中的操作数和操作数所在的地址,这就是寻址方式。

1)立即寻址 操作数直接包含在代码段的指令中。 如: MOV EAX,H MOV BX,6688H MOV AX,1234H ?立即数只能作为源操作数 ?立即寻址主要用来给通用寄存器或存储器赋值 ?不允许给段寄存器直接赋值 2)寄存器寻址 操作数在寄存器中。 32位寄存器:EAX、EBX、ECX、EDX、 ESP、EBP、 ESI、EDI 16位寄存器:AX、BX、CX、DX、SP、BP、SI、 DI、CS、DS、SS、ES、FS、GS 8 位寄存器:AH、AL、BH、BL、 CH、CL、DH、DL 如: MOV AX,BX MOV EDI,ESI MOV AL,CL 3)存储器寻址 操作数在存储器中,其地址由指令以某种方式指出。 ① 16位指令模式下的存储器寻址 16位指令模式寻址结构由4部分组成:段基址×10H+基址+变址+偏移量基址:BX、BP ,变址:SI、DI ,偏移量:8位或16位 如果有效地址在BX,SI或DI中,则以DS寄存器内容为段基址; 如果有效地址在BP中,则以SS段寄存器的内容为段基址。 如果使用段超越(CS:ES:DS:SS:),前缀操作数可以放在冒号前指定的段。例如:MOV ES:[DI],AL MOV ES:2000H, AL

计算机原理_3寻址方式和指令系统

计算机原理_3寻址方式和指令系统 寻址方式和指令系统是计算机原理中非常重要的概念,它们决定了计算机能够进行的操作和数据的处理方式。下面将从寻址方式和指令系统的概念、分类和特点三个方面详细介绍。 一、寻址方式 在计算机中,寻址方式是指CPU访问内存中数据的方式。常见的寻址方式包括直接寻址、间接寻址、变址寻址和相对寻址等。 1、直接寻址 直接寻址是指通过给出数据的内存地址来访问数据。在直接寻址中,指令中给出了待访问的内存地址,CPU直接从该内存地址中读取/写入数据。 2、间接寻址 间接寻址是指通过寄存器中的地址来访问数据。在间接寻址中,指令中给出了一个寄存器的编号,CPU将寄存器中的地址作为内存地址进行读取/写入操作。 3、变址寻址 变址寻址是指通过给出基地址和偏移量来计算内存地址的方法。在变址寻址中,指令中给出了一个基地址和一个偏移量,CPU通过将两者相加来得到最终的内存地址进行操作。 4、相对寻址

相对寻址是指通过给出相对于指令计数器的偏移量来计算内存地址的 方式。在相对寻址中,指令中给出了一个偏移量,CPU将偏移量与指令计 数器相加来得到最终的内存地址。 二、指令系统 指令系统是指计算机可以执行的指令的集合。根据指令的类型和功能 划分,指令系统可以分为以下几种类型。 1、数据传输指令 数据传输指令用于在CPU和内存、寄存器之间传输数据。例如,将内 存中的数据传送到寄存器中或将寄存器中的数据传送到内存中等。 2、算术指令 算术指令用于进行数值运算,如加、减、乘、除等。这些指令可以对 寄存器或内存中的数据进行算术运算,并将结果存放在寄存器或内存中。 3、逻辑指令 逻辑指令用于进行逻辑运算,如与、或、非等。这些指令可以对寄存 器或内存中的数据进行逻辑运算,并将结果存放在寄存器或内存中。 4、控制指令 控制指令用于控制程序的执行流程,如跳转、条件分支等。这些指令 可以根据条件改变程序的执行顺序或跳转到指定的地址执行。 指令系统的设计需要考虑指令的种类、格式、寻址方式和作用等因素。合理的指令系统设计可以提高计算机的运行效率和灵活性。 三、寻址方式和指令系统的特点

第3章 指令系统单元测试题

哈尔滨学院2014年秋季学期单元测试试卷 课程名称:计算机组成原理 单元名称:第三章指令系统 一、填空题 1、零地址运算指令的操作数来自。 2、根据操作数所在位置,指出其寻址方式:操作数在寄存器,称为 3、寻址方式;操作数地址在寄存器中,称为寻址方式;操作数在指令中,称为寻址方式;操作数地址在指令中,称为寻址方式。操作数的地址,为某一个寄存器中的内容与位移之和,则可以是、和寻址方式。 4、设字长和指令长度均为24位,若指令系统可完成108种操作,并且具有直接、间接(一次间址)、变址、基址、相对、立即6种寻址方式,则在保证最大范围内直接寻址的前提下,指令字中操作码占位,寻址特征位占位,可直接寻址的范围是,一次间址的范围是。 二、选择题 1、执行一条一地址的加法指令共需要次访问主存(含取指令)。 A.1 B.2 C.3 D.4 2、零地址的运算类指令在指令格式中不给出操作数地址,参加的两个操作数来 自。 A.累加器和寄存器 B.累加器和暂存器 C.堆栈的栈顶和次 栈顶单元 D.暂存器和堆栈的栈顶单元 3、在关于一地址运算类指令的叙述中,正确的是。 A.仅有一个操作数,其地址由指令的地址码提供 B. 可能有一个操作数,也可能有两个操作数 C.一定有两个操作数,另一个是隐含的 D.指令的地址码字段存放的一定是操作码 4、一个计算机系统采用32位单字长指令,地址码为12位,如果定义了250条二地址指令,那么单地址指令的条数有。 A.4K B.8K C.16K D.24K 5、某计算机存储按字(16位)编址,每取出一条指令后PC值自动+1,说明其指令长度是。 A.1个字节 B.2个字节 C.3个字节 D.4个字节 6、一条指令有128位,按字节编址,读取这条指令后,PC的值自动加。

《计算机组成原理》第3章习题答案

第3章习题解答 1.指令长度和机器字长有什么关系?半字长指令、单字长指令、双字长指令分别表示什么意思? 解:指令长度与机器字长没有固定的关系,指令长度可以等于机器字长,也可以大于或小于机器字长。通常,把指令长度等于机器字长的指令称为单字长指令;指令长度等于半个机器字长的指令称为半字长指令;指令长度等于两个机器字长的指令称为双字长指令。 2.零地址指令的操作数来自哪里?一地址指令中,另一个操作数的地址通常可采用什么寻址方式获得?各举一例说明。 解:双操作数的零地址指令的操作数来自堆栈的栈顶和次栈顶。双操作数的一地址指令的另一个操作数通常可采用隐含寻址方式获得,即将另一操作数预先存放在累加器中。例如,前述零地址和一地址的加法指令。 3.某机为定长指令字结构,指令长度16位;每个操作数的地址码长6位,指令分为无操作数、单操作数和双操作数三类。若双操作数指令已有K种,无操作数指令已有L种,问单操作数指令最多可能有多少种?上述三类指令各自允许的最大指令条数是多少? 解:X= (24一K)×26一[L/26] 双操作数指令的最大指令数:24一1。 单操作数指令的最大指令数:15×26一l(假设双操作数指令仅1条,为无操作数指令留出1个扩展窗口)。 无操作数指令的最大指令数:216一212一26。其中212为表示某条二地址指令占用的编码数,26为表示某条单地址指令占用的编码数。此时双操作数和单操作数指令各仅有1条。 4.设某机为定长指令字结构,指令长度12位,每个地址码占3位,试提出一种分配方案,使该指令系统包含:4条三地址指令,8条二地址指令,180条单地址指令。 解:4条三地址指令 000 XXX YYY ZZZ . . 011 XXX YYY ZZZ 8条二地址指令 100 000 XXX YYY . . 100 111 XXX YYY 180条单地址指令 101 000 000 XXX . . 111 110 011 XXX 5.指令格式同上题,能否构成: 三地址指令4条,单地址指令255条,零地址指令64条?为什么? 解:三地址指令4条 000 XXX YYY ZZZ

计算机组成原理(白中英)第4章指令系统

计算机组成原理(白中英)第4章指令系 统 指令系统概述寻址方式指令系统 20XX年3月15日10时45分 概述指令:是指示计算机某种操作的命令。微指令,机器指令,宏指令指令系统:一台计算机中所有机器指令的集合。它是机器硬件设计的依据,也是软件设计的基础。它决定了一台计算机硬件的主要性能和基本功能。是硬件和软件间的界面。系列计算机:有共同的指令集,相同的基本体系结构。 CISC和*****X年3月15日10时45分2 一个完善的指令系统应满足:1.完备性:指令丰富,功能齐全,使用方便。1.完备性:指令丰富,功能齐全,使用方便。完备性 2.有效性程序占空间小,执行速度快。有效性: 2.有效性:程序占空间小,执行速度快。 3.规整性对称性,匀齐性,规整性:3.规整性:对称性,匀齐性,指令格式和数据格式的一致性。据格式的一致性。4.兼容性兼容性:4.兼容性:向上兼容”----系列机中低档机上运行“向上兼容”----系列机中低档机上运行的软件可以在高档机上运行。的软件可以在高档机上运行。

20XX年3月15日10时45分 计算机语言与硬件结构的关系高级语言的语句和用法与具体机器的指令系统无关;低级语言分机器语言和汇编语言,他们和具体机低级语言分机器语言和汇编语言,器的指令系统密切相关。器的指令系统密切相关。汇编语言与硬件的关系密切,编写的程序紧凑、汇编语言与硬件的关系密切,编写的程序紧凑、占内存小、速度快,占内存小、速度快,特别适合与编写经常与硬件打交道的系统软件;打交道的系统软件;而高级语言不涉及机器的硬件结构,通用性强、编写程序容易,件结构,通用性强、编写程序容易,特别适合与编写与硬件没有直接关系的应用软件。编写与硬件没有直接关系的应用软件。20XX年3月15日10时45分4 概述机器指令的要素C C C C 操作码源操作数目的操作数下一条指令的引用 指令字(简称指令)即表示一条指令的机器字。指令字(简称指令)即表示一条指令的机器字。指令格式则是指令字用二进制代码表示的结构形指令格式则是指令字用二进制代码表示的结构形操作码字段和地址码字段组成字段和地址码字段组成。式,由操作码字段和地址码字段组成。 操作码20XX年3月15日10时45分 操作数 操作数5

3ARM指令寻址方式

第三章 ARM指令的特点和寻址方式 所有计算机的操作都是按照指令的要求进行操作的。指令应包含如下的信息: (1)指明计算机的有关部件执行什么操作; (2)指明参加操作的是什么数; (3)指明这些操作数存放的位置,以及通过什么方式才能找到它们; (4)指明后继指令从哪里取出。 一条指令通常由两部分组成:一部分是操作码,指明计算机应该执行操作的功能和性质;另一部分是地址码(也称为操作数)指出数据存放的位置,即操作数的地址。 一台计算机有许多条指令构成,计算机指令的集合称为计算机的指令系统。计算机的体系结构决定指令系统的特点,也决定计算机的数据处理能力。 3.1 ARM指令特点 ARM内核的处理器属于RISC结构,其指令长度固定,指令格式的种类少,寻址方式简单;ARM处理器采用固定长度的指令,因此处理器内部硬件设计能够被简化;指令译码采用硬布线逻辑,不使用微程序控制,以减少指令的译码时间,大部分指令在一个时钟周期内完成。 按指令的功能分,ARM指令集可分为六类:分支指令、数据处理指令、程序状态寄存器、LOAD/STORE指令、协处理器指令、异常中断指令。其中,数据处理指令包括:数据传输、算术逻辑运算和比较;算术逻辑运算类又可以分为位逻辑、算术操作、寄存器传送。 按照操作数的特点,ARM指令可以分为无操作数指令、单操作数指令、双操作指令和三操作数指令。每条指令由操作码域、条件码域、条件码设置域、目标操作数、第一操作数寄存器和第二操作数组成。通常一条典型的ARM指令表示为: {}{s},, 主要作用是: (1)操作码域是指令编码的助记符; (2)条件码域{ cond}是指令允许执行的条件编码。ARM 处理器的一个非常重要的特征是它的条件执行。每一条ARM指令的可选条件码域cond包含4位的条件码,共有16种,每种条件码用两个字符表示,这两个字符应添加在指令助记符的后面和指令同时使用。 当处理器工作在ARM状态时,几乎所有的指令均根据CPSR中条件码的状态和指令的条件域的设置有条件的执行。当指令的执行条件满足时,指令被执行,否则指令被忽略。指令条件码表示参见表3.1。 插入条件代码通常紧随在助记符代码后面;省略条件代码缺省为使用 AL,条件 GT、GE、LT、LE 是有符号比较,而 HS、HI、LS、LO 被称为无符号比较。 (3)条件码设置域{S}是一个可选择域。当在指令中设置{S}域时,导致更改程序状态寄存器CPSR中的状态标志。在含有条件执行的指令中,由于条件不符,指令没有执行,不更改CPSR中的状态标志。例如: ADDEQS R0, R0, R1;有条件的指令相加,更改状态寄存器。只有前一个操作的结果是Z=1 (如果设置了Z 位)的时候它才执行。例如: ADD R1, R2, R3 ;基本的加法(R2与R3 的和放到 R0中),不影响状态寄存器。 ADDS R1, R2, R3 ;它导致更改状态寄存器。 ADDEQS R1, R2, R3 ;条件执行的指令更改状态寄存器 (4)在ARM指令中目标操作数总是一个寄存器,通常表示为。即便目标操作数与

习题 第3章-嵌入式系统原理与实践-沈建华-清华大学出版社

第三章ARM 指令系统 1.ARM v7 架构使用的指令集有哪些特点? 在ARM v7 版本的处理器内核中,不再使用ARM 指令集,使用的是改进的Thumb指令集,称为Thumb-2 指令集。Thumb-2 指令集是一种兼容16 位和32 位指令的指令集。 ①在书写指令时不需要分析这条指令是32 位指令还是16 位指令,汇编器会自动按照最简化的原则汇编。 ①编译环境提供了一种方法,由编程人员指定是哪一种代码格式。如果在指令后面加后缀“.N”则指定是16 位代码格式(Narrow),如果在指令后面加后缀“.W”则指定是32 位代码格式(Wide)。 ①代码密度以及速度都比现有的Thumb指令集更高。 2. ARM 处理器支持几种基本寻址方式?举例并分别说明。 ①立即寻址,也叫作立即数寻址,这是一种特殊的寻址方式。立即寻址方式的目的是将操作数紧跟在操作码后面,与操作码一起放在指令代码段中。例如:ADD R1,R0,#1;R0←R0+1即寄存器R0的内容加1,把结果放回到R1中MOV R0,#0xFF00;将立即数0xFF00放入寄存器R0 ①寄存器寻址,寄存器寻址指的是操作数的值在寄存器中,指令中的地址码字段给出的是寄存器编号,指令执行时直接取出寄存器值来操作。例如:ADD R0,R1,R2 ;将寄存器R1和R2的内容相加,结果存放在寄存器R0 中 MOV R1,R2 ;将R2的值存入R1 ①寄存器移位寻址,寄存器移位寻址的操作数是由寄存器做相应移位而得到的,移位的方式在指令中以助记符的形式给出,而移位的位数可用立即数或寄存器寻址方式表示。例如: MOV R0,R2,LSL#3; R2 的值左移3 位,结果放入R0,即R0=R2*8 ①寄存器间接寻址,寄存器间接寻址指令中的地址码给出的是一个通用寄存器的编号,所需的操作数保存在存储器指定地址的存储单元中,即寄存器是操作数的地址指针。例如: LDR R1,[R2];将以R2 的值作为地址单元对应的数据传送到R1 中 ①基址寻址,基址寻址方式就是将寄存器(该寄存器一般称作基址寄存器)的内容与指令中给出的地址偏移量相加,从而得到操作数的有效地址。例如:LDR R0,[R1,#4] ;R0←[R1+4],把基址R1 的内容加上位移量4 后所指 ;向的存储单元的内容送到寄存器R0 中 ①相对寻址,相对寻址和基址变址寻址方式类似,以程序计数器PC 的当前值作为基地址,指令中的地址标号作为偏移量,将两者相加之后得到操作数的有效地址。以下程序段中的跳转指令采用了相对寻址: BEQ LOOP;条件跳转到LOOP 标号处 LOOP MOV R6,#1 ①多寄存器寻址,多寄存器寻址可以实现一条指令完成多个寄存器值的传送,允许一条指令传送16个寄存器的任何子集或所有寄存器。 LDMIA R0,{R1,R2,R3,R4} ;R1←[R0] R2←[R0+4] R3←[R0+8] ;R4←[R0+12]

单片机指令系统一第1讲寻址方式

单片机指令系统一第1讲寻址方式在本文中,我们将探讨单片机指令系统中的寻址方式。单片机是一种微处理器,它能够执行嵌入式系统中的各种任务。指令系统是单片机的核心部分之一,它定义了单片机能够执行的指令和操作。 一、直接寻址方式 直接寻址方式是最简单和最常用的一种寻址方式。在直接寻址方式中,操作数的地址直接出现在指令中。这种方式适用于操作数是常数或者已知地址的情况。例如,以下指令将累加器的值与存储在地址1000处的数据相加: ADD A, [1000] 二、间接寻址方式 间接寻址方式使用一个寄存器或一个内存单元中存储的地址作为操作数的地址。通过间接寻址方式,我们可以实现更灵活的地址计算和数据存取操作。例如,以下指令将累加器的值与存储在R1寄存器指向的数据相加: ADD A, @R1 三、立即寻址方式 立即寻址方式中,操作数直接出现在指令中。这种方式适用于操作数是常数的情况。例如,以下指令将累加器的值与常数5相加:ADD A, #5

四、寄存器寻址方式 寄存器寻址方式中,操作数存储在一个寄存器中。这种方式适用于存储在寄存器中的数据。例如,以下指令将累加器的值与R2寄存器中的数据相加: ADD A, R2 五、相对寻址方式 相对寻址方式中,操作数的地址相对于程序计数器或者某个特定的寄存器的值来确定。这种方式适用于相对于某个固定地址的数据。例如,以下指令将累加器的值与程序计数器加上8之后的数据相加:ADD A, 8(PC) 六、堆栈寻址方式 堆栈寻址方式使用一个栈指针来确定操作数的地址。这种方式适用于存储在堆栈中的数据。例如,以下指令将累加器的值与堆栈指针指向的数据相加: ADD A, [SP] 七、扩展寻址方式 扩展寻址方式结合了不同的寻址方式,以实现更复杂的地址计算和数据存取操作。例如,以下指令将累加器的值与存储在R1寄存器指向的数据加上8之后的数据相加: ADD A, @R1+8

第3章 0x86的指令系统和寻址方式

第3章80x86的指令系统和寻址方式 1.教学目的:掌握微机寻址方式和8086微处理器指令系统及Debug的使用2.教学要求: ①掌握8种寻址方式 ②熟悉指令系统的六大类指令,要求结合上机实践熟练掌握常用指令。 ③结合指令举例逐步熟悉和掌握汇编语言程序的格式,以及典型程序段。 ④会熟练使用Debug调试程序 3.教学重点: ①寻址方式 ②8086微处理器指令系统 4.掌握难点: ①寄存器的应用 ②存储器的结构 5.教学进程安排:P35~106 6.教学方法: 课堂讲授 7.教学内容摘要: 3.1 指令系统概述 机器指令:用二进制代码表示的指令 汇编指令:用助记符表示的指令 一般格式:操作码操作数[,操作数] 如:inc si add ax,bx 操作数的类型: 立即数:存放在指令中的操作数。 寄存器操作数:存放在寄存器中的操作数。 存储器操作数:存放在内存中的操作数。 3.2 8088/8086 CPU的寻址方式 寻找和获得操作数或操作数存放地址或指令转移地址的方法称为寻址方式。8088/8086 CPU的寻址分为两类,即数据寻址和指令寻址。 3.2.1 数据寻址方式 1、立即寻址方式 源操作数:为立即数(常数),源操作数长度与目的操作数长度一致(立即数可是8位或16位,386及后继机型可是8位或32位) 例:MOV AL,0FFH MOV AX,1234H 2、寄存器寻址 源操作数:在寄存器中,因操作数在寄存器中,不需访问存储器,因而速度较快。 例:M OV AX,BX MOV AL,BL

EA=基址+(变址×比例因子)+位移量 3、直接寻址方式 源操作数:是地址或符号地址。 EA=位移量。 例:假设TABLE 是在数据段定义的一个字节数组的首地址标号(变量名),其偏移地址为1000H ,则指令 MOV AL ,TABLE 或 MOV AL ,[TABLE] 或 MOV AL ,[1000H] 4、寄存器间接寻址方式 EA=基址寄存器内容(或变址寄存器内容) 例:MOV AX ,[BX] MOV AX ,[SI] 例:MOV AX ,[BX] 如果(DS )=3000H ,(BX )=1010H ,(31010H )=12H ,(31011H )=24H 。则操作数的20位物理地址=30000H+1010H=31010H ,操作的示意图如图3.1所示。 指令执行完以后,(AX )=2412H 。 图3.1 寄存器间接寻址操作图 例:MOV AX ,ES :[BX] 5、寄存器相对寻址 EA=基址寄存器(或变址寄存器)的内容+位移量。 例:TABLE 是在数据段定义的一个字节数组的首地址标号(也称变量名),则: MOV SI ,5 MOV AL ,TABLE[SI] ;可以写为:MOV AL ,[TABLE+SI] ABC EQU 5 LEA SI ,TABLE ;LEA 是取偏址指令,本句是TABLE 偏址→SI MOV AL ,ABC[SI] ;可以写为:MOV AL ,[ABC+SI] 如:[BX+6]、[BP-100H]、[SI+OFFSET TABLE]都是寄存器相对寻址方式。 例:TABLE 是数据段中定义的一个变量,假设它在数据段中的偏移地址为0100H ,有指令: MOV AX ,TABLE[SI] 6、基址变址寻址 EA=基址寄存器内容+变址寄存器内容。 例: MOV AX ,[BX][SI] 或写为: MOV AX ,[BX+SI] 例:MOV AX ,[BX] [SI](或写为MOV AX ,[BX+SI]) 若(DS )=2000H ,(BX )=0500H ,(SI )=0010H 则偏移地址=0500H+0010H=0510H 20位物理地址=20000H+0510H =20510H 如(20510H )=12H ,(20511H )=34H , 操作的示意图如图3.2所示: 数据段

指令系统--寻址方式

第一讲 第三章指令系统--寻址方式 回顾:8086/8088的内部结构和寄存器,地址分段的概念,8086/8088的工作过 程。 重点和纲要:指令系统--寻址方式。有关寻址的概念;6种基本的寻址方式及 有效地址的计算。 教学方法、实施步骤 时间分配 教学手段 回 顾 5”×2 板书 计算机 投影仪 多媒体课件等 讲 授 40” ×2 提 问 3” ×2 小 结 2” ×2 讲授内容: 3.1 8086/8088寻址方式 操作码 操作数 …… 操作数 计算机中的指令由操作码字段和操作数字段组成。 操作码:指计算机所要执行的操作,或称为指出操作类型,是一种助记符。 操作数:指在指令执行操作的过程中所需要的操作数。该字段除可以是操作数本身外,也可以是操作数地址或是地址的一部分,还可以是指向操作数地址的指针或其它有关操作数的信息。 寻址方式就是指令中用于说明操作数所在地址的方法,或者说是寻找操作数有效地址的方法。8086/8088的基本寻址方式有六种。 1.立即寻址 所提供的操作数直接包含在指令中。它紧跟在操作码的后面,与操作码一起放在代码段区域中。如图所示。 例如:MOV AX ,3000H 立即数可以是8位的,也可以是16位的。若

是16位的,则存储时低位在前,高位在后。 立即寻址主要用来给寄存器或存储器赋初值。 2.直接寻址 操作数地址的16位偏移量直接包含在指令中。它与操作码—起存放在代码段区域,操作数一般在数据段区域中,它的地址为数据段寄存器DS加上这16位地址偏移量。如图2-2所示。 例如:MOV AX,DS:[2000H]; 图2-2 (对DS来讲可以省略成MOV AX,[2000H],系统默认为数据段)这种寻址方法是以数据段的地址为基础,可在多达64KB的范围内寻找操作数。 8086/8088中允许段超越,即还允许操作数在以代码段、堆栈段或附加段为基准的区域中。此时只要在指令中指明是段超越的,则16位地址偏移量可以与CS或SS或ES相加,作为操作数的地址。 MOV AX,[2000H] ;数据段 MOV BX,ES:[3000H] ;段超越,操作数在附加段 即绝对地址=(ES)*16+3000H 3.寄存器寻址 操作数包含在CPU的内部寄存器中,如寄存器AX、BX、CX、DX等。 例如:MOV DS,AX MOV AL,BH 4.寄存器间接寻址 操作数是在存储器中,但是,操作数地址的16位偏移量包含在以下四个寄存器SI、DI、BP、BX之一中。可以分成两种情况: (1)以SI、DI、BX间接寻址,则 通常操作数在现行数据段区域 中,即数据段寄存器(DS)*16 加上SI、DI、BX中的16位偏移 量,为操作数的地址, 例如:MOV AX,[SI] 操 作数地址是:(DS)*16+(SI) (2)以寄存器BP间接寻址,则操作数在堆栈段区域中。即堆栈段寄存器(SS)

相关主题
相关文档
最新文档