MOV指令是8086/8088指令系统中最为常见、最为基础的指令之一。下面谈谈我个人对微机原理中MOV指令的认识。
MOV指令是通用的传送指令,格式为: MOV 目的操作数,源操作数 。
我们一般通过MOV指令来实现:
1.CPU内部寄存器之间的数据传送。
2.立即数传送至CPU内部通用寄存器(AX,BX,CX,DX,BP,SP,SI,DI)。
3.CPU内部寄存器(CS和IP除外)与存储器(所有寻址方式)之间的数据传送。
4.实现用立即数给存储单元赋值。
接下来我来总结一下上述所说的通用寄存器和存储器所有寻址方式:
1.AX,BX,DX分别称为:累加器、基址寄存器、数据寄存器。
2.CX:在字符串处理指令和移位指令中作计数器,存放串的长度和移位次数。
3.SP:堆栈指针寄存器。指出当前堆栈段中栈顶的偏移地址。与SS联合使用,但SP不能在指令中出现。
4.BP:为对堆栈操作的基址寄存器,BP中存放的是堆栈中某一存储单元的偏移地址,不是指栈顶。通常和SS联合使用。
5.SI:为源变址寄存器,与数据段寄存器DS联合使用,确定数据段中某一存储单元的地址。
6.DI:为目标变址寄存器,与数据段寄存器DS联合使用,确定数据段中某一存储单元的地址。
注意:
SI和DI具有自动增量和减量的功能,在串操作指令中,SI、DI隐含作为源変址和目标变址寄存器。对其他的指令则没有这种限制。
说完通用寄存器,我再来说下存储器的所有寻址方式。存储器的寻址方式分为:直接寻址、寄存器间接寻址、变址寻址、基址加变址寻址。下面我来举个例子来说下这四种寻址方式。
例题:
在8086/8088微机的内存物理地址34780H处,存放有字节数据58H,已知DS=3000H,试写出指令序列将该字节数据送入AL寄存器。要求分别采用三种不同的寻址方式。
解:依题意可得
因为PA=34780H=DSX10H+EA=30000H+EA
所以EA=4780H,即[4780H]=58H
直接寻址: MOV AL ,4780H
寄存器间接寻址: MOV BX ,4780H
MOV AL , BX
变址寻址: MOV BX , 2780H
MOV SI , 2000H
MOV AL , [BX+SI]
基址加变址寻址: MOV BX ,2730H
MOV SI , 2000H
MOV AL ,[BX+SI+50H]
说完了通用寄存器和存储器的寻址方式,最后我简单的说下“用立即数给存储单元赋值”。
例: MOV BYTE PTR [2000H] , 25H
MOV WORD PTR [2000H] ,25H
注意:BYTE PTR 和 WORD PTR 是一属性修饰符,其作用是应用在向大空间传送小数字的地方。