汇编语言从入门到精通-预备知识

汇编语言

1、预备知识

1.1 汇编语言的由来及其特点

1.1.1 机器语言

  机器指令是CPU能直接识别并执行的指令,它的表现形式是二进制编码。机器指令通常由操作码和操作数两部分组成,操作码指出该指令所要完成的操作,即指令的功能,操作数指出参与运算的对象,以及运算结果所存放的位置等。

  由于机器指令与CPU紧密相关,所以,不同种类的CPU所对应的机器指令也就不同,而且它们的指令系统往往相差很大。但对同一系列的CPU来说,为了满足各型号之间具有良好的兼容性,要做到:新一代CPU的指令系统必须包括先前同系列CPU的指令系统。只有这样,先前开发出来的各类程序在新一代CPU上才能正常运行。

  机器语言是用来直接描述机器指令、使用机器指令的规则等。它是CPU能直接识别的唯一一种语言,也就是说,CPU能直接执行用机器语言描述的程序。

  用机器语言编写程序是早期经过严格训练的专业技术人员的工作,普通的程序员一般难以胜任,而且用机器语言编写的程序不易读、出错率高、难以维护,也不能直观地反映用计算机解决问题的基本思路。

  由于用机器语言编写程序有以上诸多的不便,现在几乎没有程序员这样编写程序了。

1.1.2 汇编语言

  虽然用机器语言编写程序有很高的要求和许多不便,但编写出来的程序执行效率高,CPU严格按照程序员的要求去做,没有多余的额外操作。所以,在保留“程序执行效率高”的前提下,人们就开始着手研究一种能大大改善程序可读性的编程方法。

  为了改善机器指令的可读性,选用了一些能反映机器指令功能的单词或词组来代表该机器指令,而不再关心机器指令的具体二进制编码。与此同时,也把CPU内部的各种资源符号化,使用该符号名也等于引用了该具体的物理资源。

  如此一来,令人难懂的二进制机器指令就可以用通俗易懂的、具有一定含义的符号指令来表示了,于是,汇编语言就有了雏型。现在,我们称这些具有一定含义的符号为助忆符,用指令助忆符、符号地址等组成的符号指令称为汇编格式指令(或汇编指令)。

  汇编语言是汇编指令集、伪指令集和使用它们规则的统称。伪指令是在程序设计时所需要的一些辅助性说明指令,它不对应具体的机器指令,有关内容在以后的各章节中会有详细叙述,在此不展开介绍。  

  用汇编语言编写的程序称为汇编语言程序,或汇编语言源程序,在本教材中或特定的环境下,也可简称为源程序。汇编语言程序要比用机器指令编写的程序容易理解和维护。

1.1.3 汇编程序

  用汇编语言编写的程序大大提高了程序的可读性,但失去了CPU能直接识别的特性。例如用汇编语言书写的指令:MOV AX, BX,CPU不会知道这几个字符所表达出来的功能,但程序员一看就知道:要求CPU把寄存器BX的值传送给寄存器AX。

  把机器指令符号化增加了程序的可读性,但引起了如何让CPU知道程序员的用意,并按照其要求完成相应操作的问题。解决该问题就需要一个翻译程序,它能把汇编语言编写的源程序翻译成CPU能识别的机器指令序列。这里,我们称该翻译程序为汇编程序。

图1.1 汇编语言指令到机器指令的示意图

  从图中不难看出:汇编程序能把左边汇编语言源程序翻译成右边的机器指令序列。其中,把汇编语言指令“MOV AX, BX”和“ADD AX, 5”分别转换成机器指令89D8H和050500H,而后者都是CPU能直接识别的,所以,可执行它们。

  目前,常用的汇编程序有:MASMTASMDEBUG等。

原文地址:https://www.cnblogs.com/little-kwy/p/9734898.html

时间: 2024-10-11 04:34:55

汇编语言从入门到精通-预备知识的相关文章

汇编语言从入门到精通-CPU资源和存储器

CPU资源和存储器 在汇编语言中,需要访问的硬件资源主要有:CPU内部资源.存储器和I/O端口.本章将着重讲解CPU内部寄存器的命名.功能及其常见的用途,还要介绍存储器的分段管理模式.存储单元地址的表示法以及其物理地址的形成方式. 2.1 寄存器组 寄存器是CPU内部重要的数据存储资源,是汇编程序员能直接使用的硬件资源之一.由于寄存器的存取速度比内存快,所以,在用汇编语言编写程序时,要尽可能充分利用寄存器的存储功能. 寄存器一般用来保存程序的中间结果,为随后的指令快速提供操作数,从而避免把中间结

汇编语言从入门到精通-通用寄存器功能的说明

