汇编基础-13

汇编基础-13

对之前学过的内容的补充(结合专业课)

11.14更新

关于NASM和MASM

NASM全称The Netwide Assembler,是一款基于80x86和x86-64平台的汇编语言编译程序,其设计初衷是为了实现编译器程序跨平台和模块化的特性。NASM支持大量的文件格式,包括Linux,*BSD,a.out,ELF,COFF,Mach−O,Microsoft 16−bit OBJ,Win32以及Win64,同时也支持简单的二进制文件生成。它的语法被设计的简单易懂,相较Intel的语法更为简单,支持目前已知的所有x86架构之上的扩展语法,同时也拥有对宏命令的良好支持。

摘自百度百科

宏汇编程序(MASM)是具有宏加工功能的汇编程序。可以用它定义含参数的程序段,在使用的位置上调用它们,汇编时将进行宏(指令)展开,把宏定义所预先定义的指令目标代码插在该位置上。

前面的学习都用到的是MASM,而学校实验用的是NASM,什么DOSBOX,DEBUG,用着非常的不舒服

但是这不影响对于一些共性的东西的学习,写这篇博客的存在意义就是补充这些我遗漏的东西

Read more
汇编实验

汇编实验

最后一批有意思的练习题

写在前面

  • 终于完成了Intel x86汇编的习题(我认为应该写的)+基础知识,基本上花了3周左右(除去假期中间的咕咕咕极长时间),可喜可贺,也该开学了。
  • 不coding死路一条
  • 不要停下来啊(指学习)
  • 下一阶段的目标就是数学+算法+Python网络编程
  • 不学数学读研死路一条

什么,你说假期里的前端学习?咕咕咕
汇编代码咋高亮啊,好像不支持……

Read more
汇编基础

汇编基础

字符串和数组

如果可以有效的处理字符串和数组,就能掌握代码优化中的最常见情况。研究表明,绝大多数程序用90%的运行时间执行其10%的代码。毫无疑问,这10%通常发生在循环中,而循环正是处理字符串和数组所要求的结构。本节以编写高效代码为目的,阐释字符串和数组的处理技术

Read more
汇编基础

汇编基础

64位编程

之前介绍的一直都是32位的程序,64位和32位有很多相似的地方,但仍有许多的不同:
比如64位MASM 11.0不支持INVOKE伪指令,而且不需要在程序前写出.model,.stack,.386的

寄存器

64位模式下,操作数的默认大小是32位,并且有8个通用的寄存器。但是给每条指令加上REX(寄存器扩展)前缀后,操作数也可达64位。通用寄存器的数量也增加到了16个:32位模式下的寄存器再加上8个有标号的寄存器,R8~R15

  • 64位模式下,单条指令不能同时访问寄存器的高字节,如AH,BH,CH以及新寄存器的低字节DIL
  • 64模式下,32位的EFLAGS被64位的RFLAGS取代。这两个寄存器共享低32位,而RFLAGS的高32位是不使用的
  • 32位和64位拥有相同的状态标志位
Read more
汇编实验