文档库 最新最全的文档下载
当前位置:文档库 › 第四章 指令与寻址方式习题解答 (2)

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

第四章 指令与寻址方式习题解答 (2)
第四章 指令与寻址方式习题解答 (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

(2)MOV AX,BX

(3)MOV AX,[1200H]

(4)MOV AX,[BX]

(5)MOV AX,[BX+1100]

(6)MOV AX,[BX+SI]

(7)MOV AX,[BX+SI+1100]

答:(1)指令MOV AX,1200H执行完后AX寄存器的内容为1200H;

(2)指令MOV AX,BX执行完后AX寄存器的内容为0100H;

(3)指令MOV AX,[1200H]是将从物理地址=(DS)*10H+1200H=21200H开始的两个单元内容送AX,执行完后AX寄存器的内容为4C2AH;

(4)指令MOV AX,[BX]是将从物理地址=(DS)*10H+(BX)=20100H开始的两个单元内容送AX,故执行完后AX寄存器的内容为3412H;

(5)指令MOV AX,[BX+1100]是将从物理地址=(DS)*10H+(BX)+1100H=21200H开始的两个单元内容送AX,故执行完后AX寄存器的内容为4C2AH;

(6)指令MOV AX,[BX+SI]是将从物理地址=(DS)*10H+(BX)+(SI)=20102H开始的两个单元内容送AX,故执行完后AX寄存器的内容为7856H;

(7)指令MOV AX,[BX+SI+1100]是将从物理地址=(DS)*10H+(BX)+(SI)+1100H=21202H开始的两个单元内容送AX,故执行完后AX寄存器的内容为65B7H;

4.假设已知(DS)=2900H,(ES)=2100H,(SS)=1500H,(SI)=00A0H,(BX)= 0100H,(BP)=0010H,数据段中变量名VAL的偏移地址值为0050H,试指出下列源操作数字段的寻址方式是什么?其物理地址值是多少?

(1)MOV AX,0ABH (2)MOV AX,BX

(3)MOV AX,[100H] (4)MOV AX,VAL

(5)MOV AX,[BX] (6)MOV AX,ES:[BX]

(7)MOV AX,[BP] (8)MOV AX,[SI]

(9)MOV AX,[BX+10] (10)MOV AX,VAL[BX]

(11)MOV AX,[BX][SI] (12)MOV AX,[BP][SI]

答:(1)在指令MOV AX,0ABH 中,源操作数字段的寻址方式是立即数寻址,其物理地址值=(CS)*10H+(IP);

(2)在指令MOV AX,BX 中,源操作数字段的寻址方式是寄存器寻址,操作数在BX中,无物理地址;

(3)在指令MOV AX,[100H] 中,源操作数字段的寻址方式是直接寻址,其物理地址值=(DS)*10H+100

=29000H+100H=29100;

(4)在指令MOV AX,VAL 中,源操作数字段的寻址方式是直接寻址,其物理地址值=(DS)*10H+50H =29000H+50H=29050H;(5)在指令MOV AX,[BX] 中,源操作数字段的寻址方式是寄存器间接寻址,其物理地址值=(DS)*10H +(BX)

=29000H+100H=29100H;

(6)在指令MOV AX,ES:[BX] 中,源操作数字段的寻址方式是寄存器间接寻址,其物理地址值=(ES)*10H+(BX)

=21000H+100H=21100H;

(7)在指令MOV AX,[BP] 中,源操作数字段的寻址方式是寄存器间接寻址,其物理地址值=(SS)*10H +(BP)

=15000H+10H=15010H;

(8)在指令MOV AX,[SI] 中,源操作数字段的寻址方式是寄存器间接寻址,其物理地址值=(DS)*10H +(SI)

=29000H+0A0H=290A0H;

(9)在指令MOV AX,[BX+10] 中,源操作数字段的寻址方式是寄存器相对寻址,其物理地址值=(DS)*10H+(BX)+0AH= 29000H+100H+0AH =2910AH;

(10)在指令MOV AX,VAL[BX] 中,源操作数字段的寻址方式是寄存器相对寻址,其物理地址值=(DS)*10H+(BX)+50H= 29000H+100H+50H= 29150H;

(11)在指令MOV AX,[BX][SI] 中,源操作数字段的寻址方式是基址变址寻址,其物理地址值=(DS)*10H+(BX)+(SI)=29000H+100H+0A0H =291A0H;

(12)在指令MOV AX,[BP][SI] 中,源操作数字段的寻址方式是基址变址寻址,其物理地址值=(SS)*10H+(BP)+(SI)=15000H+10H+0A0H =150B0H

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

(1)MOV SI,200

(2)MOV CX,DATA[SI]

(3)ADD AX,[BX+DI]

(4)AND AX,BX

(5)MOV [SI],AX

(6)PUSHF

答:(1)目的操作数字段的寻址方式是寄存器寻址,源操作数字段的寻址方式是立即数寻址;

(2)目的操作数的寻址方式是寄存器寻址,源操作数的寻址方式是寄存器相对寻址;

(3)目的操作数的寻址方式是寄存器寻址,源操作数的寻址方式是基址变址寻址;

(4)目的操作数的寻址方式是寄存器寻址,源操作数的寻址方式也是寄存器寻址;

(5)目的操作数的寻址方式是寄存器间接寻址,源操作数的寻址方式是寄存器寻址;

(6)目的操作数的寻址方式是寄存器间接寻址,源操作数的寻址方式是寄存器寻址;

6.试述指令MOV AX,2010H和MOV AX,DS:[2010H] 的区别。

答:指令MOV AX,2010H是将立即数2010H送AX寄存器,而指令MOV AX,DS:[2010H]是将DS段有效地址为2010H的两个单元的内容送AX。

7.写出以下指令中内存操作数的所在地址。

(1)MOV AL,[BX+5]

(2)MOV [BP+5],AX

(3)INC BYTE PTR [SI+3]

(4)MOV DL,ES:[BX+DI]

(5)MOV BX,[BX+SI+2]

答:(1)指令MOV AL,[BX+5]中内存操作数的所在地址=(DS)*10H+(BX)+5;

(2)指令MOV [BP+5],AX中内存操作数的所在地址=(SS)*10H+(BP)+5和(SS)*10H+(BP)+6;

(3)指令INC BYTE PTR[SI+3]中内存操作数的所在地址=(DS)+(SI)+3;

(4)指令MOV DL,ES:[BX+DI]中内存操作数的所在地址=(ES)*10H+(BX)+(DI);

(5)指令MOV BX,[BX+SI+2]中内存操作数的所在地址=(DS)*10H+(BX)+(SI)+2和(DS)*10H+(BX)+(SI)+3;

8.判断下列指令书写是否正确,如有错误,指出错在何处并用正确的程序段(一条或多条指令)实现原错误指令((8)、(13)除外)期望实现的操作。

(1)MOV AL,BX (9)MOV ES,3278H

(2)MOV AL,SL (10)PUSH AL

(3)INC [BX] (11)POP [BX]

(4)MOV 5,AL (12)MOV [1A8H],23DH

(5)MOV [BX],[SI] (13)PUSH IP

(6)MOV BL,F5H (14)MOV [AX],23DH

(7)MOV DX,2000H (15)SHL AX,5

(8)POP CS (16)MUL AX,BX

答:(1)MOV AL,BX 错,源操作数为字类型,目的操作数为字节类型,二者不一致。应改为:MOV AX,BX 或MOV AL,BL ;(2)MOV AL,SL 错,SI寄存器不能分为高8位和低8位使用,即没有SL寄存器。应改为:MOV AX,SI

(3)INC [BX] 错,未指定操作数的类型。应改为:INC BYTE PTR [BX] (4)MOV 5,AL 错,目的操作数使用了立即数,在指令中一般不允许。应改为:MOV DS:[5],AL

(5)MOV [BX],[SI] 错,源操作数和目的操作数均为内存单元,不允许。

应改为:MOV AX,[SI]

MOV [BX],AX

(6)MOV BL,F5H 错,源操作数错,以A~F开头的数字前应加0。应改为:MOV BL,0F5H

(7)MOV DX,2000H 正确。

(8)POP CS 错,不能将栈顶数据弹至CS中。

(9)MOV ES,3278H 错,立即数不能直接送ES寄存器。应改为:MOV AX,3278H

MOV ES,AX

(10)PUSH AL 错,栈操作不能按字节进行。应改为:PUSH AX

(11)POP [BX] 正确。

(12)MOV [1A8H],23DH 错,源操作数是立即数,目的操作数必须使用寄存器指出。应改为:

MOV BX,1A8H

MOV [BX],23DH

(13)PUSH IP 错,不能用IP寄存器做源操作数。

(14)MOV [AX],23DH 错,不能用AX寄存器间接寻址。应改为:MOV BX,AX

MOV [BX],23DH

(15)SHL AX,5 错,不能用大于己于1的立即数指出移位位数。应改为:

MOV CL,5

SHL AX,CL

(16)MUL AX,BX 错,目的操作数AX是隐含的,不能在指令中写出。应改为:MUL BX

9.设堆栈指针SP的初值为2000H,AX=3000H,BX=5000H,试问:

(1)执行指令PUSH AX后(SP)=?

(2)再执行PUSH BX及POP AX后(SP)=?(AX)=?(BX)=?

答:(1)执行指令PUSH AX后(SP)=2000H-2=1FFEH;

(2)再执行PUSH BX及POP AX后(SP)=1FFEH, (AX)=5000H, (BX)=5000H

10.要想完成把[2000H]送[1000H]中,用指令:MOV [1000H],[2000H]是否正确?如果不正确,应用什么方法?

答:把[2000H]送[1000H]中,用指令MOV [1000H],[2000H]不正确,应改为:MOV AX,[2000H] MOV [1000H],AX

11.假如想从200中减去AL中的内容,用SUB 200,AL是否正确?如果不正确,应用什么方法?

答:想从200中减去AL中的内容,用SUB 200,AL不正确,应改为: MOV BL,200 SUB BL,AL

12分别写出实现如下功能的程序段

(1)双字减法(被减数7B1D2A79H,减数53E2345FH)。

(2)使用移位指令实现一个字乘18的运算。

(3)使用移位指令实现一个字除以10的运算。

(4)将AX中间8位,BX低四位,DX高四位拼成一个新字。

(5)将数据段中以BX为偏移地址的连续四个单元的内容颠倒过来

(6)将BX中的四位压缩BCD数用非压缩BCD数形式顺序放在AL、BL、CL、DL中。

答:(1)双字减法的程序段是:

MOV AX,2A79H ;被减数的低位字送AX

SUB AX,345FH ;低位字相减,结果送AX

MOV BX,7B1DH ;被减数的高位字送BX

SBB BX,53E2H ;高位字相减处并减去低位字相减产生的借位,结果送BX

(2)使用移位指令实现一个字乘18的程序段是:

MOV AX,05F7H ;被乘数送AX

SHL AX,1 ;被乘数乘以2,结果在AX中

MOV BX,AX ;被乘数乘以2的结果暂存到BX

MOV CL,3 ;设置移位位数3

SHL AX,CL ;被乘数再乘以8(共乘以16),结果在AX中

ADD AX,BX ;被乘数再乘以18,结果在AX中

(3)使用移位指令实现一个字除以10的运算,必须将X/10拆分成多项的和,而每一项都应是非的某次幂的倒数。利用等比级数的前N 项和公式,可求出A0=X/8,公比Q=-1/4,故X/10=X/8-X/32+X/128-X/512+...,

所求的程序段是:

MOV AX,FE00H ;被除数送AX

MOV CL,3 ;设置移位位数3

SHR AX,CL ;被乘数除以8,结果在AX中

MOV BX,AX ;被乘数除以8的结果暂存到BX

MOV CL,2 ;设置移位位数2

SHR AX,CL ;被乘数除以4(累计除32),结果在AX中

SUB BX,AX ;被除数/8-被除数/32,结果在BX中

MOV CL,2 ;设置移位位数2

SHR AX,CL ;被乘数除以4(累计除128),结果在AX中

ADD BX,AX ;被除数/8-被除数/32+被除数/128,结果在BX中

MOV CL,2 ;设置移位位数2

SHR AX,CL ;被乘数除以4(累计除512),结果在AX中

SUB BX,AX ;被除数/8-被除数/32+被除数/128-被除数/512,结果在BX中

(4) 将AX中间8位,BX低四位,DX高四位拼成一个新字的程序段是:

AND DX,0F000H ;将DX的低12位清零,高4位不变

AND AX,0FF0H ;将AX的低4位清零,高4位清零,中间8位不变

AND BX,0FH ;将BX的高12位清零,低4位不变

ADD AX,BX

ADD AX,DX ;按要求组成一个新字,结果放在AX中。

(5) 将数据段中以BX为偏移地址的连续四个单元的内容颠倒过来的程序段是:

MOV AL,[BX] ;数据段中BX为偏移地址的字单元内容送AX

XCHG AL,[BX+3] ;数据段中BX+3为偏移地址的字单元内容与AX的内容交换

MOV [BX],AL ;数据段中BX+3为偏移地址的字单元内容送BX为偏移地址的字单元

MOV AL,[BX+1] ;数据段中BX+1为偏移地址的字单元内容送AX

XCHG AL,[BX+2] ;数据段中BX+2为偏移地址的字单元内容与AX的内容交换

MOV [BX+1],AL ;数据段中BX+2为偏移地址的字单元内容送BX+1为偏移地址的字单元(6)将BX中的四位压缩BCD数用非压缩BCD数形式顺序放在AL、BL、CL、DL中的程序段是:MOV DL,BL ;四位压缩BCD数的低位字节送DL

AND DL,0FH ;DL的高4位清零,得四位非压缩BCD数的最低位,放入DL中

MOV CL,4 ;设置移位位数4

SHR BX,CL ;BX中的数据逻辑右移4位,使四位压缩BCD数的次低位位于BL的低4位MOV CH,BL ;将BL的内容暂存到CH中保留

AND CH,0FH ;CH的高4位清零,得四位非压缩BCD数的次低位,放CH中

MOV CL,4 ;设置移位位数4

SHR BX,CL ;BX中的数据逻辑右移4位,使四位压缩BCD数的次高位位于BL的低4位MOV AL,BL ;将BL的内容暂存到AL中保留

AND BL,0FH ;BL的高4位清零,得四位非压缩BCD数的次高位,放BL中

MOV CL,4 ;设置移位位数4

SHR AL,CL ;使四位压缩BCD数的最高位位于AL的低4位,得四位非压缩BCD数的次高;位,放入BL中

MOV CL,CH ;将四位非压缩BCD数的次低位移入CL中

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

寻址方式及指令系统习题与解答 计算机科学与工程学院黄洪波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. ORG 0003H LJMP 2000H ORG 000BH LJMP 3000H 2. 当CPU响应外部中断0后,PC的值是()。 A.0003H B. 2000H C. 000BH D. 3000H 3. MCS-51的相对转移指令的最大负跳距离为()。 A.2KB B. 128B C.127B D. 256B 4. 以下运算中对溢出标志0V没有影响或不受影响的运算是()。 A.逻辑运算 B. 符号数加减运算 C. 比较数据大小运算 D. 除法运算 5. 产生PSEN信号的指令是()。 A . MOVX A ,@DPTR B. MOVX @DPTR, A C. MOVC A , @A+PC D. MOVX A, @A+DPTR 6. MOVX A , @DPTR指令中的源操作数的寻址方式是()。 A.寄存器寻址 B.寄存器间接寻址 C.直接寻址 D.立即寻址 7. 将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 8. 指令AJMP的跳转范围是()。 A .256 B B.1KB C.2KB D.64KB 9. 6264芯片是()。 A.E2PROM B.RAM C .Flash ROM D .EPROM 10. 下面那条指令产生WR信号()。 A.MOVX A , @DPTR B.MOVC A , @A+DPTR C.MOVC A , @A+PC D.MOVX @DPTR , A 11. 执行LCALL 4000H指令时,MCS-51所完成的操作是()。 A.保护PC B.保护现场 C.4000H →PC D.PC+3入栈,4000H → PC 12. 下列指令中可能改变Cy的有()。

汇编语言设计复习题(第2章:8086的寻址方式和指令系统)

1、下列指令属于基址加变址寻址方式的是( MOV DX,DS:[BP][SI] )。 DX 2、当程序顺序执行时,每取一条指令语句,IP指针增加的值是( D )。 DX A.1 B.2 C.3 D.由指令长度决定的 3、下列属于合法的指令是( D ) DX A.MOV DS,ES B.MOV [SI],[DI] C.MOV AX,BL D.MOV [DI], BL 4、若AX=349DH,CX=000FH。则执行指令AND AX,CX后,AX的值是( 000DH )。 DX 5、设DS=8225H,DI=3942H,指令NEG BYTE PTR[DI]操作数的物理地址是 ( 85B92H ) DX 6、下列寄存器组中在段内寻址时可以提供偏移地址的寄存器组是( B ) DX A、AX,BX,CX,DX B、BX,BP,SI,DI C、SP,IP,BP,DX D、CS, DS,ES,SS 7、对寄存器AX的内容乘以4的正确指令序列是( SHL AX,1 SHL,AX, 1 )。 DX 8、执行INC指令除对SF、ZF有影响外,还要影响的标志位是( OF,AF,PF )。 DX 9、设DH=10H,执行NEG DH指令后,正确的结果是( DH=0F0H CF=1 )。 DX 10、下列传送指令中有语法错误的是( A )。 DX A、MOV CS,AX B、MOV DS,AX C、MOV SS,AX D、MOV ES,AX 11、下面指令执行后,改变AL寄存器内容的指令是( D )。 DX A、TEST AL,02H B、OR AL,AL C、CMP AL,BL D、AND AL,BL 12、执行除法指令后,影响的标志位是( AF,CF,OF,PF,SF,ZF都不确定 )。 DX 13、执行下面指令序列后,结果是( AX=0FF82H )。 DX MOV AL,82H CBW 14、与MOV BX,OFFSET VAR指令完全等效的指令是( D )。 DX A、MOV BX,VAR B、LDS BX,VAR C、LES BX,VAR D、LEA BX,VAR 15、在段定义时,如果定位类型用户未选择,就表示是隐含类型,其隐含类型是 ( PARA )。 DX 16、MOV SP,3210H PUSH AX 执行上述指令序列后,SP寄存器的值是( 320EH )。 DX 17、BUF DW 10H DUP(3 DUP(2,10H),3,5) 上述语句汇编后,为变量BUF分配的存储单元字节数是( 100H )。 DX 18、MOV AH,7896H ADD AL,AH 上述指令执行后,标志位CF和OF的值是( CF=1,OF=0 )。 DX 19、完成将带符号数AX的内容除以2的正确指令是( SHR AX,1 )。 DX 20、在汇编语言程序中,对END语句的叙述正确的是( C )。 DX A.END语句是一可执行语句 B.END语句表示程序执行到此结束

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

作业习题 寻址方式和指令

寻址方式和指令习题 一、选择题 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的值是()

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

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所示

计算机组成原理,指令系统,练习题

单项选择题 1 在CPU执行指令的过程中,指令的地址由___B__给出。 A 程序计数器PC B 指令的地址码字段 C 操作系统 D 程序员 2 下列关于指令的功能及分类叙述正确的是__B___。 A 算术与逻辑运算指令,通常完成算术运算或逻辑运算,都需要两个数据 B 移位操作指令,通常用于把指定的两个操作数左移或右移一位 C 转移指令,子程序调用与返回指令,用于解决数据调用次序的需要 D 特权指令,通常仅用于系统软件,这类指令一般不提供给用户 3 零地址的运算类指令在指令格式中不给出操作数的地址,参加的两个操作数来自__C__。A累加器和寄存器 B 累加器和暂存器 C 堆栈的栈顶和次栈顶单元 D 堆栈的栈顶单元和暂存器 4 下列一地址运算类指令的叙述中,正确的是_____。 A 仅有一个操作数,其地址由指令的地址码提供 B 可能有一个操作数,也可能有两个操作数 C 一定有两个操作数,其中一个操作数是隐含的 D 指令的地址码字段存放的一定是操作码 5 关于二地址指令一下论述正确的是_____。 A 二地址指令中,运算结果通常存放在其中一个地址码所提供的地址中 B二地址指令中,指令的地址码字段存放的一定是操作数 C二地址指令中,指令的地址码字段存放的一定是寄存器号 D二地址指令中,指令的地址码字段存放的一定是操作数地址 6 单字长四地址指令OP A1、A2、A3、A4的功能为(A1)OP(A2)→A3,且A4给出下一条指令地址,假设A1、A2、A3、A4都为主存储器地址,则完成上述指令需访存_____。 A 1 B 2 C 3 D 4 7 在指令格式设计中,采用扩展操作码的目的是_____。 A 增加指令长度 B 增加地址码数量NN C 增加指令数量 D 增加寻址空间 8 某机器的指令字长为16位,有8个通用寄存器,有8种寻址方式,单操作数指令最多有_____个,双操作数指令最多有_____个。 A 1024 16 B 2048 32 C 256 64 D 1024 32 9 指令寻址方式有顺序和跳跃两种,采用跳跃寻址方式可以实现_____。 A 程序浮动 B 程序的无条件浮动和条件浮动 C程序的无条件转移和条件转移 D 程序的调用 10 某机器指令字长为16位,主存按字节编址,取指令时,每取一个字节PC自动加1,。当前指令地址为2000H,指令内容为相对寻址的无条件转移指令,指令中的形式地址D=40H。那么取指令后及指令执行后PC内容为_____。 A 2000H,2042H B 2002H,2040H C 2002H,2042H D 2000H,2040H 11 指令系统中采用不同的寻址方式的目的主要_____。 A 可降低指令译码难度 B 缩短指令字长,扩大寻址空间,提高编程灵活性

寻址方式和指令系统

《微机原理》复习思考题第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作为判断依 据?

第5章 指令系统习题

第5章指令系统 〔习题5.1〕简答题 (1)定长指令字和定长操作码是一回事吗? (2)什么是Load-Store指令集结构? (3)为什么将查找操作数的方法称为数据寻“址”方式? (4)是什么特点决定了目标地址的相对寻址方式应用最多? (5)堆栈的存取原则是什么? (6)IA-32处理器的INC,DEC,NEG和NOT都是单操作数指令,这个操作数应该是源操作数还是目的操作数? (7)IA-32处理器的乘除法运算针对无符号数和有符号数,有两种不同的指令。只有一种指令的加减法如何区别无符号数和有符号数运算? (8)为什么判断无符号数大小和有符号大小的条件转移指令不同? (9)汇编语言的标识符大小写不敏感意味着什么? (10)为什么说RISC是计算机结构上的革新? 〔习题5.2〕判断题 (1)存储器寻址方式的操作数当然在主存了。 (2)堆栈的操作原则是“先进后出”,压入数据是PUSH指令、弹出数据是POP指令。 (3)空操作NOP指令其实根本没有指令。 (4)指令指针或者还包括代码段寄存器值的改变将引起程序流程的改变。 (5)JMP指令对应高级语言的GOTO语句,所以不应使用。 (6)IA-32处理器的条件转移指令Jcc要利用标志作为条件。 (7)处理器的传送指令MOV属于汇编语言的执行性语句。 (8)MASM汇编语言的注释用分号开始,但不能用中文分号。 (9)通常,RISC处理器只有“取数LOAD”和“存数STORE”指令访问存储器。 (10)RISC的指令条数少、指令简单、格式固定,所以编译程序也就容易实现,并且不需要优化。 〔习题5.3〕填空题 (1)JMP指令根据目标地址的转移范围和寻址方式,可以分成四种类型:段内转移、__________,段内转移、__________和段间转移、__________,段间转移、__________。 (2)IA-32处理器将ESI寄存器内容压入堆栈的指令是__________,将堆栈顶部数据弹出到EDI寄存器的指令是__________。 (3)IA-32处理器的指令“XOR EAX, EAX”和“SUB EAX, EAX”执行后,EAX=__________,CF=OF=__________。而指令“MOV EAX, 0”执行后,EAX=__________,CF和OF没有变化。 (4)欲将EDX内的无符号数除以16,可以使用指令“SHR EDX, __________”,其中后一个操作数是一个立即数。 (5)“CMP EAX,3721H”指令之后是JZ指令,发生转移的条件是EAX=__________,此时ZF=__________。 (6)主程序调用子程序需要用__________指令,子程序最后的返回指令是__________。 (7)在IA-32指令“ADD EDX,5”中,指令助记符是__________,目的操作数是__________,另一个操作数采用__________寻址方式。 (8)MASM要求汇编语言源程序文件的扩展名是___________,汇编产生扩展名为OBJ

习题(指令与编程及答案)

指令与编程及答案 一.单项选择题 1. ORG 0003H LJMP 2000H ORG 000BH LJMP 3000H 2. 当CPU响应外部中断0后,PC的值是(A)。 A.0003H B. 2000H C. 000BH D. 3000H 3. MCS-51的相对转移指令的最大负跳距离为( B )。 A.2KB B. 128B C.127B D. 256B 4. 以下运算中对溢出标志0V没有影响或不受影响的运算是()。 A.逻辑运算 B. 符号数加减运算 C. 比较数据大小运算 D. 除法运算 5. 产生PSEN信号的指令是( C )。 A . MOVX A,@DPTR B. MOVX @DPTR, A C. MOVC A , @A+PC D. MOVX A, @A+DPTR 6. MOVX A , @DPTR指令中的源操作数的寻址方式是(B )。 A.寄存器寻址 B.寄存器间接寻址 C.直接寻址 D.立即寻址 7. 将MCS-51的工作寄存器置成3区的指令是(B )。 A. MOV PSW , #13H B.MOV PSW , #18H C. SETB PSW.4 ,CLR PSW.3 D.SETB PSW.3 ,CLR PSW.4 8. 指令AJMP的跳转范围是()。 A .256 B B.1KB C.2KB D.64KB 9. 6264芯片是()。 A.E2PROM B.RAM C .Flash ROM D .EPROM 10. 下面那条指令产生WR信号( D )。 A.MOVX A , @DPTR B.MOVC A , @A+DPTR C.MOVC A , @A+PC D.MOVX @DPTR , A 11. 执行LCALL 4000H指令时,MCS-51所完成的操作是( D )。 A.保护PC B.保护现场 C.4000H →PC D.PC+3入栈,4000H → PC

第五章 指令系统习题

第五章指令系统 一、选择题 1、采用直接寻址,操作数在中。 A、主存 B、寄存器 C、硬盘 D、光盘 2、为了缩短指令中某个地址段的位数,有效的方法是采取。 A、立即寻址 B、变址寻址 C、间接寻址 D、寄存器寻址 3、指令系统采用不同寻址方式的目的是。 A、实现存储程序和程序控制 B、缩短指令长度,扩大寻址空间,提高编程灵活性 C、可以直接访问外存 D、提供扩展操作码的可能,并降低指令译码难度 4、假设寄存器R中的数值为200,主存地址为200和300的地址单元中存放的内容分别是300和400,则方式下访问到的操作数为200。 A、直接寻址200 B、寄存器间接寻址(R) C、存储器间接寻址(200) D、寄存器寻址R 5、输入输出指令的功能是。 A、进行算术运算和逻辑运算 B、进行主存和CPU之间的数据传送 C、进行I/O设备和CPU之间的数据传送 D、改变程序执行的顺序 6、下列关于RISC的描述中,不正确的是。 A、只选用简单的,使用频率高的指令,所以采用RISC的CPU的性能较差,不能运行复杂的指令 B、指令长度固定,指令格式和寻址方式少 C、采用硬布线逻辑,提高指令执行的速度 D、采用指令流水线技术,大部分指令都能在一个机器周期中完成。 7、间接寻址是指。 A、指令中直接给出操作数地址 B、指令中直接给出操作数 C、指令中间接给出操作数 D、指令中间接给出操作数的地址 8、基址寻址方式中,操作数的有效地址等于。 A、基址寄存器的内容加上形式地址(偏移量) B、变址寄存器的内容加上形式地址(偏移量) C、程序计数器的内容加上形式地址(偏移量) D、堆栈寄存器的内容加上形式地址(偏移量) 8.通常指令编码的第一个字段是__ __ A.操作 B.指令 C.操作码 D.控制码 9.堆栈常用于 _ A.程序转移 B.输入输出 C.数据移位 D.保护程序现场 10.在堆栈中保持不变的是_ _ A.栈指针 B.栈底 C.栈顶 D.栈中数据 11.设寄存器R=1000,地址1000处的值为2000,2000处为3000,PC的值为4000,用相对寻址方式,-2000(PC)的操作数是__ __ A.4000 B.3000

指令格式及寻址方式

指令格式及寻址方式 一、指令格式 指令的表示方法称为指令格式,它包括指令的长度和指令内部信息的安排等内容。一条指令一船由两部分组成,即操作码和操作数。操作码用来规定指令进行什么操作,而操作效则表示指令操作的对象。操作数可以直接是一个数(立即数),也可以是一个数据所在的空间地址,即在执行指令时从指定的地址空间取出操作数。 单片机中的指令并不是固定的长度,对于不同的指令,指令的字节数不同。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、计算机系统结构 2、透明性 3、模拟 二、 假设系统某一部件的处理速度加快9 倍,但该部件的原处理时间仅为整个运行时间的45% ,则采用加快措施后能使整个系统的性能提高多少?如果部件改进后获得的加速比变为SP=5.5 ,问改进前的执行时间占改进前执行时间的百分比是多少? 三、 某机器有10条指令,频度分别为:0.25、0.2、0.15、0.1、0.08、0.08、0.05、0.04、0.03、0.02、。要求写出等长二进制编码、Huffman编码、3/7扩展编码,求出三种编码的平均码长。?四、 有一个Cache—主存层次:主存分8块(0~7),Cache为4块(0~3)。采用全相联映象。已知页面地址流为2,7,4,2,0,1,5,4,1,2,6,5,6,0,2。试用FIFO 、LRU和OPT 替换算法,分别画出替换示意图、求出命中率H、指出替换几次。 答案: 一、 1、计算机系统结构:机器语言程序员所看到的传统机器级所具有的属性,它包括概念性结构和功能特性两个方面。 2、透明性:在计算机技术中,本来存在的事物或属性,但从某种角度看又好像不存在的概念称为透明性 3、模拟:是指用软件方法在一台现有的计算机上实现另一台计算机的指令系统。 二、

三、 等Huffman3/7 10.250000000 20.20001001 30.150010010 40.10011011 50.080100100 60.080101101 70.050110110 80.04011111100 90.0310******* 100.021******** 0.020.030.040.050.080.080.10.150.20.250.05 0.040.050.050.080.080.10.150.20.250.09 0.050.080.080.090.10.150.20.250.13 0.080.090.10.130.150.20.250.17 0.10.130.150.170.20.250.23 0.150.170.20.230.250.32 0.20.230.250.320.43 0.250.320.430.57 0.430.571 1

汇编习题及答案

第三章 8086的寻址方式和指令系统 1. 指令正误判断,对正确指令写出源和目的操作数的寻址方式,对错误指令指出原因(设 VAR1, VAR2为字变量, L1为标号): (1)MOV SI,100 (2)MOV BX,VAR1[SI] (3)MOV AX, [BX] (4)MOV AL, [DX] (5)MOV BP, AL (6)MOV VAR1, VAR2 (7)MOV CS, AX (8)MOV DS, 0100H (9)MOV [BX][SI], 1 (10)MOV AX, VAR1+VAR2 (11)ADD AX, LENGTH VAR1 (12)OR BL, TYPE VAR2 (13)SUB [DI], 78H (14)MOVS VAR1, VAR2 (15)PUSH 100H (16)POP CS (17)XCHG AX, ES (18)MOV DS, CS (19)JMP L1+5 (20)DIV AX, 10 (21)SHL BL, 2 (22)MOV AL, 15+23 (23)MUL CX (24)XCHG CL, [SI] (25)ADC CS:[0100], AH (26)SBB VAR1-5,154 参考答案:(1)MOV SI,100 ;指令正确,源:立即数寻址,目的:寄存器寻址(2)MOV BX,VAR1[SI] ;指令正确,源:寄存器相对寻址,目的:寄存器寻址 (3)MOV AX, [BX] ;指令正确,源:寄存器间接寻址,目的:寄存器寻址 (4)MOV AL, [DX] ;指令错误,DX不能用作为地址寄存器 (5)MOV BP, AL ;指令错误,类型不一致 (6)MOV VAR1, VAR2 ;指令错误,MOV指令不能从存储器到存储器传送 (7)MOV CS, AX ;指令错误,CS不能用作为目的操作数 (8)MOV DS, 0100H ;指令错误,MOV指令不能将立即数传送到段寄存器 (9)MOV [BX][SI], 1 ;指令错误,类型不定 (10)MOV AX, VAR1+VAR2 ;指令错误,MOV指令中不能完成加法运算 (11)ADD AX, LENGTH VAR1 ;指令正确,源:立即数寻址,目的:寄存器寻址 (12)OR BL, TYPE VAR2 ;指令正确,源:立即数寻址,目的:寄存器寻址 (13)SUB [DI], 78H ;指令错误,类型不定 (14)MOVS VAR1, VAR2 ;指令正确,源:隐含寻址,目的:隐含寻址 (15)PUSH 100H ;指令错误,立即数不能直接压入堆栈 (16)POP CS ;指令错误,CS不能用作为目的操作数 (17)XCHG AX, ES ;指令错误,XCHG指令中不能使用段寄存器 (18)MOV DS, CS ;指令错误,MOV指令不能从段寄存器到段寄存器 (19)JMP L1+5 ;指令正确,段内直接转移 (20)DIV AX, 10 ;指令错误,DIV指令格式错误 (21)SHL BL, 2 ;指令错误,移位指令的移位数要么是1,要么是CL (22)MOV AL, 15+23 ;指令正确,源:立即数寻址,目的:寄存器寻址 (23)MUL CX ;指令正确,源:寄存器寻址,目的:隐含寻址 (24)XCHG CL, [SI] ;指令正确,源:寄存器间接寻址,目的:寄存器寻址 (25)ADC CS:[0100], AH ;指令正确,源:寄存器寻址,目的:直接寻址 (26)SBB VAR1-5,154 ;指令正确,源:立即数寻址,目的:直接寻址

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

微机原理与接口技术习题答案 - 副本

第3章8086/8088指令系统与寻址方式习题 3.3 8086系统中,设DS=1000H,ES=2000H,SS=1200H,BX=0300H,SI=0200H, BP=0100H,VAR的偏移量为0600H,请指出下列指令的目标操作数的寻址方式,若目标操作数为存储器操作数,计算它们的物理地址。 (1)MOV BX,12 ;目标操作数为寄存器寻址 (2)MOV [BX],12 ;目标操作数为寄存器间址 PA=10300H (3)MOV ES:[SI],AX ;目标操作数为寄存器间址 PA=20200H (4)MOV VAR,8 ;目标操作数为存储器直接寻址 PA=10600H (5)MOV [BX][SI],AX ;目标操作数为基址加变址寻址 PA=10500H (6)MOV 6[BP][SI],AL ;目标操作数为相对的基址加变址寻址 PA=12306H (7)MOV [1000H],DX ;目标操作数为存储器直接寻址 PA=11000H (8)MOV 6[BX],CX ;目标操作数为寄存器相对寻址 PA=10306H (9)MOV VAR+5,AX ;目标操作数为存储器直接寻址 PA=10605H 3.4 下面这些指令中哪些是正确的?那些是错误的?如果是错误的,请说明原因。 (1)XCHG CS,AX ;错,CS不能参与交换 (2)MOV [BX],[1000] ;错,存储器之不能交换 (3)XCHG BX,IP ;错,IP不能参与交换 (4)PUSH CS (5)POP CS ;错,不能将数据弹到CS中 (6)IN BX,DX ;输入/输出只能通过AL/AX (7)MOV BYTE[BX],1000 ;1000大于255,不能装入字节单元 (8)MOV CS,[1000] ;CS不能作为目标寄存器 (9)MOV AX,[SI][DI] ;SI、DI不能成为基址加变址 3.7 设当前 SS=2010H,SP=FE00H,BX=3457H,计算当前栈顶的地址为多少?当执行PUSH BX 指令后,栈顶地址和栈顶2个字节的内容分别是什么? 当前栈顶的地址=2FF00H 当执行PUSH BX 指令后,栈顶地址=2FEFEH (2FEFEH)=57H (2FEFFH)=34H 3.8 设DX=78C5H,CL=5,CF=1,确定下列各条指令执行后,DX和CF中的值。 (1) SHR DX,1 ;DX=3C62H CF=1 (2) SAR DX,CL ;DX=03C6H CF=0 (3) SHL DX,CL ;DX=18A0H CF=1 (4) ROR DX,CL ;DX=2BC6H CF=0 (5) RCL DX,CL ;DX=18B7H CF=1 (6) RCR DH,1 ;DX=BCC5H CF=0; 3.9 设AX=0A69H,VALUE字变量中存放的内容为1927H,写出下列各条指令执行后寄存器和CF、ZF、OF、SF、PF的值。 AX CF ZF OF SF PF (1)XOR AX,VALUE ; 134EH 0 0 0 0 1 (2)AND AX,VALUE ; 0821H 0 0 0 0 1 (3)SUB AX,VALUE ; F142H 1 0 0 1 1 (4)CMP AX,VALUE ; 0A69H 1 0 0 1 1 (5)NOT AX ; F596H X X X X X (6)TEST AX,VALUE ; 0A69H 0 0 0 0 1 3.10 设AX和BX中是符号数,CX和DX是无符号数,请分别为下列各项确定CMP和

指令与寻址方式习题

指令与寻址方式习题解答 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

相关文档
相关文档 最新文档