汇编语言基础

什么是汇编语言

 

汇编语言(Assembly Language)是任何一种用于计算机编程的低级语言,亦称为符号语言。

 

先简单说一下出现汇编语言的背景,原因在于在最开始的和计算机打交道时候,都是使用的机器语言进行编程的,也就所说的2进制语言。机器语言很大的问题在于很难记忆,所以后来人们通过一种符合来表示有意义的操作,例如:

01010000 机器指令  对应“ PUSH AX ” 的汇编指令,就非常方便记忆了。汇编语言解决了机器指令编写程序难度大的问题,汇编语言与人类语言更接近,便于阅读和记忆。汇编语言在通过对照表转换成机器语言(二进制)。

 

通过上面的介绍后,总结如下

1、汇编语言可以看做机器语言的一种助记符

2、软硬件的分界

3、在不同的设备中,汇编语言对应着不同的机器语言指令集,通过汇编过程转换成机器指令。(但是很多指令集是和硬件绑定的。)

 

cpu的构成

在开始学习汇编之前,需要简单了解下cpu的基本构成和运行原理

CPU由运算器、控制器、寄存器 等器件组成。可以通过下图简单认识下CPU,同时示意了cpu和内存的交互。

  1. 运算器进行信息处理;
  2. 寄存器进行信息存储;存储单元之前只是寄存器,cpu很多已经支持多级的缓存。
  3. 控制器控制各种器件进行工作;

指令集架构(Instruction Set Architecture)

指令集,就是CPU中用来计算和控制计算机系统的一套指令的集合,而每一种新型的CPU在设计时就规定了一系列与其他硬件电路相配合的指令系统。而指令集的先进与否,也关系到CPU的性能发挥,它也是CPU性能体现的一个重要标志。

 

1、复杂指令集运算(Complex Instruction Set Computing,CISC)

x86架构微处理器如

1、Intel的Pentium/Celeron/Xeon与AMD的Athlon/Duron/Sempron;

2、以及其64位扩展系统的x86-64的架构的EM64T的Pentium/Xeon与AMD64的Athlon 64/Opteron都属于CISC系列。

主要针对的操作系统是微软的Windows。另外Linux,一些UNIX等都可以运行在x86(CISC)架构的微处理器。

 

2、精简指令集运算(Reduced Instruction Set Computing,RISC)

RISC这种指令集运算包括

1、HP的PA-RISC,

2、IBM的PowerPC,

3、Compaq(被并入HP)的Alpha,

4、MIPS公司的MIPS,S

5、UN公司的SPARC等。

只有UNIX,Linux,MacOS等操作系统运行在RISC处理器上。

 

3、其他指令集

3、显式并行指令集运算(Explicitly Parallel Instruction Computing,EPIC)

4、超长指令字指令集运算(VLIW)

 

CISC 和 RISC对比

对比内容CISCRISC
指令长度变长指令集 、向下兼容指令长度一致
指令比较丰富,有专用指令来完成特定的功能经常使用的指令,复杂指令通过组合来实现

存储器操作

机器的存储器操作指令多,操作直接对存储器操作有限制,使控制简单化

程序

汇编语言程序编程相对简单实现特殊功能时程序复杂,不易设计
寻址方式多种寻址方式支持方式少
性能功耗功能强、面积大、功耗大面积小、功耗低

 

x86 介绍

微软x86 体系结构的介绍

https://docs.microsoft.com/zh-cn/windows-hardware/drivers/debugger/x86-architecture

x86-32 8个通用寄存器,64位扩展到16个寄存器

为什么x86长久不衰,生态环境向下兼容

 

寄存器分类

按照用途分类

 4个数据寄存器(EAX、EBX、ECX和EDX)

 2个变址和指针寄存器(ESI和EDI), 2个指针寄存器(ESP和EBP)

 6个段寄存器(CS、DS、ES、SS、FS和GS)

 1个指令指针寄存器(EIP) ,1个标志寄存器(EFlags)

 

段寄存器

在所有的寄存器中比较难理解的是段寄存器,我们先来看为什么需要段寄存器?

给不同的程序使用不同内存避免冲突,所有对内存进行分段管理,但是为了向下键入段寄存器只有16位大小。那如何找到对应的内存地址呢?

 

未完待续

 

 

 

 

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值