mov指令用法小结

作者&投稿:蒋闹 (若有异议请与网页底部的电邮联系)
mov指令如何用好~

1.立即数送寄存器或主存 MOV reg/mem , im

mov al , 4 ; al←4,字节传送

mov cx , 0ffh ; cx←00ffh,字传送

mov si , 200h ; si←0200h,字传送

mov byte ptr [si] , 0ah ; byte ptr 说明是字节操作

mov word ptr [si+2 ], 0bh ; word ptr 说明是字操作

# 注意立即数是字节量还是字量

# 明确指令是字节操作还是字操作


2.寄存器送(段)寄存器或主存 MOV reg/mem/seg , reg;
mov ax , bx ; ax←bx,字传送

mov ah , al ; ah←al,字节传送

mov ds , ax ; ds←ax,字传送

mov [bx] , al ; [bx]←al,字节传送

3.主存送(段)寄存器 MOV reg/seg , mem;
mov al , [bx]

mov dx , [bp] ; dx←ss:[bp]

mov es , [si] ; es←ds:[si]

# 不存在存储器向存储器的传送指令

4.段寄存器送寄存器或主存 MOV reg/mem , seg;

mov si , ds

mov ax , es ; ax←es

mov ds , ax ; ds←ax←es

# 对段寄存器的操作有一些限制MOV指令传送功能:


非 法 传 送 种 种

1.两个操作数的类型不一致 –-----例如源操作数是字节,而目的操作数是字;或相反

• 绝大多数双操作数指令,除非特别说明,目的操作数与源操作数必须类型一致,否则为非法指令 MOV AL , 050AH;非法指令:050Ah为字,而AL为字节

• 寄存器有明确的字节或字类型,有寄存器参与的指令其操作数类型就是寄存器的类型

• 对于存储器单元与立即数同时作为操作数的情况,必须显式指明;

byte ptr 指示字节类型 , word ptr 指示字类型。

2.两个操作数不能都是存储器 –------传送指令很灵活,但主存之间的直接传送却不允许

• 8086指令系统不允许两个操作数都是存储单元(除串操作指令),要实现这种传送,可通过寄存器间接实现

mov ax , buffer1;ax←buffer1(将buffer1内容送ax)

mov buffer2 , ax;buffer2←ax;这里buffer1和buffer2是两个字变量、;实际表示直接寻址方式

3.段寄存器的操作有一些限制 –----段寄存器属专用寄存器,对他们的操作能力有限

• 不允许立即数传送给段寄存器 MOV DS,100H;非法指令:立即数不能传送段寄存器

• 不允许直接改变CS值 MOV CS,[SI] ;不允许使用的指令

• 不允许段寄存器之间的直接数据传送 MOV DS,ES;非法指令:不允许段寄存器间传送

在汇编语言中,MOV指令是数据传送指令,也是最基本的编程指令,用于将一个数据从源地址传送到目标地址(寄存器间的数据传送本质上也是一样的)。其特点是不破坏源地址单元的内容。
例如:
1、MOVAX,2000H;将16位数据2000H传送到AX寄存器。
2、MOVAL,20H;将8位数据20H传送到AL寄存器。
3、MOVAX,BX;将BX寄存器的16位数据传送到AX寄存器。
4、MOVAL,[2000H];将2000H单元的内容传送到AL寄存器。

扩展资料:
汇编语言特点:
1、机器相关性
这是一种面向机器的低级语言,通常是为特定的计算机或系列计算机专门设计的。因为是机器指令的符号化表示,故不同的机器就有不同的汇编语言。使用汇编语言能面向机器并较好地发挥机器的特性,得到质量较高的程序。
2、高速度和高效率
汇编语言保持了机器语言的优点,具有直接和简捷的特点,可有效地访问、控制计算机的各种硬件设备,如磁盘、存储器、CPU、I/O端口等,且占用内存少,执行速度快,是高效的程序设计语言。
参考资料来源:百度百科-汇编语言

标准机器代码示例

1/2字节 0/1字节 0/1/2字节 0/1/2字节

操作码 mod reg r/m 位移量 立即数

mov ax,[BP+0] ; 机器代码是 8B 46 00

•前一个字节8B是操作码(含w=1表示字操作)

•中间一个字节46(01 000 110)是 “mod reg r/m”字节

–reg=000表示目的操作数为AX

–mod=01和r/m=110表示源操作数为[BP+D8]

