当前位置:文档之家› 寻址方式及指令系统习题与解答

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

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

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

计算机科学与工程学院黄洪波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

22.设AX=3762H,CL=5,执行“SHR AX,CL”后,AX=()。

A.0376H B.01BBH C.01BB D.0376

23.若要在BUF缓冲区中寻找与AL中不相等的数据,应使用()SCASB串操作指令。

A.REPNE B.REP C.REPE D.REPNZ

24.如果“JNC L”指令的操作码放在0040H,转移后在0020H处取下一条指令的操作码,那么该条指令的位移量是()。

A.20H B.1EH C.0DEH D.0E0H

25.如果“JA P”指令的操作码放在0050H, 该指令的位移量为34H,执行完此条指令转移到取下一条指令的偏移地址为()

A.0082H B.0084H C.0086H D.0088H

26.若DS=1000H,BX=2000H,(12000H)=56H,(12001H)=78H,AX=1000H,执行“ADD AX,[BX]”指令后,AX=()。

A.8856H B.6678H C.8800H D.6600H

27.设AX、BX寄存器中存放的是有符号的二进制数据,若执行“CMP AX,BX”指令后,()L表示大于则转L。

A.JZ B.JA C.JGE D.JG

28.执行“DIV BX”指令后,()寄存器中存放商。

A.AL B.AH C.AX D.DX

29.执行“()AX,BX”指令不改变AX寄存器中的内容。

A.CMP B.ADD C.XOR D.OR

30.若AX=1000H,执行“NEG AX”指令后,AX=()。

A.1000H B.0E000H C.0F000H D.1001H

二、多项选择题

1.在下列寻址方式中,用来访问内存的寻址方式有()。

A.寄存器寻址B.寄存器间接寻址C.寄存器相对寻址D.直接寻址

2.用来作为寄存器间接寻址的寄存器有()。

A.AX B.BX C.BP D.CX

3.在下列指令中,源操作数使用DS段寄存器进行寄存器相对寻址的有()。

A.MOV AX,[DI+4] B.MOV AX,ES:[SI+8]

C.MOV AX,[BP+4] D.MOV AX,[BX+4]

4.在下列指令中,源操作数的寻址方式是错误的有()。

A.MOV AX,[DI+BX] B.MOV AX,[SI+DI]

C.MOV AX,[BP+BX]D.MOV AX,[DX]

5.在下列指令中,属于段内转移指令的有()。

A.JMP SHORT A B.JMP [BX]

C.JMP DWORD PTR [BX] D.JMP NEAR PTR [BX+SI] 6.在下列指令中,错误的指令有()。

A.SUB 5,AL B.ADD AL,BX

C.INC [BX] D.SHR AX,6

7.执行“CMP AX,8003H”指令后,当AX中的无符号数高于8003H时,下列指令中有效的转移指令有()。

A.JNB L B.JA L C.JG L D.JNL L

8.可与串操作指令“CMPSW”指令配合使用的重复前缀有()。

A.REP B.REPZ C.REPNZ D.REPE

9.在下列的输入/输出指令中,正确的指令有()。

A.IN AX,80H B.OUT DX,AX

C.IN AL,340 D.OUT DX,AL

10.在下列的指令中,错误的指令有()。

A.PUSH AL B.MOV AL,BX

C.PUSH 1000H D.CALL AX

11.可以用下列指令代替“LOOP L”指令的有()。

A.DEC CX B.DEC CX

JNZ L JNC L

C.DEC CX D.DEC CX

CMP CX,0 JE L

JE L

三.填空题

1.在一条指令中,立即数只能作源操作数。

2.8086/8088 CPU形成的内存物理地址有20位。

3.指令“MOV AX,[BX+SI]”的源操作数在内存的 DS 段。

4.指令“MOV BX,[BP+DI]”的源操作数在内存的 SS 段。

5.指令“MOV AX,ES:[SI]”的源操作数在内存的 ES 段。

6.入栈指令使用的是 SS 段。

7.指令“ADD[BX+SI],AL”的目的操作数是基址 +变址寻址方式。

8.指令“SUB BX,A[SI]”的源操作数是寄存器相对寻址方式。

9.指令“JMP DWORD PTR [BX]”属于段间间接寻址方式。

10.可作为寄存器间接寻址的寄存器有 4 个。

11.堆栈是从高地址向低地址方向生长的。其操作遵循 LIFO 的操作原则。

12.在进行弹栈操作时应该先将弹出的数据送目标地址,然后 SP+2 。

13.在进行多精度加法运算时,一般使用 ADC 指令。

14.通用的数据传送指令不影响 PSW 。

15.“INC AL” 指令不影响标志位的 CF 位。

16.若AL=11H,执行“NEG AL” 后,AL= 。

17.JMP指令的执行PSW寄存器中的各位。

18.两个无符号数进行比较时,可以根据标志位来判断大小。在编写程序时可使用指令来实现。

19.若执行“DIV BX”,其被除数的高16位必须放在,低16位必须放在。

20.DAA指令只对寄存器中的内容进行调整。

21.若AL=84H,在执行CBW后,AL= 。

22.十进制数1234的压缩型BCD码为。

23.执行AND AL,0FH

JNZ L

指令,是检测AL中的位,当它为非零则转移。

24.若移位指令的移位位数大于1时,其移位位数必须放在中。

25.如果AL=85H,CL=4,执行“SAR AL,CL”时,AL= ,CF= 。

26.在串操作指令中,SI指向串,DI指向串。

27.如果要查找某串中与AL寄存器中有相同的字符(数),则在SCASB指令前应配合使用重复前缀。

28.转移指令“JNZ L ”的转移范围(十进制)是。该指令的第二个字节为位移量,用形式表示。

29.段内调用指令改变中的内容。

30.段间调用指令改变中的内容。

四.判断题(判断下列指令是否正确,如果是错误的,请指出错误的原因)

1.ADD AL,BX

2.MOV [BX],SI

3.SUB [BX],[SI]

4.CMP 5,AL

5.MOV CX,AX

6.LEA BL,A

7.SHR AL,6

8.MOV AL,[DI+SI]

9.MOV BL,200H

10.MOV AX,DATA

11.INC [BX]

12.CMP [BX],A ;A为变量

13.MOV AX,‘+’

14.MOV AX,[BP+BX]

15.ADD AX,[CX]

16.OUT 400,AL

17.JNC P

18.MOV BX,,OFFSET A

19.LEA DI,A[SI]

20.CMP AX,5

五.改错题(按下列指令中的原意改正下列指令)

1.DEC [SI]

2.CMP AL,BX ;无符号数比较

3.MOV [DX],AL

4.MOV AL,300H

5.MOV [BX],[DI] ;字节操作

6.ADD AL,[CX+SI]

7.ADD AL,BX ;有符号数相加

8.PUSH AL

9.CMP [BX],5 ;字节比较

10.MOV DS,1234H

六.简答题

1.设BX=1000H,SI=2000H,位移量D=3000H,请指出下列各种寻址方式的有效地址是什么?

(1)使用D的直接寻址

(2)使用BX寄存器的间接寻址

(3)使用BX寄存器的相对寻址

(4)基址变址寻址

(5)相对基址变址寻址

2.请指出下列各条指令的源操作数的寻址方式是什么?

(1)MOV AX,BUF

