加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

汇编语言mov指令详解

(2018-04-10 16:09:59)
标签:

汇编语言

mov

指令

分类: 电脑
汇编语言中,MOV指令是数据传送指令,也是最基本的编程指令,用于将一个数据从源地址传送到目标地址(寄存器间的数据传送本质上也是一样的)。其特点是不破坏源地址单元的内容。
例如:
MOV AX,2000H;将16位数据2000H传送到AX寄存器
MOV AL,20H;将8位数据20H传送到AL寄存器
MOV AX,BX;将BX寄存器的16位数据传送到AX寄存器
MOV AL,[2000H];将2000H单元的内容传送到AL寄存器
需要注意的是:
(1)两个存储单元之间不能直接传送数据,即:MOV指令只允许一个操作数在存储器中。MOV [SI],[2000H];这是错误的
(2)MOV指令中立即数不能直接传送给段寄存器(CS、DS、SS、ES)和IP;段寄存器之间不能直接传送。MOV IP,2000 H ;这是错误的
(3)CS和IP不能作为目的操作数。MOV CS,AX ;这是错误的
(4)MOV指令中立即数不能作目标操作数。MOV 2000H,[SI] ;这是错误的


MOV指令可以在CPU内或CPU和存储器之间传送字或字节,它传送的信息可以从寄存器到寄存器,立即数到寄存器,立即数到存储单元,从存储单元到寄存器,从寄存器到存储单元,从寄存器或存储单元到除CS外的段寄存器(注意立即数不能直接送段寄存器)从段寄存器到寄存器或存储单元。
      但是注意
(1)      MOV指令中的源操作数绝对不能是立即数和代码段CS寄存器;
(2)      MOV指令中绝对不允许在两个存储单元之间直接传送数据;
(3)      MOV指令中绝对不允许在两个段寄存器之间直接传送数据;
(4)      MOV指令不会影响标志位
 
例:MOV   AX,DATA_SEG
       MOV    DS,AX
注意:段寄存器(段地址)必须通过寄存器如AX寄存器进行立即数的初始化。
 
例: MOV    AL,‘E’
把立即数(字符E的ASC码)送到AL寄存器。
例: MOV    BX,OFFSET TABLE
将TABLE的偏移地址(而不是内容)送到BX寄存器中。其中OFFSET为属性操作符,表示的是将其后的符号地址的值(不是内容)作为操作数。
    MOV    AX,Y[BP][SI]
    把地址为16d×(SS)十(BP)十(SI)十位移量Y的存储单元的内容送给AX寄存器

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有