•最后一个字节就是8位位移量〔D8=〕00

8086指令系统概述

•Intel 8086指令系统共有二万多条指令,用了一百多个助记符 ,可分成6类功能组:

① 数据传送类指令

② 算术运算类指令

③ 逻辑运算(位操作)类指令

④ 串操作类指令

⑤ 控制转移类指令

⑥ 处理机控制类指令

学习指令的注意事项

•指令的功能——该指令能够实现何种操作。通常指令助记符就是指令功能的英文单词或其缩写形式

•指令支持的寻址方式——该指令中的操作数可以采用何种寻址方式

•指令对标志的影响——该指令执行后是否对各个标志位有影响,以及如何影响

•其他方面——该指令其他需要特别注意的地方,如指令执行时的约定设置、必须预置的参数、隐含使用的寄存器等

指令格式的通用规定

•双操作数指令,除串操作指令外,不允许两个都是存储器。

•立即数,CS不能做目的操作数。

•IP不能显示地用做操作数。

1.数据传送类指令

•数据传送是计算机中最基本、最重要的一种操作

•传送指令也是最常使用的一类指令

•传送指令把数据从一个位置传送到另一个位置

•除标志寄存器传送指令(SAHF,POPF)外,均不影响标志位

•重点掌握 MOV PUSH POP XCHG IN OUT XLAT LEA

传送指令MOV(move)

1.立即数送寄存器或主存 MOV reg/mem , im

mov al , 4 ; al←4,字节传送

mov cx , 0ffh ; cx←00ffh,字传送

mov si , 200h ; si←0200h,字传送

mov byte ptr [si] , 0ah ; byte ptr 说明是字节操作

mov word ptr [si+2 ], 0bh ; word ptr 说明是字操作

# 注意立即数是字节量还是字量

# 明确指令是字节操作还是字操作

2.寄存器送(段)寄存器或主存 MOV reg/mem/seg , reg;
mov ax , bx ; ax←bx,字传送

mov ah , al ; ah←al,字节传送

mov ds , ax ; ds←ax,字传送

mov [bx] , al ; [bx]←al,字节传送

3.主存送(段)寄存器 MOV reg/seg , mem;
mov al , [bx]

mov dx , [bp] ; dx←ss:[bp]

mov es , [si] ; es←ds:[si]

# 不存在存储器向存储器的传送指令

4.段寄存器送寄存器或主存 MOV reg/mem , seg;

mov si , ds

mov ax , es ; ax←es

mov ds , ax ; ds←ax←es

# 对段寄存器的操作有一些限制MOV指令传送功能:

非 法 传 送 种 种

1.两个操作数的类型不一致 –-----例如源操作数是字节,而目的操作数是字;或相反

• 绝大多数双操作数指令,除非特别说明,目的操作数与源操作数必须类型一致,否则为非法指令 MOV AL , 050AH;非法指令:050Ah为字,而AL为字节

• 寄存器有明确的字节或字类型,有寄存器参与的指令其操作数类型就是寄存器的类型

• 对于存储器单元与立即数同时作为操作数的情况,必须显式指明;

byte ptr 指示字节类型 , word ptr 指示字类型。

2.两个操作数不能都是存储器 –------传送指令很灵活,但主存之间的直接传送却不允许

• 8086指令系统不允许两个操作数都是存储单元(除串操作指令),要实现这种传送,可通过寄存器间接实现

mov ax , buffer1;ax←buffer1(将buffer1内容送ax)

mov buffer2 , ax;buffer2←ax;这里buffer1和buffer2是两个字变量、;实际表示直接寻址方式

3.段寄存器的操作有一些限制 –----段寄存器属专用寄存器,对他们的操作能力有限

• 不允许立即数传送给段寄存器 MOV DS,100H;非法指令:立即数不能传送段寄存器

• 不允许直接改变CS值 MOV CS,[SI] ;不允许使用的指令

• 不允许段寄存器之间的直接数据传送 MOV DS,ES;非法指令:不允许段寄存器间传送


51单片机的加法指令,D7,D6位只有一个有进位时,(ov)=1?
OV是溢出位,在有符号数加法运算时,如果2个正数相加,应该还为正数,如61H+1AH=7BH;但,如果2个正数相加,结果为负数了,那就肯定错了!如61H+2AH=8BH,就是错误的了。同理,2个负数相加,应该还为负数,如92H+8AH=9CH 在有符号数加法运算时,可以不考虑CY位 在无符号数加法运算时,可以...

