• intel汇编笔记


    另一篇汇编学习笔记AT&T Assembly on Linux  (linux下)

    mov ax,bx     bx到ax


    读数据过程:cpu通过地址线发送地址a,控制线向存储器发送读命令,存储器对地址a进行读,通过数据线返回。

    写数据过程:与读同理。

    上述是cpu执行数据读写命令的过程,我们只需让cpu执行mov ax,[3],cpu便会自动执行上述过程。


     对于汇编程序员来说,CPU中主要部件是寄存器。寄存器是CPU中程序员可以用指令读写的部件。程序员通过改写各种寄存器中的值来实现对CPU的控制。 


     绝大部分机器指令都是进行数据处理的指令,指令大致分为3类,读取、写入、运算。

    在机器指令这一层,并不关心数据的值是多少,只关心在指令执行前数据位置。

    指令执行前,数据可能的位置有:CPU内部、内存、端口。

    三种表达方式:立即数、寄存器、段地址+偏移地址。


     8086CPU寻址,为了以16位结构,达到20位寻址能力,采用 物理地址 = 段地址X16+偏移地址方式。



     



     程序获得所需空间方法有两种,一是加载程序的时候为程序分配,再就是程序执行时向系统申请。


     and指令,逻辑与指令:mov al,01100011B   and al,01011001B

     or指令,逻辑或指令


     ASCII


     [bx + idata]指明内存单元方式与C语言对比:

    多种寻址方式:


     只要在[..]中使用寄存器bp,段地址就在ss中。


    寻址方式: 


     操作符X ptr可以指明要操作内存长度。word ptr或byte ptr。

    例如 mov word ptr ds:[0], 1


     div指令

    mul乘法指令


     dup操作符


     转移指令分类:


     操作符offset:


     jcxz指令:

    if((cx) == 0) { jmp short 标号}


     call和ret

    由此可见call和ret是相对应的,一个是将目前ip压栈并跳转,一个是出栈并跳转。


    用于比较的条件转移指令:


     对端口的读写不能用mov,push,pop等内存读写指令。端口的读写指令只有两条:in和out,分别用于从端口读数据和往端口写数据。


     dword ptr []

    dword   双字 就是四个字节
    ptr     pointer缩写 即指针
    []里的数据是一个地址值,这个地址指向一个双字型数据
    比如mov eax, dword ptr [12345678]  把内存地址12345678中的双字型(32位)数据赋给eax

    
    

    待续。

  • 相关阅读:
    触发器(2)
    触发器
    GZipStream
    MemoryStream类读写内存
    ashx一般处理程序
    Redmin 一键安装
    Unity3D和网页数据交互的基本原理
    apk MIME类型
    [leetcode]Valid Sudoku
    [leetcode]Search in Rotated Sorted Array
  • 原文地址:https://www.cnblogs.com/rixiang/p/7047912.html
Copyright © 2020-2023  润新知