汇编语言笔记(一)——汇编语言基础

一、开发环境

我使用visual studio 2022 preview,其他版本的设置大同小异。

第一步:

打开visual studio,点击“创建新项目”:

第二步:

visual studio并没有专门的汇编项目,所以需要挂羊头卖狗肉,选择C++空项目

第三步:

输入项目名称,点击创建

第四步:

鼠标右键单击项目名称——>生成依赖项——>生成自定义,点击masm,这样才能把masm加入到项目的生成工具中

第五步:

鼠标右键单击源文件——>添加——>新建像,选择C++文件,但文件扩展名要改为.asm,编译器才能自动的使用masm编译

第六步:

因为64位汇编比较简单,初学时把配置改为Release、X64,了解深入后再探索32位汇编

大功告成!

如果用visual studio 2019,可以安装AsmDude插件,辅助编写汇编代码。但它目前不支持visual studio 2022

二、汇编语言的基础知识

1、哲学思考

(1)汇编语言的特点

与硬件相关,每一种处理器都有相应的汇编语言;

与机器码相关,指令通常与机器码一一对应;

家用电脑使用intel/amd处理器,对应x86-x64汇编语言。

(2)汇编语言的作用

深入理解硬件工作原理;

充分利用计算机特性(如SIMD,即单指令多数据);

开发操作系统内核、驱动程序等;

优化程序。

(3)汇编语言无用论

汇编语言代码难以维护;

编译器优化足够先进,无需汇编语言(编译器可实现循环展开、内联展开等,减少跳转,而汇编语言开发难以实现);

高级语言也可以实现同样的功能,汇编语言与高级语言相比并无优势。

(4)汇编语言有害论

汇编语言给黑客、病毒、作弊外挂大开方便之门(反驳一:工具价值中立;反驳二:软件破解为普通人节省大量金钱)。

(5)汇编语言也是高级语言论

在许多CPU中,汇编语言指令并非直接操作硬件,而需通过硬件制造商提供固件内的程序编译成“微指令”再执行,这与高级语言没有说很么不同。

2、数学基础

(1)二进制、十进制、十六进制转换和运算(可借助windows计算器)。

(2)浮点数的存储:

real4:符号1位+指数8位+小数23位(整数部分1省略);

real8:符号1位+指数11位+小数52位(整数部分1省略);

real10:符号1位+指数15位+小数64位(整数部分1省略)。

3、寄存器

汇编语言使用的寄存器实际上并不是物理寄存器,而是在通过一定的操作映射CPU内部特定的物理寄存器。主要包括:

(1)通用寄存器16个,可以通过通常的指令读写:

全部64位 0-31位 0-15位 8-15位 0-7位
rax eax ax ah al
rbx ebx bx bh bl
rcx ecx cx ch cl
rdx edx dx dh dl
rsi esi si sil
rdi edi di dil
rbp ebp bp bpl
rsp esp<
  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值