初学汇编

简介: 初学汇编

什么是汇编器和链接器?

  • 汇编器(assembler):用于将汇编语言源程序转换为机器语言
  • 链接器(linker):一种工具程序,把编译器生成的单个文件组合成一个可执行文件
  • 寄存器(register):是 CPU 中被命名的存储位置,用于保存操作的中间结果

MASM能创建哪些类型的程序?

  • 32 位保护模式(32-Bit Protected Mode):运行于所有的 32 位和 64 位版本的 Microsoft Windows 系统。他们通常比实模式程序更容易编写和理解。
  • 64 位模式(64-Bit Mode):运行于所有的 64 位版本的 Microsoft Wimdows 系统。
  • 16 位实地址模式(16-Bit Real-Address Mode):运行于 32 版本的 Windows 和嵌入式系统,64 位 Windows 不支持这类程序。

汇编语言和机器语言有什么关系?

  • 机器语言(machine language):是一种数字语言,专门设计成能被计算机处理器(CPU)理解。所有 x86 处理器都理解共同的机器语言。
  • 汇编语言(assembly language):包含用短助记符如 ADD、MOV、SUB 和 CALL 书写的语句。
  • 汇编语言于机器语言是一对一(one-to-one)的关系:每一条汇编语言指令对应一条机器语言指令。

C++ 和 Java 与汇编语言有什么关系?

  • 高级语言(如 Python、C++、Java)与汇编语言和机器语言的关系是一对多(one-to-many)。
int y;
int x = (y + 4) * 3;
// 与之对应的汇编
mov eax,y  ; y 送入 EAX 寄存器
add eax,4  ; EAX 寄存器内容加 4
mov ebx,3  ; 3 送入 EBX 寄存器
imul ebx   ; EAX 与 EBX 相乘
mov X,eax  ; EAX 的值送入 X

汇编语言可移植吗?

  • 可移植(portable):一种语言,如果他的源程序能够在各种各样的计算机系统中进行编译和运行,那么这种语言被称为是可移植的。
  • 汇编语言是不可移植的。因为它是为特定处理器系列设计的。汇编语言会直接与计算机体系结构相匹配。或者在执行时用一种被称为微代码解释器(microcode interpreter)的处理器内置程序来进行转换。
  • 常见处理器:Motorola68x00、x86、SUN Sparc、Vax 和 IBM-370

为什么要学习汇编语言?

  • 占用内存少,是编写嵌入式程序的理想工具

    • 嵌入式程序:指一些存放在专用设备中小容量存储器内的短程序。这些设备有:电话、汽车燃油和点火系统、空调控制系统、安全系统、数据采集系统、显卡、声卡、硬盘驱动器、调制解释器和打印机等。
  • 处理仿真和硬件监控的实时应用程序要求精确定时和响应。

    • 高级语言不会让程序员对编译器生成的机器代码进行精确控制。汇编语言则允许程序员精确指定程序的可执行代码。
  • 电脑游戏要求软件在减少代码大小和加快执行速度方面进行高度优化。

    • 汇编语言允许直接访问计算机硬件,为了提高速度可以对代码进行手动优化。
  • 汇编语言有助于形成对计算机硬件、操作系统和应用程序之间交互的全面理解。
  • 一些高级语言对其数据表示进行了抽象,这使得他们在执行底层任务时显得有些不方便,如位控制。在这种情况下,程序员常常会调用使用汇编语言编写的子程序来完成他们的任务。
  • 硬件制造商为其销售的设备创建设备驱动程序。

    • 设备驱动程序(device driver):是一种程序,它把通用操作系统指令转换位对硬件细节的具体引用。

汇编语言有规则吗?

  • 大多数汇编语言规则都是以目标处理器及其机器语言的物理局限性为基础的。如:CPU 要求两个指令操作数的大小相同。汇编语言的规则较少。
目录
相关文章
|
SQL 存储 分布式计算
从0到1介绍一下开源大数据比对平台dataCompare
从0到1介绍一下开源大数据比对平台dataCompare
1018 0
|
消息中间件 网络协议 物联网
如何入门做物联网系统压测?
【4月更文挑战第18天】物联网系统在架构、网络模式、通信协议等方面与传统的互联网系统有所区别。因此,传统的性能测试方法不能直接套用到物联网系统中。
849 13
如何入门做物联网系统压测?
|
网络协议 网络虚拟化
eNSP华为模拟器使用——(11)eNSP模拟无线AC和AP
eNSP模拟无线AC和AP 1、拓扑 2、需求(实现AC和AP二层关联) 3、配置(dhcp enable; interface Vlanif 1; ip address 192.
7642 0
|
人工智能 自动驾驶 云栖大会
何小鹏驾驶“全球首款AI汽车”亮相云栖大会 深化与阿里云AI算力合作
小鹏汽车加速端到端自动驾驶落地 深化与阿里云AI算力合作
769 13
|
存储 分布式计算 NoSQL
大数据-144 Apache Kudu 基本概述 数据模型 使用场景
大数据-144 Apache Kudu 基本概述 数据模型 使用场景
157 0
|
监控 测试技术 持续交付
如何在 Databricks 中实现 CI CD 管道?
【8月更文挑战第13天】
207 2
|
Java 开发工具 Maven
支付系统16------支付宝支付----创建封装了签名和验签功能的客户端对象
支付系统16------支付宝支付----创建封装了签名和验签功能的客户端对象
|
JSON JavaScript Java
性能工具之Jmeter压测Thrift RPC服务
【5月更文挑战第21天】性能工具之Jmeter压测Thrift RPC服务
360 1
|
前端开发 物联网 异构计算
实时云渲染串流技术详解
云串流即使应用于云旅游、考古、数字孪生、云展厅等领域,通过将3D应用运行于云端,降低用户端配置需求。技术流程包括用户股指令、服务器执行、编码传输及前端播放,实现低延迟的实时云渲染。在弱网环境下,需只能调节画质确保流畅性。3D应用采用云推理,服务器需满足3D应用的硬件要求,尤其是GPU和GPU的性能,而前端主要负责解码播放,一般1080P视频能力即可。自行研发成本高,建议选择成熟商家点量云流。
675 0
实时云渲染串流技术详解
springboot全局自定义异常
springboot全局自定义异常