(2)CMP AL,5

(3)ADD [BX+5],AX

(4)SUB AX,[BX+SI]

(5)ADC AH,A[SI]

(6)MOV BX,[SI]

(7)AND CX,B[BP+SI]

(8)JMP WORD PTR [BX]

(9)JMP P

(10)JMP FAR PTR P

3.设DS=2000H,BX=0100H,SI=0002H,(20100H)=12H,(20101H)=34H,(2 0102H)= 56H,(20103H)= 78H,(21200H)= 2AH,(21201H)= 4CH,(21202H)=B 7H,(21203H)=65H,试说明下列各条指令执行完后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]

4.按下列各小题的要求写出相应的一条汇编语言指令。

(1)把BX寄存器和DX寄存器的内容相加,结果存入DX寄存器中

(2)以BX和SI寄存器作基址变址寻址方式,把该单元中的一个字传送到AX。

(3)以SI和位移量20H作寄存器相对寻址,将该单元中的内容与CX寄存器中的内

容相加,结果存入CX寄存器中。

(4)清除AX寄存器的内容,同时清除CF标志位

(5)将字单元NUM与0B6H进行比较

5.按下列各小题的要求使用相应的几条指令完成其操作。

(1)将偏移量为200H的存储单元中的数与300H相加,结果存入AX寄存器中(2)比较AX寄存器中与BX寄存器中的16位有符号数,当AX中的内容大于BX中的内容

时转移到L。

(3)将BUF1和BUF2中的16位数据交换

(4)测试BUF字缓冲区中第15位,如果为1则转移到P

(5)将BUFI和BUF2的字相加,结果送S缓冲区

6.设BX=8234H,请说明下列两条指令的区别,执行下列各指令后BX中的内容是什么?

SHR BX,1

SAR BX,1

7.分别说明下列每组指令中的两条指令的区别。

(1)MOV BX,BUF LEA BX,BUF

(2)OR BL,0FH AND BL,0FH

(3)JMP SHORT L JMP L

(4)MOV AX,BX MOV AX,[BX]

(5)MOV AX,[BX+DI] MOV AX,[BP+DI]

8.说明下列各指令的源操作数和目的操作数的存储地方。

(1)MOV [2000H],AX

(2)ADD AX,[BX+5]

(3)LEA SI,BUF

(4)DAA

(5)MUL BL

9.指出下列无条件转移指令的转移目标地址是什么存放在何处?

(1)JMP BX

(2)JMP WORD PTR [BX]

(3)JMP DWORD PTR [BX]

(4)JMP P

(5)JMP SHORT R

10.说明MOVSB和CMPSB各能使用哪些重复前缀?

七.程序分析题

1.现有程序段如下:

MOV AX,1234H

MOV BX,60H

ADD AX,BX

请回答:(1)该程序段完成的功能是什么?

(2)程序段执行完后AX= 。

2.现有程序段如下:

MOV AX,0603H

MOV BL,8

AAD

DIV BL

请回答:(1)该程序段完成的功能是什么

(2)程序段执行完后AX= 。

3.设AX=0D023H,BX=9FD0H,试分析执行完如下程序段后程序转向何处

ADD AX,BX

JNO L1

JNC L2

SUB AX,BX

JNC L3

JNO L4

JMP L5

4.程序段如下:

MOV AX,X

MOV DX,X+2

ADD AX,Y

ADC DX,Y+2

ADD AX,36

ADC DX,0

SUB AX,Z

SBB DX,Z+2

MOV W,AX

MOV W+2,DX

请回答:(1)该程序段完成的功能是什么

(2)该程序的操作数是何类型

(3)结果存放在何处

5.设A为字节变量,变量中的内容分别为64H、52H;B为字节变量,变量中的内容分别为

12H、46H,现有程序段如下:

MOV AL,A

SUB AL,B

DAS

MOV C,AL

MOV AL,A+1

SBB AL,B+1

DAS

MOV C+1,AL

请回答:(1)该程序段完成的功能是什么

(2)最后结果是什么

6.现有程序段如下:

MOV BL,AL

MOV CL,4

SHR BL,CL

MOV A,BL

AND AL,0FH

MOV B,AL

请回答:(1)该程序段完成的功能是什么

(2)如果AL的初值为56H,则A= ,B= 。

7.现有程序段如下:

MOV AL,8

MOV BL,7

MUL BL

AAM

ADD AX,3030H

XCHG AH,AL

MOV BUF,AX

请回答:(1)该程序段完成的功能是什么

(2)BUF两个单元中的值分别为。

8.现有程序段如下:

MOV AX,M

MOV DX,N

SHR DX,1

RCR AX,1

请回答:(1)该程序段完成的功能是什么

(2)若M=1234H,N=5678H,程序运行后DX= ,AX= 。

9.现有程序段如下:

XOR AX,AX

MOV AX,6342H

MOV CX,0404H

ROL AH,CL

XCHG CH,CL

ROR AL,CL

请回答:(1)该程序段执行后AX= 。

(2)CF= 。

10.现有程序段如下:

MOV AX,1

MOV BX,2

MOV CX,4

MOV DX,3

L:INC AX

ADD BX,AX

SHR DX,1

LOOPNZ L

请回答:(1)该程序段的循环次数是多少

(2)该程序段执行完后AX= ,BX= ,CX= ,DX= 。

11.现有程序段如下:

MOV CX,16

MOV BX,0

MOV DX,1

L:MOV AX,9AB8H

AND AX,DX

JZ N

INC BX

N:SHL DX,1

LOOP L

MOV M,BX

请回答:(1)该程序段完成的功能是什么

(2)该程序段执行完后(M)= 。

12.现有程序段如下:

CLD

MOV SI,OFFSET BUF1

MOV DI,OFFSET BUF2

MOV CX,100

REP MOVSB

请回答:该程序段完成的功能是什么

13.现有程序段如下:

CLD

LEA DI,BUF

MOV AL,20H

MOV CX,100

REPNZ SCASB

请回答:(1)该程序段完成的功能是什么

(2)若ZF=1,表示BUF中值为20H数据

(3)若BUF的首地址为0,ZF=0,执行完该程序段后DI= 。

14.现有程序段如下:

MOV AL,0

MOV BL,1

MOV CX,10

L:ADD AL,BL

INC BL

LOOP L

请回答:(1)该程序段完成的功能是什么

(2)该程序执行完后,AL= 。

15.现有程序段如下:

MOV AX,M

CMP AX,N

JA L

MOV AX,M+2

CMP AX,N+2

JAZ L

MOV FLG,BYTE PTR 0

JMP P

L:MOV FLG BYTE PTR 1

P:…

请回答:(1)该程序段完成的功能是什么(2)若M=1234H,N=5678H,则FLG= 。

16.现有程序段如下:

MOV CX,100

LEA BX,BUF

MOV DX,0

L1:MOV AL,<, /FONT>[BX]

CMP AL,10

JL L2

INC DX

L2:INC BX

LOOP L1

请回答:(1)该程序段完成的功能是什么

(2)如果将JL改为JG,该程序段完成的功能又是什么

17.设TAB中存放的数据为30H,31H,32H,33H,34H,35H,36H,37H,38H,39H,现

有程序段如下:

LEA BX,TAB

MOV AL,X ;X为数字0~9

XLAT

