x86---32汇编

Posted xuelanga000

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了x86---32汇编相关的知识,希望对你有一定的参考价值。


  一直都想要系统的学习一下计算机知识,汇编知识对于计算机的学习会有很大的帮助,现在笔者准备学习一下汇编打算使用碎片的化的时间,记录自己写的一些程序和一些心得,方便自己以后学习和使用,所以笔者很难每日一更。我使用的软件仍然是vs2017,参考书用的是《现代x86汇编语言》。大家有兴趣可以去下载看一下。
 我简单根据书上的代码写了一个求和:

技术图片
 1 #include "stdafx.h"
 2 
 3 extern "C" int CalcSum_(int a, int b, int c);
 4 
 5 int _tmain(int argc, _TCHAR* argv[])
 6 {
 7     int a = 17, b = 11, c = 14;
 8     int sum = CalcSum_(a, b, c);
 9 
10     printf("  a:   %d
", a);
11     printf("  b:   %d
", b);
12     printf("  c:   %d
", c);
13     printf("  sum: %d
", sum);
14     return 0;
15 }
Calsum.cpp
技术图片
 1     .model flat,c
 2     .code
 3 
 4 ; extern "C" int CalcSum_(int a, int b, int c)
 5 ;
 6 ; Description:  This function demonstrates passing arguments between
 7 ;               a C++ function and an assembly language function.
 8 ;
 9 ; Returns:      a + b + c
10 
11 CalcSum_ proc
12 
13 ; Initialize a stack frame pointer
14         push ebp
15         mov ebp,esp
16 
17 ; Load the argument values
18         mov eax,[ebp+8]                     ; eax = a
19         mov ecx,[ebp+12]                    ; ecx = b
20         mov edx,[ebp+16]                    ; edx = c
21 
22 ; Calculate the sum
23         add eax,ecx                         ; eax = a + b
24         add eax,edx                         ; eax = a + b + c
25 
26 ; Restore the callers stack frame pointer
27         pop ebp
28         ret
29 
30 CalcSum_ endp
31         end
Calsum.asm

 

以上是关于x86---32汇编的主要内容,如果未能解决你的问题,请参考以下文章

x86---32汇编---内存寻址模式

64位的汇编怎么搞

汇编语言-X86处理器架构-64位x86处理器

x86 32位操作码,x86-x64不同或完全删除

《Linux内核 核心知识全解析(完)》

gcc x86-32堆栈对齐并调用printf