汇编语言mov指令的用法 x86汇编语言的MOV指令?
x86汇编语言的MOV指令?
MOV在汇编语言中是 数据传送指令。
用法如下:
mov — Move (Opcodes: 88, 89, 8A, 8B, 8C, 8E, ...)
mov指令将第二个操作数(可以是寄存器的内容、内存中的内容或值)复制到第一个操作数(寄存器或内存)。mov不能用于直接从内存复制到内存,其语法如下所示:
mov
mov
mov
mov
mov
Examples
mov eax, ebx — 将ebx的值拷贝到eax
mov byte ptr [var], 5 — 将5保存找var指示内存中的一个字节中
在汇编语言的串操作中,MOV DI, DS MOV ES, DI这两条指令到底有什么作用?
(1)这两条指令没有上下文的情况下,无法为您判断它们的实际意义。看不出与串操作有什么直接关系。在串操作中,一般是将两个串分别放在DS:SI和ES:DI寻址的内存单元中,以方便于串的比较、移动等操作。
(2)mov si,ds指令的意义是:将数据段寄存器的段地址值赋给SI,执行完成后:SI=DS
(3)MOV DI,ES 的意义是将扩展数据段寄存器的段地址值赋给DI.即执行完成后,DI=ES
一般情况下,程序中很少用到这样的指令,如果要保护DS和ES的值,通常用PUSH DS和PUSH ES指令。如果要计算物理地址,也是将段地址放到AX寄存器中。当然,即8086CPU给出了这样的指令,在某些情况下,可能会用到你提到的这两条指令。
什么是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指令是什么?
MOV指令的功能是传送数据,例如MOVAX,[1000H],作用是将1000H作为偏移地址,寻址找到内存单元,将该内存单元中的数据送至AX; LEA指令的功能是取偏移地址,例如LEAAX,[1000H],作用是将源操作数[1000H]的偏移地址1000H送至AX。理解时,可直接将[]去掉,等同于MOVAX,1000H。 再如:LEABX,[AX],等同于MOVBX,AX;LEABX,TABLE等同于MOVBX,OFFSETTABLE。 但有时不能直接使用MOV代替: 比如:LEAAX,[SI 6]不能直接替换成:MOVAX,SI 6;但可替换为: MOVAX,SI ADDAX,6 两步完成。
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。