请回答:(1)该程序段完成的功能是什么

(2)若X中的内容为4,则AL= 。

18.现有程序段如下:

LEA SI,BUF1

LEA DI,BUF2

MOV CX,100

L:MOV AL,[SI+100]

MOV [DI],AL

INC DI

DEC SI

LOOP L

请回答:该程序段完成的功能是什么

19.现有程序段如下:

MOV AX,BUF

CMP AX,0

JNS L

MOV BX,BUF+2

NEG BX

MOV BUF+2,BX

NOT AX

ADC AX,0

MOV BUF,AX

L:…

请回答:该程序段完成的功能是什么

20.现有程序段如下:

MOV AL,X

AND AL,0FH

JZ L

MOV BYTE PTR FLG,1

JMP M

L:MOV BYTE PTR FLG,0

M:…

请回答:该程序段完成的功能是什么

八.程序设计题

1.使用串操作指令,将BUF缓冲区中的100个字节清0。

2.比较5个字节的字符串A和B,若两个串相等则字节标志单元FLG置0;否则清1。

3.设BUF缓冲区中有100个字数据。编写程序段统计100个字数据中数据为0的个数,

并将统计的结果存放在DL寄存器中。

4.计算Z=(X+5)*Y+30,(X,Y为无符号字节数据)。

5.将DX:AX:BX中的48位数乘以2。

6.将有100个字符的缓冲区BUF中的$符号用空格(20H)代替。

7.将有符号的字数据A和B中的大者存入C中。

8.测字单元A中的第四位是否为0,是则FLG置1,否则清0。

9.将DX:AX中的32位数据逻辑左移2位。

10.将100个元素的字数组A中的每个元素减1。

参考答案

一.单项选择题

1.B 2.A 3.B 4.C 5.D 6.B 7.C 8.B 9.C 10.A 11.B 12.B 13.B 14.D 15.A 16.B 17.D 18.C 19.C 20.B 21.D 22.B 23.C 24.C 25.C 26.A 27.D 28.C 29.A 30.C

二.多项选择题

1.BCD 2.BC 3.AD 4.BCD 5.ABD

6.ABCD 7.AB 8.BCD 9.ABD 10.ABCD

11.AC

三.填空题

1.源

2.20

3.DS(数据)

4.SS(堆栈)

5.ES(附加)

6.SS(堆栈)

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

寻址方式及指令系统习题与解答 计算机科学与工程学院黄洪波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.无溢出但有进位

作业习题 寻址方式和指令

寻址方式和指令习题 一、选择题 1、MOVX A,@DPTR指令中源操作数的寻址方式是() (A)寄存器寻址(B)寄存器间接寻址(C)直接寻址(D)立即寻址 2、ORG 0003H LJMP 2000H ORG 000BH LJMP 3000H 当CPU响应外部中断0后,PC的值是() (A)0003H (B)2000H (C)000BH (D)3000H 3、执行PUSH ACC指令,MCS-51完成的操作是() (A)SP+1 SP (ACC)(SP)(B)(ACC)(SP)SP-1 SP (C)SP-1 SP (ACC)(SP) (D)(ACC)(SP)SP+1 SP 4、LCALL指令操作码地址是2000H,执行完相子程序返回指令后,PC=() (A)2000H (B)2001H (C)2002H (D)2003H 5、51执行完MOV A,#08H后,PSW的哪一位被置位() (A)C (B)F0 (C)OV (D)P 6、下面条指令将MCS-51的工作寄存器置成3区() (A)MOV PSW,#13H (B)MOV PSW,#18H (C)SETB PSW.4 CLR PSW.3 (D) SETB PSW.3 CLR PSW.4 7、执行MOVX A,@DPTR指令时,MCS-51产生的控制信号是()(A)/PSEN (B)ALE (C)/RD (D)/WR 8、MOV C,#00H的寻址方式是() (A)位寻址(B)直接寻址(C)立即寻址(D)寄存器寻址 9、ORG 0000H AJMP 0040H ORG 0040H MOV SP,#00H 当执行完上面的程序后,PC的值是()

8086汇编语言指令的寻址方式有哪几类

1. 8086汇编语言指令的寻址方式有哪几类?用哪一种寻址方式的指令执行速度最快? 寄存器寻址最快 7. 下面这些指令哪些是正确的?哪些是错误的?如是错误的,请说明原因。 XCHG CS , AX ;不能修改CS MOV [BX] , [1000] ;不能在两个内存单元之间直接进行数据传送 XCHG BX , IP ;不能用名字直接访问IP PUSH CS POP CS ;不允许直接修改CS值 IN BX , DX ;输入数据必须使用累加器AL或AX MOV BYTE [BX] , 1000 ;格式错误,且超范围,应为MOV word PTR [BX],1000 MOV CS , [1000];不允许直接修改CS值 20.带参数的返回指令用在什么场合?设栈顶地址为3000H,当执行RET 0006后,SP的值为多少? 利用堆栈传递参数时使用;对于近调用SP=3008H,对于远调用SP=300AH 27.设当前SS=2010H,SP=FE00H,BX=3457H,计算当前栈顶地址为多少?当执行 PUSH BX指令后,栈顶地址和栈顶2个字节的内容分别是什么? 栈顶地址:SS:SP,物理地址为:2FF00H;PUSH 完以后栈顶地址为:SS:SP=2010:FDFEH,即物理地址为:2FEFEH,内容为:57H 34H(由低地址到高地址) B P7 5. 设(DS)=3000H,(BX)=1100H,(CS)=0062H,(S1)=0002H,(31100H)=52H, (31101H)=8FH,(31162H)=6BH,(31163H)=99H,(31103H)=F6H, (32200H)=AAH,(32201H)=B6H,(32800H)=55H,(32801H)=77H,给出下列各指令执行后AX寄存器的内容: (1) MOV AX,BX (2) MOV AX,[BX] (3) MOV AX,4200H (4) MOV AX,[2800H] (5) MOV AX,1100H[BX] (6) MOV AX,[1160H+SI] 9. 分别执行下列各指令组,写出AX的内容: (1) MOV AX,93A4H NEG AX 73A4-8c5c,e689-1977 (AX)=6C5CH (2) XY DW "AB" MOV AX,XY (AX)=4142H (3) MOV AX,2B7EH MOV CX,4DB5H ADD AX,CX (AX)=7933H (4) XA DW 0BD57H MOV AX,0FBCDH AND AX,XA (AX)=B945H (5) STC MOV BX, 0B69FH MOV AX, 43A2H SBB AX, BX

实验一 指令与寻址方式认知实验(Keil)

实验一指令与寻址方式认知实验 一、实验目的 1.了解单片机基本指令及其寻址方式; 2.掌握在μVision环境中查看指令操作结果的技巧。 二、实验仪器和设备 Keil软件;THKSCM-2综合实验装置; 三、实验原理及实验内容 1.示例及相关设置 (1)建立一个文件夹:lx31。 (2)利用菜单File的New选项进入编辑界面,输入下面的源文件,以lx31.asm文件名存盘到lx31文件夹中。 ORG 0000H MAIN:MOV R7,#16 MOV A,#00H MOV R0,#30H LP:MOV @R0,A INC R0 INC A DJNZ R7,LP SJMP $ END (3)在lx31文件夹下建立新工程,以文件名lx31存盘(工程的扩展名系统会自动添加)。 (4)在Project菜单的下拉选项中,单击Options for Target ‘Target1’,在弹出的窗口中要完成一下设置: ○1单片机芯片选择AT89C51选择完器件,按“确定”后会弹出一个提示信息框,提示“Copy Startup Code to Project Folder and Add File to Project?”,选择“是”。 ○2晶振频率设为11.0592MHz。 ○3Output标签下的Create HEX File前小框中要打钩。

