计算机中汇编语言是一种,汇编语言与计算机系统组成答案
本教程主要介绍与运行微软Windows 32位和64位系统的Intel和AMD处理器兼容的微处理器编程。
本教程使用最新版本的微软宏汇编称为MASM。Microsoft Visual Studio的大多数版本(专业版、旗舰版、精简版……)都包含质量。
有关Visual Studio中MASM支持的最新信息,请参见asmirvine.com。此外,该网站包含许多关于如何设置和开始使用该软件的有用信息。
在运行Microsoft Windows的x86系统上,另一个众所周知的汇编程序是Turbo汇编程序(tasm)、nasm (net wide Assembler)和masm32)变体。GAS(GNU汇编程序)和NASM是两种基于Linux的汇编程序。在这些汇编程序中,NASM的语法与MASM的最相似。
汇编语言是最古老的编程语言,是所有语言中最接近本机语言的。因为可以直接访问计算机硬件,所以会提示用户了解计算机架构和操作系统。
如果你的搭档正在学习的大学课程的名称与以下任何一个相似,你将在本教程中获得更多的专业知识:
微机汇编语言汇编语言编程指南计算机体系结构指南计算机系统基础嵌入式系统编程通过本教程,你可以学到足够的汇编语言来测试应用最广泛的微处理器系列知识。我不会学习用模拟汇编程序制作“玩具”电脑。MASM是业内专家使用的工业汇编程序。从程序员的角度来看,英特尔处理器家族的架构。
要让一个伙伴程序成为C或C开发人员,你必须在理解内存、地址和指令如何工作的基础上。在高级语言级别,许多编程错误不容易识别。因此,程序员往往会发现,为了找出程序无法运行的原因,他们需要“深入”到程序中去。
学习可能会问的问题需要什么样的背景知识?
在学习本教程之前,请至少使用一种结构化高级语言(如Java、C、Python、C)进行编程。要解决编程问题,必须知道如何使用IF语句、数组和函数。
什么是汇编器和连接器?
汇编程序是将汇编语言源程序转换成机器语言的工具程序。链接器也是一个工具程序,它将汇编程序生成的文件聚合成一个可执行程序。还有一个相关的工具叫做调试器,它允许程序员单步调试程序,并在程序运行时检查寄存器和内存的状态。
需要哪些硬件和软件?
最新版本的Microsoft Visual Studio安装在运行32位或64位Microsoft Windows系统的计算机上。
MASM能写什么类型的程序?
32位保护模式(32位保护模式):32位保护模式程序可以在所有32位和64位版本的Microsoft Windows系统上运行。它们通常比实模式程序更容易描述和理解。从现在开始,简称为32位模式。
64位模式(64位模式):64位程序可以在所有64位版本的Microsoft Windows系统上运行。
16位实地址模式(16位读地址模式):16位程序运行在32位版本的Windows和嵌入式系统上。64位Windows不支持这种程序。
汇编语言和机器语言是什么关系?
机器语言是为计算机处理器(CPU)理解而设计的数字语言。所有x86处理器都理解通用机器语言;
汇编语言包含用短助记符编写的语句,如ADD、MOV、SUB和CALL。汇编语言和机器语言是一对一的关系。每条汇编语言指令对应一条机器语言指令。
C和Java与汇编语言有什么关系?
Python、C、Java等高级语言与汇编语言、机器语言是一对多的关系。例如,C语言的一条语句将被扩展为多条汇编指令或机器指令。
因为大部分人看不懂原机器码,所以这里讨论最接近它的汇编语言。例如,下面的C代码执行两个算术运算,并将结果赋给一个变量:假设x和y是整数:
int Y;intx=(y4)* 3;等效的汇编语言程序如下所示。因为每个汇编语句只支持一条机器指令,所以这种转换需要多条语句。
mov eax,y;y被送到EAX寄存器add eax,4;在EAX寄存器的内容中增加4 mov ebx,3;发送到EBX注册imulebxMov x,EAX乘以eax和eaxEA值被发送到X寄存器,这是CPU中一个命名的存储位置,用于存储操作的中间结果。这个例子的重点不是解释C语言和汇编语言哪个更好,而是展示出来。
展示他们的关系。
汇编语言可移植吗?
如果一种语言的源程序可以在各种计算机系统中编译和运行,那么这种语言就可以说是可移植的。
例如,C程序可以在几乎任何计算机上编译和运行,除非它需要引用操作系统的库函数。Java的一大特点是其编译的程序可以在几乎所有的计算机系统中运行。
汇编语言是不可移植的,因为它是为特定的处理器家族设计的。目前,有许多不同的汇编语言被广泛使用,每种语言都基于一个处理器家族。
对于一些知名的处理器系列,如摩托罗拉6800、x86、SUN Sparc、Vax和IBM-370,汇编语言指令会直接匹配计算机架构,或者在执行时由一个名为微码解释器的内置程序进行转换。
为什么要学汇编语言?
如果你对学习汇编语言还有疑问,可以考虑以下观点:
如果你是学计算机工程的,很可能会被要求写嵌入式程序。嵌入式程序是指存储在专用设备的小容量存储器中的一些简短程序,如电话、汽车燃油和点火系统、空调控制系统、安全系统、数据采集仪器、视频卡、声卡、硬盘驱动器、调制解调器和打印机等。由于汇编语言占用内存少,它是编写嵌入式程序的理想工具。仿真和硬件监控的实时应用需要精确的定时和响应。高级语言不能让程序员精确控制编译器生成的机器代码。汇编语言允许程序员精确地指定程序的可执行代码。计算机游戏要求软件在减少代码大小和加快执行速度方面进行高度优化。游戏程序员是编写代码的专家,可以充分利用目标系统的硬件功能。他们往往选择汇编语言作为工具,因为汇编语言允许直接访问计算机硬件,所以为了提高速度,可以手动优化代码。汇编语言有助于形成对计算机硬件、操作系统和应用程序之间交互的全面理解。使用汇编语言,可以应用和测试从计算机体系结构和操作系统课程中获得的理论知识。一些高级语言抽象了它们的数据表示,这使得它们不方便执行低级任务,例如位控制。在这种情况下,程序员经常调用汇编语言编写的子程序来完成任务。硬件制造商为他们销售的设备创建设备驱动程序。设备驱动程序是一个程序,它将一般的操作系统指令转换成对硬件细节的特定引用。例如,打印机制造商为他们销售的每种型号创建了不同的MS-Windows设备驱动程序。通常,这些设备驱动程序包含大量汇编语言代码。汇编语言有什么规则吗?
大多数汇编语言规则是基于目标处理器及其机器语言的物理限制。例如,CPU要求两个指令操作数大小相同。与C或Java相比,汇编语言的规则更少,因为前者使用语法规则来减少意外的逻辑错误,这是以限制对底层数据的访问为代价的。
汇编语言程序员可以很容易地绕过高级语言的限制性特征。例如,Java不允许访问特定的内存地址。程序员可以使用JNI(Java Native Interface)类调用C函数来绕过这一限制,但这样一来,程序就不容易维护了。
相反,汇编语言可以访问所有的内存地址。但这种自由的代价也很高:汇编语言程序员需要花费大量时间调试。
下一篇:汇编语言的应用
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。