翔腾苍穹

" 站在阳光下,享受我单薄的青春~ " ---- Jakes
标签  ”Assembly“  下的文章
Windows X64汇编入门(2)
翔腾苍穹

Windows X64汇编入门(2)

64位技术现在还不成熟,没有好调试器,但是我们搞技术的总是对新东西充满了好奇和热情。这个理由就足够我们现在开始学习64位汇编了!OK,Let's go on。 1.  再说Calling convention 关于API的调用方式,在入门(1)中说了一些,不过感觉有必要再讲两点。一是在调用API时椎栈的框架,也就是Stack Frame,二是利用反汇编64位C/C++程序来研究cal……
Windows X64汇编入门(1)
翔腾苍穹

Windows X64汇编入门(1)

最近断断续续接触了些64位汇编的知识,这里小结一下,一是阶段学习的回顾,二是希望对64位汇编新手有所帮助。我也是刚接触这方面知识,文中肯定有错误之处,大家多指正。 文章的标题包含了本文的四方面主要内容: (1)Windows:本文是在windows环境下的汇编程序设计,调试环境为Windows Vista 64位版,调用的均为windows API。 (2)X64:本……
汇编: 控制台下的几种输出方式
翔腾苍穹

汇编: 控制台下的几种输出方式

在熟悉指令、伪指令和汇编语法的过程中, 首先需要的是输出显示的手段. 我刚开始学习时使用的是控制台输出, 最后发现既然是 Win32 汇编还是用 Debug 输出更好. 下面是之前尝试出的控制台输出的几种办法: 1、使用 MASM 提供的 StdOut 函数; 2、使用系统 API: 3、使用微软 C 标准库 msvcrt.dll 中的 printf 函数. 使用 MASM 的 StdOut 函数: ……
汇编jmp指令
翔腾苍穹

汇编jmp指令

解释: ■       jmp为无条件转移,可以只修改IP,也可以同时修改CS和IP; ■       jmp指令要给出两种信息: ■       转移的目的地址 ■       转移的距离(段间转移、段内短转移,段内近转移) 格式: 一.Jump short 标号 这种格式的 jmp 指令实现的是段内短转移,它对IP的修改范围为 -128~127,也就是说,它向前转移时可以最多越过128个字节……
rep stos 指令(Intel汇编)
翔腾苍穹

rep stos 指令(Intel汇编)

今天读代码时,忽然跳出如下一条指令==>> 汇编代码: rep stos dword ptr es:[edi] 语句的作用, 在stackoverflow的一篇帖子中找到了答案. ; This puts the address of the stack frame bottom (lowest address) into edi... lea     edi,[ebp-0C0h] ; ...and then fill the stack frame with the uninitialised data value (ecx = number……
标志寄存器
翔腾苍穹

标志寄存器

16位标志寄存器——共用了9个标志位,它们主要用来反映CPU的状态和运算结果的特征。标志位的分布如下表所示。 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 OF DF IF TF SF ZF AF PF CF 32位标志寄存器——32位CPU也把标志寄存器扩展到32位,记为EFLAGS。它新增加了四个控制标志位,它们是:IOPL、NT、RF和VM,这些标志位在实方式下不起……
Win32与Linux汇编语法区别
翔腾苍穹

Win32与Linux汇编语法区别

一、简介 作为最基本的编程语言之一,汇编语言虽然应用的范围不算很广,但重要性却勿庸置疑,因为它能够完成许多其它语言所无法完成的功能。就拿 Linux 内核来讲,虽然绝大部分代码是用 C 语言编写的,但仍然不可避免地在某些关键地方使用了汇编代码,其中主要是在 Linux 的启动部分。由于这部分代码与硬件的关系非常密切,即使是 C 语言也会……