○4在Debug标签选择Use Simulator(软件模拟)。 (5)在Project菜单的下拉选项中,单击build Target 选项完成汇编,生成目标文件(.HEX)。利用单步、执行到光标处两种方法运行程序,观察程序运行的结果。 (6)分析程序的功能,研究观察以下指令的寻址方式及其操作效果。 2.示例及相关设置 (1)建立一个文件夹:lx32。 (2)利用菜单File的New选项进入编辑界面,输入下面的源文件,以lx32.asm文件名存盘到lx32文件夹中。 ORG 0000H MOV R0,#20H MOV R1,#22H MOV A,@R0 ADD A,@R1 MOV 24H,A INC R0 INC R1 MOV A,@R0 ADDC A,@R1 MOV 25H,A SJMP $ END (3)在lx32文件夹下建立新工程,以文件名lx32存盘(工程的扩展名系统会自动添加)。 (4)在Project菜单的下拉选项中,单击Options for Target ‘Target1’,在弹出的窗口中要完成一下设置: ○1单片机芯片选择AT89C51选择完器件,按“确定”后会弹出一个提示信息框,提示“Copy Startup Code to Project Folder and Add File to Project?”,选择“是”。 ○2晶振频率设为11.0592MHz。 ○3Output标签下的Create HEX File前小框中要打钩。 ○4在Debug标签选择Use Simulator(软件模拟)。

第六章_寻址方式和指令系统

1

第 6章 寻址方式和汇编指令 第6章
6.1、寻址方式 6.2、汇编语言指令集 6.3、汇编源程序

第 6章 寻址方式和汇编指令 第6章
6 . 1 寻址方式
▲ 汇编指令是可执行指令,每条指令对应一条机器 码,用以控制处理器中的执行部件进行各种操 作。 ▲ TMS320F281X系列的汇编指令有150多条。 ▲ 它们支持各种信号处理运算,同时也提供了应用 中所需要的多级处理和过程控制功能。 ▲ 寻址方式是指寻找指令中操作数地址的方式。

第 6章 寻址方式和汇编指令 第6章
6 . 1 寻址方式
TMS320C28x指令集采用7种存储器寻址方式: ▲ 直接寻址方式 ▲ 堆栈寻址方式 ▲ 间接寻址方式 ▲ 寄存器寻址方式 ▲ 数据/程序/IO空间立即寻址方式 ▲ 程序空间间接寻址 ▲ 字节寻址方式

第 6章 寻址方式和汇编指令 第6章
6 . 1 寻址方式
F2812 的大多数指令利用操作码中的8位字段来选择寻 址方式和对寻址方式进行修改.在 F2812 指令系统中,这个8 位字段用于以下寻址方式: (1)loc16 。 为16位数据访问选择直接/堆栈/间接/寄存器寻址方
式。
(2)loc32 。 为32位数据访问选择直接/堆栈/间接/寄存器寻址方
式。
以上7种寻址方式都与“loc16/loc32”组合起来使用。

第 6章 寻址方式和汇编指令 第6章
6 . 1 寻址方式
寻址方式选择位
由 于 F2812 提 供 了 多 种 寻 址 方 式 , 因 此 用 寻 址 方 式 选 择 位 ( AMODE )来选择8位字段( loc16/loc32 )的解码。该 位属于状态寄存器ST1。寻址方式可以大致归类如下: ▲ AMODE=0——该方式是复位后的默认方式,也是F2812的C/C++编译
器使用的方式。这种方式与C2xLP CPU的寻址方式不完全兼容。数据页指针 偏移量是6位(在C2xLP CPU中是7位),并且不支持所有的间接寻址方式。
▲ AMODE=1——该方式包括的寻址方式完全与C2xLP 器件的寻址方式
兼容。数据页指针的偏移量是7位并支持所有C2xLP 支持的间接寻址方式。
对与loc16或者loc32字段,其可用的寻址方式总结如P375所示

寻址方式和指令系统

《微机原理》复习思考题第3章 8086的寻址方式和指令系统 3.1 8086汇编语言指令的寻址方式有哪几类?用哪一种寻址方式的指令执行速度最快? 3.2 直接寻址方式中,一般只指出操作数的偏移地址,那么,段地址如何确定?如果要用某个段 寄存器指出段地址,指令中应如何表示? 3.3 在寄存器间接寻址方式中,如果指令中没有具体指明段寄存器,那么,段地址如何确定? 3.4 用寄存器间接寻址方式时,BX,BP,SI,DI分别针对什么情况来使用?这四个寄存器组合 间接寻址时,地址是怎样计算的?举例进行说明。 3.5 设DS=2100H,SS=5200H,BX=1400H,BP=6200H,说明下面两条指令所进行的具体操作: MOV BYTE PTR [BP], 2000 MOV WORD PTR [BX], 2000 3.6 使用堆栈操作指令时要注意什么问题?传送指令和交换指令在涉及内容操作数时分别要注 意什么问题? 3.7 下面这些指令中哪些是正确的?哪些是错误的?如果是错误的,请说明原因。 XCHG CS, AX MOV [BX], [1000] XCHG BX, IP PUSH CS POP CS IN BX, DX MOV BYTE[BX], 1000 MOV CS, [1000] 3.8 8086系统中,当对SS和SP寄存器的值进行修改时,有什么特殊规定?这样做的原因是什么?[解答] 凡是遇到给SS寄存器赋值的传送指令时,系统会自动禁止外部中断,等到本条指令和下条指令执行之后,又自动恢复对SS寄存器赋值前的中断开放情况。这样做是为了允许程序员连续用两条指令分别对SS和SP寄存器赋值,同时又防止堆栈空间变动过程中出现中断。 3.9 以下是格雷码的编码表 0——0000 1——0001 2——0011 3——0010 4——0110 5——0111 6——0101 7——0100 8——1100 9——1101 请用换码指令和其他指令设计一个程序段,实现格雷码往ASCII的转换。 3.10 用加法指令设计一个简单程序,实现两个16位十进制数的加法,结果放在被加数单元。 3.11 为什么用增量指令或减量指令设计程序时,在这类指令后面不用进位标志CF作为判断依 据?

存储器寻址方式

存储器寻址方式 存储器寻址方式的操作数存放在主存储器中,用其所在主存的位置表示操作数。在这种寻址方式下,指令中给出的是有关操作数的主存地址信息。8088的存储器空间是分段管理的。程序设计时采用逻辑地址;由于段地址在默认的或用段超越前缀指定的段寄存器,所以采用偏移地址,称之为有效地址(Effective Address, EA) 1.直接寻址 在这种寻址方式下,指令中直接包含了操作数的有效地址,跟在指令操作码之后。其默认的段地址在DS段寄存器中,可以采用段超越前缀。 例将数据段中偏移地址2000H处的内存数据送至AX寄存器。 MOV AX, [2000H] 该指令中给定了有效地址2000H, 默认与数据段寄存器DS一起构成操作数所在存储单元的物理地址。 如果DS=1429H,则操作数所在的物理地址为1429H*16+2000H=16920H. 该指令的执行结果是将16920H单元的内容传送至AX寄存器,其中,高字节内容送AH寄存器,低字节内容送AL寄存器。