单片机中,cy ac ov有什么用?
Cy是进位借位标志,主要用于加减计算和一些跳转指令比如:ADDC A,R0 JC LAB AC是半进位标志,主要用于BCD码十进制调整即 DA A OV是溢出标志。在执行算术指令时,指示运算是否产生溢出。

单片机中乘法指令溢出
请注意 在51中,乘法指令MUL AB 是这样子的 将累加器的值与B寄存器的值相乘,乘积的低位字节存回累加器,高位字节存回B寄存器 说明:将累加器A和寄存器B内的无符号整数相乘,产生16位的积,低位字节存入A,高位字节存入B寄存器。如果积大于FFH,则溢出标志位(OV)被设定为1,而进位标志位为0 这里...

单片机里的加法进位等等问题
具体情况要看单片机的种类和它支持的指令了 比如既有ADD, 也有ADC(或ADDC),则ADD时,与之前的状态无关,而ADC,则会把C加进去.而有的单片机只有ADC,那就要注意了,如果不希望以前有影响,就要自已清除标志.你只要反复看指令的说明和举例,就会弄懂的 ...

51单片机中,CY为1那么OV是不是也为1?
不一定CY例如-1+(-2)=-3,CY溢置1,OV不置1,减法也一样的 CY:进位标志。当最后一次算术操作产生进位(加法)或借位(减法)时,该位置 1。其它算 术操作将其清 0。OV:(变号溢出)溢出标志。该位在下列情况下被置1:ADD、ADDC 或SUBB 指令引起符号位变化溢出。MUL指令引起溢出(结果...

关于单片机带借位减法指令
0 1 0 0 1 0 0 1 - 0 1 1 0 0 1 0 0 - 1 ---0--- (1) 1 1 1 0 0 1 0 0 = E 4 从上面可以看出:CY=1、AC=0 这里的CY,就是位7的借位,它右边的位的借位,就是位6的借位,两者相等,就有OV=0。

汇编语言中ADD加法指令的问题
不是的,虽然算数运算指令主要用来对8位无符号数据进行算术操作,但也同样用于带符号数的。在加法运算中,若位7有进位,则进位位CY置1,否则清0;若位3有进位,则半进位位AC置1,否则清0。若看作2个带符号数相加,还需判断溢出位OV;若OV为1,表示和数溢出。例如:A=AEH,R1=81H,执行指令“ADD...

单片机SUBB指令有什么用,减去CY有什么意义?
SUBB指令是减法指令。在进行多字节相减的时候,前一字节相减出现的借位,要减到后一字节里面, Cy就是上次相减时的借位。带CY位减法指令,ov位是在两个符号数相加、减时产生:正数+正数=负数;正数-负数=负数;负数-正数=正数;负数+负数=正数;这几种情况会导致ov位置1。

简述特殊功能寄存器PSW各标志位的意义。
寄存器PSW有7个标志位:p:第0位,累加器奇偶标志位;ov:第2位,ov溢出标志位:RS1,RS0:第4,3位,寄存器组选择位;f0:第5位;用户定义的标志位;AC:半进位的标志,是低4位向高4位的进位和借位,cy:第7位:进位标志。

51单片机汇编语言中DEC指令问题:如果30H中为#00H,执行DEC 30H后,30H...
30H中为#00H,执行DEC 30H后,30H地址单元中是什么?--- 0000 0000减一后是1111 1111,也就是0FFH,也就是255。DEC 30H 指令不影响标志位,所以Cy、OV、Ac和P,都不变。只有运算功能的指令、比较指令影响标志位,INC\/DEC 指令是不影响标志位的。呵呵 ...

龙沙区17139791789: 求一个单片机mov指令的总结
闭冯达那: 助记符 指令 说 明 字节数 周期数 MOV A,Rn 寄存器传送到累加器 1 1 MOV A,direct 直接地址传送到累加器 2 1 MOV A, @Ri 累加器传送到外部RAM(8 地址) 1 1 MOV A,#data 立即数传送到累加器 2 1 MOV Rn,A 累加器传送到寄存器 1 1 MOV Rn,...

龙沙区17139791789: mov指令用法 -
闭冯达那: MOV BL,AX(数据长度不匹配) MOV DS,2000H(不允许给段存储器用立即数赋值) MOV CS,AX(禁止用MOV指令给CS赋值) MOV [AX],[2000H](禁止直接在存储器间传送) MOV [2000H],20H(数据长度不确切,应改为 MOV BYTE PTR [2000H],20H) 太多了,不说了!

龙沙区17139791789: 麻烦大家给我介绍一下汇编指令mov的用法吧 -
闭冯达那: mov指令的几种基本格式:mov 通用寄存器,立即数 (如:mov ax,1000h)mov 通用寄存器,通用寄存器 (如:mov ax,bx)mov 段寄存器,通用寄存器 (如:mov ds,ax )mov 通用寄存器,内存单元 (如:mov ax,ds:[0])mov 内存单元,通用寄存器 (如:mov ds:[0],ax)mov 内存单元,立即数 (如:mov ds:[0],1000h)

龙沙区17139791789: mov指令如何用好 -
闭冯达那: 1.立即数送寄存器或主存 MOV reg/mem , immov al , 4 ; al←4,字节传送mov cx , 0ffh ; cx←00ffh,字传送mov si , 200h ; si←0200h,字传送mov byte ptr [si] , 0ah ; byte ptr 说明是字节操作mov word ptr [si+2 ], 0bh ; word ptr 说明是字操作# 注...

龙沙区17139791789: mov指令有什么用 -
闭冯达那: MOV 指令为双操作数指令,两个操作数中必须有一个是寄存器. MOV DST , SRC // Byte / Word 执行操作: dst = src 1.目的数可以是通用寄存器, 存储单元和段寄存器(但不允许用CS段寄存器). 2.立即数不能直接送段寄存器 3.不允许在两个存储单元直接传送数据 4.不允许在两个段寄存器间直接传送信息

龙沙区17139791789: 欧姆龙PLC MOV指令做电机正反转 -
闭冯达那: mov只是一个赋值指令 例如: MOV K10 D100 ,意思是:将十进制的1放到D100中去,如果只是简单的电机正反转,也可以用MOV指令完成,比如,Y0接正转,Y1接反转,可以如下写指令: LDP X0 MOV K1 K1Y0 LDP X1 MOV K2 K1Y0 LDP X2 MOV K0 K1Y0上面程序中,X0为正转 X1为反转 X2为停止

龙沙区17139791789: 简答:请说明MOV指令与LDR加载指令的区别和用途 -
闭冯达那: MOV指令与LDR加载指令的区别为:数据传递不同、立即数限制不同、用途不同. 一、du数据传递不同 1、MOV指令:MOV指令进行zhi的是寄存器与寄存器之间的数据传递. 2、LDR加载指令:LDR加载指令进行的是寄存器与存储器之间的数据传递. 二、立即数限制不同 1、MOV指令:MOV指令限制了立即数的长度为dao8位,也就是不能超过512. 2、LDR加载指令:LDR加载指令没有限制立即数的长度. 三、用途不同 1、MOV指令:MOV指令的用途为用于对内存变量和数据的访问内、查表、程序的跳转、外围部件容的控制操作. 2、LDR加载指令:LDR加载指令的用途为用于移位运算等操作.

龙沙区17139791789: plc中MOV是什么指令的简写? -
闭冯达那: 传送指令MOV (D)MOV(P)指令的编号为FNC12,该指令的功能是将源数据传送到指定的目标.当X0为ON时,则将[S.]中的数据K100传送到目标操作元件[D.]即D10中.在指令执行时,常数K100会自动转换成二进制数.当X0为OFF时,则指令不...

龙沙区17139791789: 在PLC梯形图编程中MOV指令的使用 -
闭冯达那: 首先,你PLC程序里定时器或计数器的设定值不要写常数,写入一个变量,然后在屏里做一个数值输入单元,地址与PLC里设定值的变量地址一致即可在屏上改变设定值;比如你用的定时器为T37,那可以将T37MOV给一个V区数据单元,在屏上做一个数值显示单元,地址一致即可显示当前时间. 文本屏编写可以在PLC编程软件里用文本显示向导完成,功能很简单,触摸屏需要专门设计软件,功能可以做的很复杂.

龙沙区17139791789: mov 的功能 -
闭冯达那: 传送指令MOV(Move Instruction) 传送指令是使用最频繁的指令,它相对于高级语言里的赋值语句.指令的格式如下: MOV Reg/Mem, Reg/Mem/Imm 其中:Reg—Register(寄存器),Mem—Memory(存储器),Imm—Immediate(立即数),...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网