汇编总结

<只是个人的一些小总结,小看法,欢迎各位前来谈论,一起学习,一起进步>

想想学习汇编时期也是蛮长的,从2015年寒假开始一直到开学,前后也有一个多月吧,但期间也总是断断续续的。

一开始学习的时候,因为我不想看电子版,所以就从图书馆里面借了本书来学习,可是那本书看完了以后我还是感觉什么都学不到,就会几个mov和add,跟我一开始学汇编的目的不合。

我学习汇编是想用汇编来通过软件的视觉来了解更多计算机底层的世界,同时也为了我可以更好的进行一些高级语言的深入学习。记得我有个老师说过“越是底层的东西,学习起来越抽象越难,但是对于我们日后的发展和技能与知识的拓展帮助也越大”。

所以为了更好的学习和达到我的目的,我便去网上找了一本《汇编语言》(王爽),个人感觉这个书还是相当不错的,起码满足我的基本需要,书里面的知识介绍采用了一种“即学即用”的策略,比如在讲解8086的寄存器的功能时,它不会一次性给你罗列出全部寄存器的功能来;相反的,书里说得很明白,需要用的时候才会介绍,这个让我们学习起来,不会太吃力。

另外一方面,书里对于计算机底层的一些讲解,都尽量的避开了硬件层面,而是直接用软件的角度来说明,特别是用汇编的知识来解释,可以说是把学到的知识活学活用吧;最后一点想说的是,书里面相当注重实验和动手能力,我认为这是书里的亮点,对于这些实用性强的技能和知识,我们应该从实验和动手中积累经验同时产生感性的认识。

好了说了这么多,那么我怎么对我学习了一个多月的汇编进行下总结呢?

汇编是这么一种语言,介于高级语言和机器语言之间,通过汇编我们可以结合少量的机器语言来让我们尽量少的硬件知识下更好地了解高级语言背后的原理与设计、计算机实现的原理。

一开始

C语言-------à程序(知其然不知所以然,为何一个函数一定要有一个main呢)

汇编--------à程序(联想高级语言,原理程序的运行是要有个入口地址的,有汇编里面用一个CS:IP来指定,在C语言编译的时候,源程序会通过C语言开发者一个预先设定,可能是一个其他的文件,将源文件按一定的方式进行编译,设置好CS:IP,做为源程序main的地址是首先进入CS:IP的,可能是通过其他的开发者的设定的函数的调用或是其他的方式)。

时间: 2024-11-10 10:29:07

汇编总结的相关文章

GCC在C语言中内嵌汇编 asm __volatile__ 【转】

转自:http://blog.csdn.net/pbymw8iwm/article/details/8227839 在内嵌汇编中,可以将C语言表达式指定为汇编指令的操作数,而且不用去管如何将C语言表达式的值读入哪个寄存器,以及如何将计算结果写回C 变量,你只要告诉程序中C语言表达式与汇编指令操作数之间的对应关系即可, GCC会自动插入代码完成必要的操作. 1.简单的内嵌汇编 例: __asm__ __volatile__("hlt"); "__asm__"表示后面的

Linux C中内联汇编的语法格式及使用方法(Inline Assembly in Linux C)