MOV AX, [2000H];指令代码:A1 00 20 例: 将附加段中偏移地址2000H 处的内存数据送至AX 寄存器。 MOV AX, ES:[2000H]; 指令代码:26 A1 00 20 变量指示内存的一个数据,直接引用变量就是采用直接寻址方式。变量应该在数据段进行定义,常用的变量定义伪指令DB 和DW 分别表示字节变量和字变量,例如 WV AR DW 1234H; 定义字变量WV AR ,它的初值是1234H 这样,标示符WV AR 表示具有初值1234H 的字变量,并由汇编程序为它内存分配了两个连续的字节单元。假设它在数据段偏移地址是0010H 。 例:将数据段的变量WV AR (即该变量名指示的内存单元数据)送至AX 寄存器。 MOV AX, WV AR; 指令功能: 上述指令实质就是如下指令: AX WV AR AX DS :[0010H]

指令格式及寻址方式

指令格式及寻址方式 一、指令格式 指令的表示方法称为指令格式,它包括指令的长度和指令内部信息的安排等内容。一条指令一船由两部分组成,即操作码和操作数。操作码用来规定指令进行什么操作,而操作效则表示指令操作的对象。操作数可以直接是一个数(立即数),也可以是一个数据所在的空间地址,即在执行指令时从指定的地址空间取出操作数。 单片机中的指令并不是固定的长度,对于不同的指令,指令的字节数不同。MC5—5l 单 片机用机器语言表示的指令格式按字节划分,有一字节指令、两字节指令和三字节指令三种。 1.一字节指令 一字节指令中的8位二进制代码既包含操作码的信息,也包含操作数的信息。在一字节指令中,有些指令的指令码中隐合着对某一寄存器的操作,NXP代理商无需再具体指定操作数。例如数 据指针DPTR加1指令;INC DPTR,其指令码为: 另外有些指令的操作数在通用寄存器中,由指令码中的rrr三位的不同编码来指定该 寄存器。例如:寄存器向氮加器A传送数据指令:MOV A,Rn,其指令码为: 其中,高5位表示操作内容——传送,最低三位rrr的不同二进制编码用来表示从哪一个寄 存器取数。 2.二字节指令。 二字节指令中的第一个字表尔操作码,第二个字节表示操作数,这里的操作数既可能是立即数,也可能是地址。其指令格式为: 3.三字节指令 三节节指令中,第一字节表示操作码,另两个字节是操作数,其指令格式为

绝大多数指令执行时都需要使用操作数,因此如何寻找存放操作数的单元地址和提取操作数就变得十分重要。Atmel代理所谓寻址方式就是如何找到存放操作数的地址,把操作数提取出来 的方法。 寻址方式与计算机的存储器空间结构有关,寻址方式越多,则计算机的功能越强,灵活性也越大,能更有效地处理各种数据,但指令系统也会相应的复杂。 MCS-51单片机共有七种寻址方式。下面分别加以介绍。 1.寄存器寻址 寄存器寻址是将所选定的工作寄存器组中的8个工作寄存器(R0—R7)的内容作为操 作数。指令操作码的低三位的不同组合分别代表R0—R7中的某一个。A、B、DPTR和C(位累加器)也能作为寄存器来寻址。例如: 这里源操作数和目标操作数均采用寄存器寻址.寄存器中的内容为操作数。 2.直接寻址 在直接寻址方式中、操作数由指令中的一个8位地址单元所指定。只有内部RAM中的00H~7FH地址单元和80H~FFH地址中的专用寄存器可直接寻址,且直接寻址是访问专 用寄存器的唯一方法。 采用直接寻址方式的指令是双字节指令,第一个字节是操作码,第二个字节是内部RAM的低128字节或专用寄存器的地址。例如: 此例中,源操作数采用直接寻址方式,表示把内部RAM中30H单元的内容送入A。指令代码为E5H、30H。 3.寄存器间接寻址 在寄存器间接寻址方式个,指令中给出的杏存器的内容为操作数的地址,而不是操作数本身。内部RAM和外部RAM都可以间接寻址。 当访问内部RAM或外部RAM的低256字节时,间址寄存器可以是选中寄存器组中的R0或R1,即内R0或R1间接给出操作数所在的地址‘ 当访问外部RAM时,16位间址寄存器只能使用16位数据指针寄存器DPTR,这时可对整个外部RAM空间(64KB)寻址。 PUSH和POP指令的执行也采用寄存器间接寻址,这时堆栈指针SP用作间址寄存 器。堆栈指针可驻留在内部RAM的任何地方;例如:

指令与寻址方式习题

指令与寻址方式习题解答 1.试分别说明下列各指令中源操作数和目的操作数使用的寻址方式:(1)AND AX,0FFH (2)AND BL,[OFFH] (3)MOV DS,AX (4)CMP [SI],CX (5)MOV DS:[0FFH],CL (6)SUB [BP][SI],AH (7)ADC AX,0ABH[BX] (8)OR DX,-35[BX][DI] (9)PUSH DS (10)CMC 答:目的操作数源操作数 (1)寄存器直接寻址立即数寻址 (2)寄存器直接寻址直接寻址 (3)寄存器直接寻址寄存器直接寻址 (4)寄存器间接寻址寄存器直接寻址 (5)直接寻址寄存器直接寻址 (6)基址变址寻址寄存器直接寻址 (7)寄存器直接寻址寄存器相对寻址 (8)寄存器直接寻址基址变址相对寻址 (9)无寄存器直接寻址 (10)隐含寻址 2.试分别指出下列各指令语句的语法是否有错,如有错,指明是什么错误。 (1)MOV [BX][BP],AX (2)TEST [BP],BL (3)ADD SI,ABH (4)AND DH,DL (5)CMP CL,1234H (6)SHR [BX][DI],3 (7)NOT CX,AX (8)LEA DS,35[SI] (9)INC CX,1 (10)P USH 45[DI] 答:(1)应将BP,BX其中之一该为SI或DI (2)正确 (3)ABH改为0ABH (4) (5)是字操作,CL改为CX (6)移位数大于1时,应用CL (7)NOT指令只有一个操作数 (8)LEA指令的源操作数应为一内存单元地址