1.数据寄存器 数据寄存器主要用来保存操作数和运算结果等信息,从而节省读取操作数所需占用总线和访问存储器的时间. 32位CPU有4个32位的通用寄存器EAX.EBX.ECX和EDX.对低16位数据的存取,不会影响高16位的数据.这些低16位寄存器分别命名为:AX.BX.CX和DX,它和先前的CPU中的寄存器相一致. 4个16位寄存器又可分割成8个独立的8位寄存器(AX:AH-AL.BX:BH-BL.CX:CH-CL.DX:DH-DL),每个寄存器都有自己的名称,可独立存取.程序员可利用数据寄存器

汇编语言从入门到精通-标志位的说明

16位标志寄存器--共用了9个标志位,它们主要用来反映CPU的状态和运算结果的特征.标志位的分布如下表所示.   15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0         OF DF IF TF SF ZF   AF   PF   CF 32位标志寄存器--32位CPU也把标志寄存器扩展到32位,记为EFLAGS.它新增加了四个控制标志位,它们是:IOPL.NT.RF和VM,这些标志位在实方式下不起作用.其它标志位的位置和作用与先前的完全相同.其主要标志位的分布

汇编语言从入门到精通-5微机CPU的指令系统2

微机CPU的指令系统 5.2.2 标志位操作指令 标志位操作指令是一组对标志位置位.复位.保存和恢复等操作的指令. 1.进位CF操作指令 a.清进位指令CLC(Clear Carry Flag):CF←0b.置进位指令STC(Set Carry Flag):CF←1c.进位取反指令CMC(Complement Carry Flag):CF←not CF 2.方向位DF操作指令 a.清方向位指令CLD(Clear Direction Flag):DF←0b.置方向位指令STD(Set Direct

记数据结构--入门和预备知识

数据结构(一)--入门和预备知识 1. 概述 数据结构定义: 我们如何把现实中大量而复杂的问题以特定的数据类型和特定的存储结构保存到主存储器(内存)中, 以及在此基础上为实现某个功能(如元素的CURD.排序等)而执行的相应操作,这个相应的操作也叫算法. 数据结构 = 元素的存储 + 元素的关系的存储算法 = 对数据存储的操作 算法: 算法就是:解决问题的方法和步骤 衡量算法有如下标准: 时间复杂度(程序要执行的次数,并非执行时间) 空间复杂度(算法执行过程中大概要占用的最大内存) 难易程度(可读

Python基础知识详解 从入门到精通(七)类与对象

本篇主要是介绍python,内容可先看目录其他基础知识详解,欢迎查看本人的其他文章Python基础知识详解 从入门到精通(一)介绍Python基础知识详解 从入门到精通(二)基础Python基础知识详解 从入门到精通(三)语法与函数Python基础知识详解 从入门到精通(四)列表.元组.字典.集合Python基础知识详解 从入门到精通(五)模块管理Python基础知识详解 从入门到精通(六)文件操作PS:很多人在学习Python的过程中,往往因为遇问题解决不了或者没好的教程从而导致自己放弃,为此

区块链从入门到精通

一.预备知识 一个故事告诉你比特币的原理及运作机制 区块链是什么 二.比特币 比特币白皮书 英文版< Bitcoin: A Peer-to-Peer Electronic Cash System> 中文版<比特币白皮书:一种点对点的电子现金系统> Coursera的比特币和数字货币技术 公开课大致内容包括密码学原理,bitcoin的基本概念,共识机制,区块链现状,区块的应用问题. Bitcoin and cryptocurrency 斯坦福大学比特币课程 CS 251: Bitco

大牛分享C++学习建议,从入门到精通速学的干货,学到就是赚发了

C++学习建议 大牛分享C++学习建议,从入门到精通速学的干货,学到就是赚发了C++缺点之一,是相对许多语言复杂,而且难学难精.许多人说学习C语言只需一本K&R<C程序设计语言>即可,但C++书籍却是多不胜数.我是从C进入C++,皆是靠阅读自学.在此分享一点学习心得.个人认为,学习C++可分为4个层次:创一个小群,供大家学习交流聊天如果有对学C++方面有什么疑惑问题的,或者有什么想说的想聊的大家可以一起交流学习一起进步呀.也希望大家对学C++能够持之以恒C++爱好群,如果你想要学好C+

学习建设网站从入门到精通

网站建设学习流程 入门到精通 我们分为三个过程:①基础知识 ②进阶学习 ③高级部分(延伸知识)笔者从初学者到现在,经历了一些,把自己理解的,所学的,都献给爱做网站的网友们,因为我知道作为一个初学者是很迷茫的,避免学些不需要的知识,避免走弯路! [1]基础知识: 了解域名,空间,网站程序是什么? 网站程序有那些好处? [2]进阶学习: html,div+css 必须学会的技术,有必要精通 掌握一门网站程序如:DeDeCms,WordPress,Discuz 选学课 html5,css3 在原有的基