在阅读Linux内核源码或对代码做性能优化时,经常会有在C语言中嵌入一段汇编代码的需求,这种嵌入汇编在CS术语上叫做inline assembly.本文的笔记试图说明Inline Assembly的基本语法规则和用法(建议英文阅读能力较强的同学直接阅读本文参考资料中推荐的技术文章 ^_^). 注意:由于gcc采用AT&T风格的汇编语法(与Intel Syntax相对应,二者的区别参见这里),因此,本文涉及到的汇编代码均以AT&T Syntax为准. 1. 基本语法规则 内联汇编(或称嵌入汇

汇编第五日

mov ax, offset 标号:取得标号相对于伪代码后第一条指令地址0的相对偏移量即标号地址 可以发现汇编指令中的idata会直接反映在机器码中 jmp指令可以修改IP或CS和IP的值,具体格式如下: ①jmp short 标号(段内转移) (IP) = (IP)+ 8位位移 8位位移含义是:标号地址减去jmp指令的下一条指令地址即为相对位移地址(可正可负,但是范围必须在8位数据能表示之内)并不是直接目的地址 8位位移范围为-128 - 127 例如: JMP 0008即跳到0BBD:000

在vs 2015环境下,c语言和汇编混编操作简析(更新中......)

在VS 2015环境下如何混编. 在新建工程里也会发现了很多问题, 应用程序类型分为:windows应用程序,控制台应用程序,DLL,静态库 静态库: 静态库是指在我们的应用中,有一些公共代码是需要反复使用,就把这些代码编译为"库"文件:在链接步骤中,连接器将从库文件取得所需的代码,复制到生成的可执行文件中的这种库. 程序编译一般需经预处理.编译.汇编和链接几个步骤.静态库特点是可执行文件中包含了库代码的一份完整拷贝:缺点就是被多次使用就会有多份冗余拷贝. 静态库和动态库是两种共享程序

用汇编来解释“计算机是怎么工作的”

本文章为<Linux内核分析>实验报告 梁永锐 原创作品转载请注明出处 http://www.cnblogs.com/liangyongrui/p/6392035.html <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 " ----- 以下为要分析的c代码 int g(int x) { return x + 36; } int f(int x) { return g(x) * 4; }

Java千百问_02基本使用(015)_java如何通过汇编方式运行

点击进入_更多_Java千百问-基本使用 1.java如何通过汇编方式运行 java本身不能通过汇编方式运行.但是,我们可以通过某些插件,在运行中将java代码解释为汇编指令,让我们能够通过分析执行的汇编指令来查找一些问题,也可以帮助我们分析和理解JVM是如何解释和编译的(当然java本身的编译和运行和汇编无关). PrintAssembly是JVM的一个运行参数,它允许我们获取在控制台打印java代码翻译成的汇编指令.使用PrintAssembly需要一些插件的支持,这些并不是JVM直接提供的

使用库函数API和C代码中嵌入汇编代码两种方式使用同一个系统调用

使用库函数API和C代码中嵌入汇编代码两种方式使用同一个系统调用 选择调用的进程为 24 i386 getuid sys_getuid1647 i386 getgid sys_getgid16 使用库函数API方式 使用C代码中嵌入汇编代码方式

汇编速查表

指令 功能 AAA 调整加 AAD 调整除 AAM 调整乘 AAS 调整减 ADC 进位加 ADD 加 AND 与 ARPL 调整优先级 BOUND 检查数组 BSF 位右扫描 BSR 位左扫描 BSWAP 交换字节 BT 位测试 BTC 位测试求反 BTR 位测试清零 BTS 位测试置一 CALL 过程调用 CBW 转换字节 CDQ 转换双字 CLC 进位清零 CLD 方向清零 CLI 中断清零 CLTS 任务清除 CMC 进位求反 CMOVA 高于传送 CMOVB 低于传送 CMOVE 相等

RT-11SJ 环境下运行pdp11汇编MACRO-11

一.在simh下运行RT-11SJ 1:安装simh:win下直接安装,linux下make后在BIN目录找到pdp11并cp到搜索路径目录下 2:到http://simh.trailing-edge.com/software.html 下载RT-11 V4 for the PDP-11 的镜像磁盘文件rt11swre.tar.Z并解压,在Disks目录下可得到镜像文件rtv4_rk.dsk 3:建立运行目录rt11swre,把rtv4_rk.dsk移到该目录 4:建立simh启动文件boot.

汇编写文件

下面的代码直接gcc 编译.用法 ./a.out file_name msg 命令行第一个参数是文件名,第二个参数是文件的内容 下面的代码说明了在汇编里怎么使用命令行参数(主函数用main而不是以前的_start,主函数写成main用64方式可以拿到内容). 调用系统调用的方式改为64位的方式,貌类系统函数里面有指针类型的变量,32位调用方式就不行(64用syscall,32位用int 0x80 觖发系统调用). 32位系统调用编号表/usr/include/asm/unistd_32.h 64