(9)此指令不用指出1 (10)45改为45H 3.下面两条指令执行后,标志寄存器中CF,AF,ZF,SF和OF分别是什么状态? MOV DL,86 ADD DL,0AAH 答: 0101,0110 + 1010,1010 = 1,0000,0000 CF=1 AF=1 ZF=1 SF=1 OF=1 4.在8086/8088CPU中可用于作地址指针的寄存器有哪些? 答:有BX,CX,DX,BP,SI,DI (IP,SP,) 5.已知(DS)=09lDH,(SS)=1E4AH,(AX)=1234H,(BX)=0024H,(CX)=5678H,(BP)=0024H,(SI)=0012H,(DI)=0032H,(09226H)=00F6H,(09228H)=1E40H,(1E4F6H)=091DH。下列各指令或程序段分别执行后的结果如何? (1)MOV CL,20H[BX][SI] (2)MOV [BP][DI],CX (3)LEA BX,20H[BX][SI] MOV AX,2[BX] (4)LDS SI,[BX][DI] MOV [SI],BX (5)XCHG CX,32H[BX] XCHG 20H[BX][SI],AX 答(1) (CX)=56F6H; (2) (09226H)=5678H; (3) (AX)=1E40H; (4) (1E4F6H)=0024H; (5) (09226H)=1234H,(AX)=5678H. 6.已知(SS)=09l 5H,(DS)=0930H,(SI)=0A0H,(DI)=1C0H,(BX)=80H,(BP)=470H。现有一指令“MOV AX,OPRD”,如源操作数的物理地址为095C0H,试用四种不同寻址方式改写此指令(要求上述每个已知条件至少要使用一次)。 答:(1)MOV AX,[BP] (2)MOV AX,[BP+DI+80H] (3)MOV AX,[DI+0100H] MOV AX,[SI+0220H] (4)MOV AX,[02C0H] 7.试按下列要求分别编制程序段: (1)把标志寄存器中符号位SF置‘1’。 (2)寄存器AL中高低四位互换。 (3)由寄存器AX,BX组成一个32位带符号数(AX中存放高十六位),试求这个数的负数。 (4)现有三个字节存储单元A,B,C。在不使用ADD和ADC指令的情况下,实现(A)+(B)=>C。 (5)用一条指令把CX中的整数转变为奇数(如原来已是奇数,则CX中数据不变,如原来是偶数,则(CX)+1形成奇数)。 答:(1)MOV AH, 80H SAHF

MCS-51单片机的寻址方式和指令系统

MCS-51单片机指令系统与汇编语言程序设计 伪指令............................................. (2) MCS-51单片机的寻址方式 (4) MCS-51单片机的指令系统 (7) 数据传送指令 (8) 算数运算指令 (10) 逻辑运算及移位指令 (12) 控制转移指令 (13) 位操作指令 (18)

指令格式:指令的表示方式称为指令格式,它规定了指令的长度和内部信息的安排。完整的指令格式如下: [标号:] 操作码 [操作数] [,操作数] [;注释] 标号: 代表指令的具体地址 操作码: 又称助记符,英文缩写 操作数: 操作数中常数可以用二、八、十、十六进制表示,如果用十六进制表示,最高位用A以上的数开头时,前面须加0,否则机器不识别 注释:增加程序的可读性 伪指令 (1)定位伪指令ORG 格式:ORG n 其中:n通常为绝对地址,可以是十六进制数、标号或表达式。 功能:规定编译后的机器代码存放的起始位置。在一个汇编语言源程序中允许存在多条定位伪指令,但每一个n值都应和前面生成的机器指令存放地址不重叠。 例如程序:ORG 1000H START:MOV A,#20H MOV B,#30H ┇ (2)结束汇编伪指令END 格式:[标号:] END [表达式] 功能:放在汇编语言源程序的末尾,表明源程序的汇编到此结束,其后的任何内容不予理睬。 (3)赋值伪指令EQU 格式:字符名称x EQU 赋值项n 功能:将赋值项n的值赋予字符名称x。程序中凡出现该字符名称x就等同于该赋值项n,其值在整个程序中有效。赋值项n可以是常数、地址、标号或表达式。在使用时,必须先赋值后使用。 “字符名称”与“标号”的区别是“字符名称”后无冒号,而“标号”后面有冒号。 (4)定义字节伪指令DB

1_寻址方式与基本指令实验

2.1 寻址方式与基本指令实验 2.1.1 实验目的 1、熟悉80x86寻址方式及基本指令的功能,进一步理解和巩固课堂学习内容。 2、掌握汇编语言程序设计上机过程, 掌握汇编语言源程序结构,为后续汇编语言程序设计打好基础。 3、熟悉Microsoft的DEBUG或Borland的Turbo DEBUG调试工具的使用方法 2.1.2 实验预习要求 1、认真阅读本书第一部分第1章,熟悉汇编语言程序设计上机步骤。 2、认真阅读本书第三部分,熟悉DEBUG调试工具的使用方法。 3、复习80x86操作数寻址方式及基本指令(数据传送、算术运算和逻辑运算等)。 4、了解实验内容,并在实验前根据课堂所学知识回答有关问题(个别取决于程序实际运行环境的问题除外),以便在实验时进行验证。 2.1.3 实验内容 1、读懂下列源程序,使用EDIT生成名为EX11.ASM的源程序,汇编生成EX11.OBJ文件和EX11.LST 文件,连接生成EX11.EXE文件;用EDIT打开EX11.LST文件,了解.LST文件包含的信息;使用DEBUG调试工具单步执行EX11.EXE程序,注意观察IP值的变化,并回答下列问题。 (1)程序装入后,代码段寄存器CS的内容为13FD________H,代码段第一条可执行指令MOV A X, DATA对应的机器代码为B8FC13__________H,它是一个_3_______字节指令,注意观察 执行该指令时IP值的变化情况,该指令源操作数DATA的寻址方式是(立即数寻址_),其值为__13FC________。 (2)执行完MOV DS, DATA指令后,数据段寄存器DS的内容为_13FC_______H,源程序在数据段中定义的数据82H、68H和88H被装入的存储单元的物理地址分别为_13FC0_______H、13FC1________H和13FC2________H。 (3)程序中第一条ADD AL, [BX] 指令对应的机器代码为_0207_________H,它是一个_2_______字节指令,注意观察执行该指令时IP值的变化情况;该指令中源操作数的寻址方式为_寄存器间接寻址_________,该操作数所在存储单元的逻辑地址(DS): (BX)为_13FC:0001_________,其物理地址为_13FC1_________H;执行完该指令后(AL)=_EA_____H,CF=_NC_____,OF=NV______,ZF=NZ______,SF=NG______,AF=NA______,PF=PO______;若两操作数为无符号数,计算结果是否正确__正确_____?若两操作数为带符号数,计算结果是否正确__正确______?若计算结果正确,结果是正数还是负数(正数)? (4)执行完第二条ADD AL, [BX] 指令后(AL)=__72____H,CF=CY______,OF=OV______,ZF=NZ______,SF=PL______,AF=AC______,PF=PE______;若两操作数为无符号数,计算结果是否正确__正确_____?若两操作数为带符号数,计算结果是否正确_不正确_______? (5)指令MOV SUM, AL中目的操作数的寻址方式为__寄存器直接寻址________。该指令执行完后,注意观察(DS):0003H单元中值的变化,该单元的值变为_00_______H。 DA TA SEGMENT NUM DB 82H, 68H, 88H SUM DB ? DA TA ENDS CODE SEGMENT ASSUME CS:CODE, DS:DATA START: MOV AX, DA TA

单片机的指令和寻址方式

