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
待续。
intel汇编笔记的更多相关文章
- AT&T 和 Intel 汇编语法的主要区别
转自AT&T 和 Intel 汇编语法的主要区别 作为一个爱折腾的大好青年,补番之余还要补一些 Linux 下的基础,比如 GDB 的正确使用方法.但无论是看 gdb 还是 gcc -S 里的 ...
- 《Intel汇编第5版》 Intel CPU小端序
一.MASM汇编器中的数据类型 二.Intel汇编中的立即数类型 三.定义有符号和无符号整数 四.小端序 内存中数据按照字节存储,一个4个字节无符号整数,其高位存储在低地址上,低位存储在高地址上. 比 ...
- Linux下AT&T汇编语法格式与Intel汇编语法格式异同
由于绝大多数的国内程序员以前只接触过Intel格式的汇编语言,很少或几乎没有接触过AT&T汇编语言,虽然这些汇编代码都是Intel风格的.但在Unix和Linux系统中,更多采用的还是AT&a ...
- linux 下gcc生成intel汇编
留作备忘: gcc -S -masm=intel xxxx.c 生成elf可执行文件: gcc -o xxx xxxx.s 反汇编 objdump xxx 补充: 在使用gcc 对C语言程序进行编译时 ...
- Intel汇编指令格式解析
环境: win7_x64旗舰版.VS2015企业版 一.Intel保护模式.实地址模式和虚拟8086模式指令格式(x86) 图在Intel手册2.1章节 1.1)Instruction Prefixe ...
- arm汇编笔记
ARM汇编(非虫笔记) 1.ARM汇编的目的: 分析elf文件的需要. 2.原生程序生成过程. (1)预处理,编译器处理c代码中的预处理指令. gcc -E hello.c -o hello.i (2 ...
- Intel汇编程序设计-整数算术指令(中)
7.3 移位和循环移位的应用 7.3.1 多双字移位 要对扩展精度整数(长整数)进行移位操作,可把它划分为字节数组.字数组或双字数组,然后再对该数组进行移位操作.在内存中存储数字时通常采用的方式是 ...
- 16位汇编 多文件 intel汇编 编译器masm5.0 调用子程序库即静态库的自定义函数 WINDOWS
;以下是16位汇编 创建静态库,并调用静态库中的函数 ;多文件汇编格式 ;编译方法(此处用的是masm 5.0,如果是其他的编译器,有可能不能编译) ;第一种,编译方法 ;1.masm main.as ...
- 《Intel汇编第5版》 条件汇编伪指令
一.条件汇编伪指令和宏使用可以使汇编程序更加灵活 二.通过伪指令来检查函数的参数是否为空,如果为空则输出警告信息 INCLUDE Irvine32.inc includelib Irvine32.li ...
随机推荐
- J2EE学习篇之--JQuery技术具体解释
前面我们解说了的J2EE的技术都是服务端的技术,以下我们来看一下前端的一些开发技术,这一篇我们来看一下jQuery技术 简单介绍: jQuery由美国人John Resig创建,至今已吸引了来自世界各 ...
- Android四大组件之Activity--管理方式
1. 概览 Activity的管理有静态和动态两层涵义: 静态是指Activity的代码组织结构,即Application中声明的Activity的集合,这些Activity被组织在一个APK中,有特 ...
- html中DIV+CSS与TABLE布局方式的区别及HTML5新加入的结构标签(转)
DIV与TABLE布局的区别 div 和 table 的加载方式不同,div 的加载方式是即读即加载,遇到 <div> 没有遇到 </div> 的时候一样加载 div 中的内容 ...
- request.getSession().getServletContext().getRealPath()的一些坑
今天是学校机房的服务器上对之前的一个网站升级时发现了一个bug,我自己的机器上用的tomcat8,机房上是tomcat7,结果一运行就开始报找不到文件,最后发现是文件分隔符的问题 原来在代码中涉及到路 ...
- 左右Cwnd::Create()功能出现afxwin1.inl line:21错误的解决方案
我最近在调试dll时刻,有一种模糊的断言错误,它是由主程序创建MFC 扩张DLL控制出口(从控制继承CWnd分类)时刻,呼叫Create()下列说法错误的功能: watermark/2/text/aH ...
- Android Studio运行main方法
这样想做一些测试就很简单了 实现步骤如下: 1.当前项目右键->new->Module->Java Library 2.修改你创建javaLib的build.gradle文件 改为( ...
- MATLAB Toolbox Path Cache is out of date and is not being used的解决
作者:朱金灿 来源:http://blog.csdn.net/clever101 使用mcc编译MATLAB\R2009a\extern\examples\compiler目录下的hello.m,编译 ...
- Qt5信号与槽C++11风格连接简介
最近在论坛上看到了这个方面的问题,详见这里. 随后浅浅地学习了一下子,看到了Qt官方论坛上给出的说明,觉得C++11的functional连接方法还是比Qt4既有的宏连接方法有很大不同. 官方论坛的文 ...
- Android 混淆[学习笔记]
Android 混淆 Gradle的简介: http://www.flysnow.org/2015/03/30/manage-your-android-project-with-gradle.html ...
- 数据中台解析Hive SQL过程
一.数据中台解析SQL的目的: 数据中台需要对外提供数据特征查询的能力,因此中台查找并解析各个平台的sql,找出哪些表中的字段经常被使用,以便沉淀为特征,而我们要做的是找出sql中的数据表及其字段.以 ...