zoukankan      html  css  js  c++  java
  • 指令整理

    1-----------------------------------------------------------------------------

     mov dst, src

    dst是目的操作数,src是源操作数,指令实现的功能是:将源操作数送到目的操作数中,即:(dst) <--(src)

    1.dst和src类型必须匹配,即必须同为字节类型或是字类型。

    2.目的操作数dst不能为立即数或代码段寄存器CS,指针寄存器IP既不能作源操作数也不能作目的操作数。

    3.mov指令不能在两个内存单元之间传送数据,即目的操作数和源操作数不能同时为内存单元。

    4.可以将立即数直接送到内存单元里,但必须在内存单元前用word ptr或byte ptr指明指令进行的是字操作还是字节操作,并且当是直接寻址时必须使用段跨越前缀。
    mov [0000h], 1234h                    ;错误!类型不匹配,不知道ds:0000h是字单元还是字节单元
    mov [0000h], ax                          ;错误!immediate mode illegal
    mov ds:[0000h], ax                     ;正确
    mov ds:[0000h], 1234h               ;正确,隐式指定进行的是字操作
    mov ds:[0000h], 12h                   ;错误!12h改成0012h也错误
    mov word ptr ds:[0000h], 34h     ;正确,将立即数1234h送到字单元ds:0000h中,但必须显式指定段寄存器(因为是直接寻址)
    mov word ptr [bx], 34h                ;正确,将立即数1234h送到字单元ds:bx中,不必显式指定段寄存器
    mov word ptr [0000h], 1234h      ;错误!immediate mode illegal
    mov word ptr [0000h], ax            ;错误!immediate mode illegal
    5.不能将立即数传送给段寄存器,但可以将内存里的数据直接传送给段寄存器,段名也是立即数.
    data segment
        x dw 1234h
    data ends
     
    code segment
    assume ds:data, cs:code
    start:
        mov ds, 1234h        ;错误!不能将立即数传送给段寄存器
        mov ds, data           ;错误!段名data也是立即数
        mov ds, [1000h]      ;正确,将内存里的数据直接传送给段寄存器
        mov ds, x                ;正确,x会被编译器处理为一个地址,和上一条指令类似
    code ends
        end start
    6.mov指令不影响标志位。
    7.不能操作 CS,IP 这两个寄存器 (JMP代替 )
     
  • 相关阅读:
    C++ 打印 vector
    使用 winsock 实现简单的 Client 和 Server
    Windows 10 Clion 配置 Opencv 4.0.1
    解决编译的时候头文件找不到的问题
    linux内核打印内存函数print_hex_dump使用方法
    ubuntu180
    驱动编译相关
    Real-Time Rendering 4th Chapter 1 Introduction 简介 转载
    do_gettimeofday使用方法
    6、设备树实践操作
  • 原文地址:https://www.cnblogs.com/dint/p/3895173.html
Copyright © 2011-2022 走看看