单片机的指令和寻址方式 单片机要正常运作,事先需编制程序,再把程序放入存贮器中,然后由CPU 执行该程序。程序是由指令组成的,指令的基本组成是操作码和操作数。单片机的品种很多,设计时怎样表示操作码和操作数,都有各自的规定,再有指令代码也各不相同,因此,必须对所选单片机的全部指令,也就是所谓指令系统,有足够的了解。各个系列的单片机虽然有不同的指令系统,但也有其共同性。掌握一种单片机的指令系统,对其它系列单片机可以起到触类旁通的作用。MCS-51 单片机应用广泛,派生品种多,具有代表性,所以,这里以MCS-51 系列的指令系统为例说明指令的组成和应用。1、MOV A,#20H 这条指令表示把20H 这个数送入累加器A 中(一个特殊功能寄存器)。 2、ADD A,70H 这条指令表示把累加器A 中的内容(在上例中送入的#20H)和存贮器中 地址为70H 单元中的内容(也是一个数字),通过算术逻辑单元(英文缩写为ALU)相加,并将结果保留在A 中。这里MOV、ADD 等称为操作码,而 A、#20H、70H 等均称为操作数。在汇编语言程序中,操作码通常由英文单词缩写而成,这样有助于记忆,所以又称助记符。如MOV 就是英文单词MOVE 的缩写,含有搬移的意思;而ADD 即为英文单词,其意为相加。因此,对于 略懂英语的用户,掌握单片机指令的含意是较为方便的。操作数有多种表示法,如以上的#20H 称为立即数,即20H 就是真正的操作数。而70H 是存贮器中某个单元的地址,在该单元中,放着操作数(比如说是3AH),ADD A,70H 不是将70H 和A 中的内容相加,而是从存贮器70H 单元中将3AH 取出和A 中的内容相加。由上可知,要找到实际操作数,有时就要转个弯,甚至转几个弯,这个过程称为寻址,MCS-51 共有7 种寻址方式,现介绍如下:

MIPS基本指令和寻址方式

MIPS 基本指令和寻址方式: MIPS 是典型的RISC 处理器,采用32位定长指令字,操作码字段也是固定长度,没有专门的寻址方式字段,由指令格式确定各操作数的寻址方式。 MIPS 指令格式一般有三种格式: R-型指令格式 I-型指令格式 J-型指令格式 R _Type 指指指指 26 21 16 11 6 31 OP : 操作码 rs : 第一个源操作数寄存器 rt : 第二个源操作数寄存器(单目原数据) rd : 结果寄存器 shamt :移位指令的位移量 func : 指令的具体操作类型 特点:R-型指令是RR 型指令,其操作码OP 字段是特定的“000000”,具体操作类型由func 字段给定。例如:func=“100000”时,表示“加法”运算。 R[rd] ← R[rs] + R[rt] I _Type 指 指指指 26 21 1631 15 特点:I-型指令是立即数型指令 双目运算: R[rt] R[rs](OP )SignExt(imm16) Load 指令: Addr ← R[rs] + SignExt(imm16) 计算数据地址 (立即数要进行符号扩展) R[rt] ← M[Addr] 从存储器中取出数据,装入到寄存器中

Store 指令: Addr ← R[rs] + SignExt(imm16) M[Addr] ← R[rt] J _Type 指令格式 2631 6bit 26bit 25 特点:J-型指令主要是无条件跳转指令,将当前PC 的高4位拼上26位立即数,后补两个“0”, 作为跳转目标地址。 j L //goto L 指指指指指指指指指 jal L //$ra 指PC+4;goto L 指指指指指指指指指 R 型指令: 定点运算: add / addu , sub / subu , sra , mult/multu , div/divu 逻辑运算: and / or / nor , sll / srl 比较分支: beq / bne / slt / sltu 跳转指令: jr I 型指令: 定点运算: addi / addiu 逻辑运算: andi / ori 比较分支: slti / sltiu 数据传送: lw / sw / lhu / sh / lbu / sb / lui J 型指令: j / jal

7种寻址方式

七种寻址方式 1、(直接寻址方式) 指令所要的操作数存放在内存中,在指令中直接给出该操作数的有效地址,这种寻址方式为直接寻址方式。在通常情况下,操作数存放在数据段中,所以,其物理地址将由数据段寄存器DS和指令中给出的有效地址直接形成,但如果使用段超越前缀,那么,操作数可存放在其它段。例:假设有指令:MOV BX, [1234H],在执行时,(DS)=2000H,内存单元21234H的值为5213H。问该指令执行后,BX的值是什么?解:根据直接寻址方式的寻址规则,把该指令的具体执行过程用下图来表示。从图中,可看出执行该指令要分三部分: 由于1234H是一个直接地址,它紧跟在指令的操作码之后,随取指令而被读出;访问数据段的段寄存器是DS,所以,用DS的值和偏移量1234H 相加,得存储单元的物理地址:21234H;取单元21234H的值5213H,并按“高高低低”的原则存入寄存器BX中。所以,在执行该指令后,BX的值就为5213H。由于数据段的段寄存器默认为DS,如果要指定访问其它段内的数据,可在指令中用段前缀的方式显式地书写出来。下面指令的目标操作数就是带有段前缀的直接寻址方式。 MOV ES:[1000H], AX 直接寻址方式常用于处理内存单元的数据,其操作数是内存变量的值,该寻址方式可在64K字节的段内进行寻址。注意:立即寻址方式和直接寻址方式的书写格式的不同,直接寻址的地址要写在括号“[”,“]”内。在程序中,直接地址通常用内存变量名来表示,如:MOV BX, VARW,其中,VARW是内存字变量。试比较下列指令中源操作数的寻址方式(VARW是内存字变量): MOV AX, 1234H MOV AX, [1234H] ;前者是立即寻址,后者是直接寻址 MOV AX, VARW MOV AX, [VARW] ;两者是等效的,均为直接寻址 2、(寄存器间接寻址方式) 操作数在存储器中,操作数的有效地址用SI、DI、BX和BP等四个寄存器之一来指定,称这种寻址方式为寄存器间接寻址方式。该寻址方式物理地址的计算方法如下:

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

一、选择题 1.寄存器间接寻址方式中,要寻找的操作数位于( B )中。 A.通用寄存器 B.内存单元 C.段寄存器 D.堆栈 2.下列指令中正确的是( C )。 A.MOV AL,BX B.MOV CS,AX C.MOV AL,CL D.MOV [BX],[SI] 3.下列指令中错误的是( C )。 A.MOV AX,1234H B.INC BX C.SRL AX,2 D.PUSH DX 4.设(SP)=1010H,执行POP AX后,SP中的内容为( B )。 A.1011H B.1012H C.1OOEH D.100FH 5.给定(AL)=80H,(CL)=02H,指令SHR AL,CL执行后的结果是(B )。 A.(AL)=40H B.(AL)=20H C.(AL)=C0H D.(AL)=E0H 6.将AX清零并使CF位清零,下面指令错误的是( A )。 A.SUB AX,BX B.XOR AX,AX C.MOV AX,0 D.AND AX,0OOOH 二、填空题 2.寻址的含义是指_寻找操作数的过程_;8086指令系统的寻址方式按照大类可分为_与操作数有关的寻址方式、与I/O端口有关的寻址方式_;其中寻址速度最快的是_立即数寻址_。 4.堆栈是一个特殊的_存储器区域_,其操作是以_2字节单元_为单位按照__先进后出_原则来处理;采用_SP_指向栈顶地址,入栈时地址变化为_SP<=(SP)-2_。 5.I/O端口的寻址有_直接端口寻址和间接端口寻址_两种方式;采用8位数时,可访问的端口地址为_0~255_;采用16位数时,可访问的端口地址为_0~65535_。 三、分析计算题 1.指出如下指令中源操作数和目的操作数的寻址方式: (1)MOV AX,100H (2)MOV CX,AX (3)ADD [SI],1000 (4)SUB BX,[SI+100] (5)MOV [BX+300],AX (6)AND BP,[DI] 解: 源操作数的寻址方式目的操作数的寻址方式 (1)MOV AX,100H 立即数寄存器 (2)MOV CX,AX 寄存器寄存器 (3)ADD [SI],1000 立即数寄存器间接 (4)SUB BX,[SI+100] 变址寄存器 (5)MOV [BX+300],AX 寄存器变址 (6)AND BP,[DI] 寄存器间接寄存器 2.分析如下指令的正误,对错误指令说明出错误原因并加以收正: (1)MOV [1200],23H (2)MOV 1020H,CX (3)MOV [1000H],[2000H] (4)MOV IP,O00H

