《汇编语言与计算机系统组成》第四章例题-2

【例1】判断下列指令对错。

1) MOV [DI], [SI]

错 。直接将一个内存内容赋值给另一个。

2) MOV CX, AH

错。注意不要把AH是一个十六进制数(一个立即数),容易看错,只有八位。源操作数和目的操作数长度不等。

3) MOV 20, DL

错。目的操作数不能是立即数。

4) MOV CS,BX

错。给CS用MOV指令。

5) MOV DS, 1000H

错。不能给段寄存器赋值立即数。

6) MOV BL, 7F2H

错。源操作数和目的操作数长度不同。

7) MOV DS, AX

对。

MOV 指令注意事项:

1)MOV指令不破坏源操作数,相当于执行复制操作

2)MOV指令不能将一个存储单元内容直接传送给另一个存储单元(但可以简介传送)

3)目的操作数不能是立即数(常数)

4)不能让立即数为段寄存器赋值

5)目的操作数和源操作数长度应该相等

6)32位指令只有80386之后才能用

7)不能用MOV 给CS赋值(CS和IP存储下一条指令地址)

【例2】把DS:[SI]字单元传送到ES:[DI]字单元。

解:注意这里DS:[SI]和ES:[DI]是内存单元,不是寄存器。由于不能直接将一个存储单元的内容直接送到另一个存储单元,所以使用通用寄存器AX做一个中转。可以由以下两部MOV指令实现:

MOV  AX,DS:[SI]

MOV  ES:[DI],AX

【例3】系统工作于实地址模式下,假定(DS)=2000H,(ES)=2100H,(SS)=1500H,(SI)=00A0H, (BX)=0100H, (BP)=0100H, 试指出下列指令源操作数的寻址方式和物理地址。

1) MOV AX, 0BAH

立即数寻址。操作数是立即数。不知道操作数的物理地址。

2) MOV AX, [100H]

直接寻址。操作数在存储单元中,并且这个操作数的地址是立即数。如这个源操作数在地址为100H的存储单元中。20100H。([100H]-->DS:[100H])20100H=2000Hx10H+100H。

3) MOV AX, [BX+SI]

基址变址寻址。操作数在存储单元中,并且这个操作数的地址是基址寄存器内容(一定有)、变址寄存器内容(一定有)和指令中的偏移量(可有也可无)之和。如这个源操作数地址没有指令偏移量。2001AH。([BX+SI]-->DS:[BX+SI])2001AH=2000Hx10H+0100H+00A0H。

4) MOV AX, [BX+SI+5]

基址变址寻址。对比3)这个操作数地址有指令偏移量。201A5H.

5) MOV AX, ES:[BX]

寄存器间接寻址。操作数在存储单元中,并且操作数地址在寄存器当中。如这个是因为[BX]这一步判断为寄存器间接寻址,不用管ES:。21100H

6) MOV AX, [BP]

寄存器间接寻址。20100H。

7) MOV AX, BP

寄存器寻址。操作数存放在寄存器当中。直接将BP寄存器当中所有内容给了AX,所以没有操作数物理地址。

8) MOV AX, [BX+5]

寄存器相对寻址。操作数在存储单元中,并且操作数的地址是基址寄存器内容(一定有)和指令偏移量之和(一定有)。20105H

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值