第四章 指令与寻址方式习题解答 (2)

1. 假定(BX)=637DH,(SI)=2A9BH,位移量D=3237H,试确定在以下各种寻址方式下的有效地址是什么? (1)立即寻址 (2)直接寻址 (3)使用BX的寄存器寻址 (4)使用BX的间接寻址 (5)使用BX的寄存器相对寻址 (6)基址变址寻址 (7)相对基址变址寻址 答:(1)立即数寻址的有效地址是当前IP的内容; (2)直接寻址,若使用位移量D=3237H进行,则有效地址为3237H; (3)使用BX的寄存器寻址时,操作数在BX寄存器中,因此无有效地址; (4)使用BX的间接寻址时,有效地址在BX寄存器中,即有效地址=637DH; (5)使用BX的寄存器相对寻址的有效地址=(BX)+D=637DH+3237H=95B4H; (6)基址变址寻址的有效地址=(BX)+(SI)=637DH+2A9BH=8E18H; (7)相对基址变址寻址的有效地址=(BX)+(SI)+D=C050H; 2. 写出把首地址为BLOCK的字数组的第6个字送到DX寄存器的指令。要求使用以下几种寻址方式: (1)寄存器间接寻址 (2)寄存器相对寻址 (3)基址变址寻址 答:(1)使用寄存器间接寻址,把首地址为BLOCK的字数组的第6个字送到DX寄存器的指令为: MOV BX,BLOCK ADD BX,12 MOV DX,[BX] (2)使用寄存器相对寻址,把首地址为BLOCK的字数组的第6个字送到DX寄存器的指令为: MOV BX,BLOCK MOV DX,[BX+12] (3)使用基址变址寻址,把首地址为BLOCK的字数组的第6个字送到DX寄存器的指令为: MOV BX,BLOCK MOV SI,12 MOV DX,[BX+SI] 3. 现有(DS)=2000H,(BX)=0100H,(SI)=0002H,(20100H)=12H,(20101H)=34H,(20102H)=56H,(20103H)=78H,(21200H)=2AH,(21201H)=4CH,(21202H)=B7H,(21203H)=65H,试说明下列各条指令执行完后AX寄存器的内容。 (1)MOV AX,1200H

单片机实验-寻址方式和指令系统实验指导书

实验6. 寻址方式和指令系统 一.实验目的 1.了解MSP430G2xxx汇编格式指令和常用寻址方式 2.了解C语言函数调用过程 3.通过反汇编了解C编译器实现初始化变量的方法 4.掌握计算机中数的表示和编码 二. 实验任务 1.汇编格式指令和寻址方式的学习(可在simulator下完成) L6_1.c源程序见下,建立C项目,进入DEBUG状态,点击view/disassembly,在反汇编窗口得到L6_1.c汇编格式指令的程序代码,如图6-1和图6-2,阅读该程序的汇编格式代码,思考: 1) 程序用到了哪些指令? 2) 程序用到了哪几种寻址方式? 3)用单步执行命令F11,跟踪函数delay的调用和返回,用view/register和view/ memory查看堆栈指针SP和堆栈内的内容,记录堆栈指针SP和堆栈内容的变化; 4) 修改l6_1.C,将变量i定义为全局变量,通过反汇编的代码,比较与定义为局部变 量的不同; 5) 修改L6_1.C, 将变量i的类型从 unsigned int 类型,改为unsigned long 类型, 反汇编看看函数delay的代码发生了什么变化?程序执行的结果有什么不同?为什么?(需在实验板上运行)。 L66__1.c程序清单(提供电子版)

图6-1 L6-1.c程序中main函数的反汇编代码 图6-2 L6_1.c程序中delay函数的反汇编代码 2. 了解C语言程序的执行过程(可在simulator 方式下完成) 指令计数寄存器PC决定CPU取指令的地址,所以PC寄存器的内容决定了程序的流程。已知MSP430G2xxx单片机复位后, PC寄存器从存储器0xFFFE~0xFFFFH单元获取一个字内容作为执行第一条指令的地址。以L4_1.C的项目为例,请问实验中查看到该地址的值是多少?程序执行的第一条指令是什么指令?main函数的入口是单片机上电就被执行的第一条语句吗? 说明:如图6-3,可在项目设置option/Debugger/set up中,去除对run to前的选项,再将程序下载到单片机中,观察当前上电复位PC的值与0xFFFE~0xFFFF存储单元内容的关系,对比不去除run to前的选项的不同。 图6-3 C语言程序下载后程序运行的停止处设置(注意Run to 的选项)

指令格式和寻址方式

“指令格式和寻址方式”实验报告 姓名:朱蕾 学号:1107830133 以对源文件EXAMPLE 。EXE 进行操作为例 1 连接并生成扩展名为.EXE 可执行文件的操作 2 对可执行文件进行调试的操作: 3 用反汇编命令“U 代码段地址:起始偏移地址”显示出程序的表示符 程序的起始地址是0BB9H :001BH 4程序的起始地址是 0BB9H :001BH 进入C 盘根目录 13C4为段地址 第二列是代码段地址;第 三列是段内偏移地址 基址变址寻址:基址 寄存器的代码BX,变址寄存器的代码SI.

5 --D DS :0000;功能:显示内存中的数据命令 格式:D 数据段地址:存放数据的偏移地址 6-G=CS :0000 001B ; 功能:连续执行程序命令 格式:代码段地址:指令的起始偏移地址 指令的结 束偏移地址 7 –D DS :0000;功能:显示内存中的数据命令 格式:数据段地址:存放数据的偏移地 8 –R IP 指令的结束移地址 指令的起始偏移地址 立即寻址:CPU 直接将内存中的立即数4C00寄存在AX 中。 显示修改前得数据 输入修 改得数据

9 -T 单步执行程序命令(执行一条指令) 10 -T3 执行3条指令 11 -R 查看寄存器的数据命令 12 -R AX 查看和修改寄存器的数据命令 13 -D DS:0000 观察内存中的数据 14 -F DS:0000 0030 DF;对内存单元填充数据 -D DS:0000;观察内存中的是数据 显示修改后的数据。 寄存器直接寻址:将AX 的值赋给DS. 此三条指令均为寄存器直接寻址 AX 寄存器的数据命令变为FFFF,其他保持不变 第一列为数据段地址,第二列为偏移首地址,第三列为偏移末地址,第四列为填充的数据。

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