您的位置:首页 > 其它

汇编语言第一节课程

2014-02-25 12:45 330 查看
什么是汇编语言?汇编语言(面向机器的程序设计语言)

汇编语言(Assembly Language)是面向机器的程序设计语言。在汇编语言中,用助记符(Memoni)代替机器指令操作码,用地址符号(Symbol)或标号(Label)代替指令或操作数的地址,如此就增强了程序的可读性并且降低了编写难度,象这样符号化的程序设计语言就是汇编语言,因此亦称为符号语言。使用汇编语言编写的程序,机器不能直接识别,还要由汇编程序或者叫汇编语言编译器转换成机器指令。汇编程序将符号化的操作代码组装成处理器可以识别的机器指令,这个组装的过程称为组合或者汇编。因此,有时候人们也把汇编语言称为组合语言。

什么是机器语言?

机器语言(machine language)是一种指令集的体系。这种指令集,称机器码(machine code),是电脑的CPU可直接解读的数据。

机器码有时也被称为原生码(Native Code),这个名词比较强调某种编程语言或库,它与运行平台相关的部份。机器语言是用二进制代码表示的计算机能直接识别和执行的一种机器指

指令系统

令的集合。它是计算机的设计者通过计算机的硬件结构赋予计算机的操作功能。机器语言具有灵活、直接执行和速度快等特点。

一条指令就是机器语言的一个语句,它是一组有意义的二进制代码,指令的基本格式如,操作码字段和地址码字段,其中操作码指明了指令的操作性质及功能,地址码则给出了操作数或操作数的地址。

机器语言编写程序,编程人员要首先熟记所用计算机的全部指令代码和代码的涵义。手编程序时,程序员得自己处理每条指令和每一数据的存储分配和输入输出,还得记住编程过程中每步所使用的工作单元处在何种状态。这是一件十分繁琐的工作。编写程序花费的时间往往是实际运行时间的几十倍或几百倍。而且,编出的程序全是些0和1的指令代码,直观性差,还容易出错。除了计算机生产厂家的专业人员外,绝大多数的程序员已经不再去学习机器语言了。

什么是硬件?计算机硬件,是由许多不同功能模块化的部件组合而成的,并在软件的配合下完成输入、处理、储存、和输出等4个操作步骤。另外,还可根据它们的不同功能分为5类。1. 输出设备(显示器打印机音箱等)2.输入设备(鼠标键盘、摄像头等)3.中央处理器4.储存器内存硬盘光盘U盘以及储存卡等)5.主板(在各个部件之间进行协调工作、是一个重要的连接载体)

什么是cpu?

CPU(Central Processing Unit,中央处理器)是计算机最重要的部件之一。是一台电脑的核心,相当于人的大脑,它的内部结构分为控制单元、逻辑单元存储单元三大部分。CPU主要接

CPU

口类型有两种:一种是INTEL的LGA1155,另一种是AMD的Socket938(Socket AM3)。CPU的主要性能指标:主频前端总线频率、L1 和L2Cache的容量和速率、支持的扩展指令集CPU内核工作电压地址总线宽度等等。CPU的生产厂商主要有Intel、AMD两家,其中Intel公司的CPU产品市场占有量最高。市场上主流的CPU有:Intel公司的酷睿Core系列、奔腾Pentium系列、赛扬Celeron系列;AMD公司的弈龙系列、速龙系列、APU系列、推土机系列等等。

什么是软件?软件(中国大陆香港用语,台湾作软体,英文:Software)是一系列按照特定顺序组织的计算机数据指令的集合。一般来讲软件被划分为系统软件应用软件和介于这两者之间的中间件。软件并不只是包括可以在计算机(这里的计算机是指广义的计算机)上运行的电脑程序,与这些电脑程序相关的文档一般也被认为是软件的一部分。简单的说软件就是程序加文档的集合体。另也泛指社会结构中的管理系统、思想意识形态、思想政治觉悟、法律法规等等。软件,拼音为Ruǎnjiàn。国标中对软件的定义为:与计算机系统操作有关的计算机程序、规程、规则,以及可能有的文件、文档及数据

其它定义:

1.运行时,能够提供所要求功能和性能的指令或计算机程序集合。

2.程序能够满意地处理信息的数据结构。

3.描述程序功能需求以及程序如何操作和使用所要求的文档。

以开发语言作为描述语言,可以认为:

软件=程序+数据+文档

按应用范围划分,一般来讲软件被划分为系统软件应用软件和介于这两者之间的中间件

系统软件

系统软件为计算机使用提供最基本的功能,可分为操作系统和支撑软件,其中操作系统是最基本的软件。

系统软件是负责管理计算机系统中各种独立的硬件,使得它们可以协调工作。系统软件使得计算机使用者和其他软件将计算机当作一个整体而不需要顾及到底层每个硬件是如何工作的。

1.操作系统是一管理计算机硬件与软件资源的程序,同时也是计算机系统的内核与基石。操作系统身负诸如管理与配置内存、决定系统资源供需的优先次序、控制输入与输出设备、操作网络与管理文件系统等基本事务。操作系统也提供一个让使用者与系统交互的操作接口。

2.支撑软件是支撑各种软件的开发与维护的软件,又称为软件开发环境(SDE)。它主要包括环境数据库、各种接口软件和工具组。著名的软件开发环境有IBM公司的Web Sphere,微软公司的等。

包括一系列基本的工具(比如编译器数据库管理、存储器格式化、文件系统管理、用户身份验证、驱动管理、网络连接等方面的工具)。

应用软件

系统软件并不针对某一特定应用领域,而应用软件则相反,不同的应用软件根据用户和所服务的领域提供不同的功能。

应用软件是为了某种特定的用途而被开发的软件。它可以是一个特定的程序,比如一个图像浏览器。也可以是一组功能联系紧密,可以互相协作的程序的集合,比如微软的Office软件。也可以是一个由众多独立程序组成的庞大的软件系统,比如数据库管理系统。

如今智能手机得到了极大的普及,运行在手机上的应用软件简称手机软件。所谓手机软件就是可以安装在手机上的软件,完善原始系统的不足与个性化。随着科技的发展,手机的功能也越来越多,越来越强大。不是像过去的那么简单死板,发展到了可以和掌上电脑相媲美。手机软件与电脑一样,下载手机软件时还要考虑你购买这一款手机所安装的系统来决定要下相对应的软件。手机主流系统有以下:Windows Phone、Symbian、iPhone iOS、Android。

什么是存储器?存储器(Memory)是计算机系统中的记忆设备,用来存放程序和数据。计算机中全部信息,包括输入的原始数据、计算机程序、中间运行结果和最终运行结果都保存在存储器中。它根据控制器指定的位置存入和取出信息。有了存储器,计算机才有记忆功能,才能保证正常工作。按用途存储器可分为主存储器(内存)和辅助存储器(外存),也有分为外部存储器和内部存储器的分类方法。外存通常是磁性介质或光盘等,能长期保存信息。内存指主板上的存储部件,用来存放当前正在执行的数据和程序,但仅用于暂时存放程序和数据,关闭电源或断电,数据会丢失。存储器的主要功能是存储程序和各种数据,并能在计算机运行过程中高速、自动地完成程序或数据的存取。

存储器(16张)

存储器是具有“记忆”功能的设备,它采用具有两种稳定状态的物理器件来存储信息。这些器件也称为记忆元件。在计算机中采用只有两个数码“0”和“1”的二进制来表示数据。记忆元件的两种稳定状态分别表示为“0”和“1”。日常使用的十进制数必须转换成等值的二进制数才能存入存储器中。计算机中处理的各种字符,例如英文字母、运算符号等,也要转换成二进制代码才能存储和操作。

存储器:存放程序和数据的器件

存储位:存放一个二进制数位的存储单元,是存储器最小的存储单位,或称记忆单元

存储字:一个数(n位二进制位)作为一个整体存入或取出时,称存储字

存储单元:存放一个存储字的若干个记忆单元组成一个存储单元

存储体:大量存储单元的集合组成存储体

存储单元地址:存储单元的编号

字编址:对存储单元按字编址

字节编址:对存储单元按字节编址

寻址:由地址寻找数据,从对应地址的存储单元中访存数据。

什么是数据?数据:在计算机系统中,各种字母、数字符号的组合、语音、图形、图像等统称为数据,数据经过加工后就成为信息

计算机科学中,数据是指所有能输入到计算机并被计算机程序处理的符号的介质的总称,是用于输入电子计算机进行处理,具有一定意义的数字、字母、符号和模拟量等的通称。是组成地理信息系统的最基本要素,种类很多。

数字数据在某个区间内是离散的值。

数据库的特点

数据库不同层次之间的联系是通过映射进行转换的。数据库具有以下主要特点:

(1)实现数据共享。数据共享包含所有用户可同时存取数据库中的数据,也包括用户可以用各种方式通过接口使用数据库,并提供数据共享。

(2)减少数据的冗余度。同文件系统相比,由于数据库实现了数据共享,从而避免了用户各自建立应用文件。减少了大量重复数据,减少了数据冗余,维护了数据的一致性。

(3)数据的独立性。数据的独立性包括数据库中数据库的逻辑结构和应用程序相互独立,也包括数据物理结构的变化不影响数据的逻辑结构。

(4)数据实现集中控制。文件管理方式中,数据处于一种分散的状态,不同的用户或同一用户在不同处理中其文件之间毫无关系。利用数据库可对数据进行集中控制和管理,并通过数据模型表示各种数据的组织以及数据间的联系。

(5)数据一致性和可维护性,以确保数据的安全性可靠性。主要包括:①安全性控制:以防止数据丢失、错误更新和越权使用;②完整性控制:保证数据的正确性、有效性和相容性;③并发控制:使在同一时间周期内,允许对数据实现多路存取,又能防止用户之间的不正常交互作用;④故障的发现和恢复:由数据库管理系统提供一套方法,可及时发现故障和修复故障,从而防止数据被破坏。

什么是二进制?二进制是计算技术中广泛采用的一种数制二进制数据是用0和1两个数码来表示的数。它的基数为2,进位规则是“逢二进一”,借位规则是“借一当二”,由18世纪德国数理哲学大师莱布尼兹发现。当前的计算机系统使用的基本上是二进制系统,数据在计算机中主要是以补码的形式存储的。【计算机中的二进制则是一个非常微小的开关,用“开”来表示1,“关”来表示0】

什么是助记符?助记符(memonic)是便于人们记忆、并能描述指令功能和指令操作数的符号,助记符是表明指令功能的英语单词或其缩写。

汇编语言由于采用了助记符号来编写程序,比用机器语言的二进制代码编程要方便些,在一定程度上简化了编程过程。汇编语言的特点是用符号代替了机器指令代码,而且助记符与指令代码一一对应,基本保留了机器语言的灵活性。使用汇编语言能面向机器并较好地发挥机器的特性,得到质量较高的程序。

按指令作用对象来分,可分为伪指令和真指令(硬指令)。伪指令也就是作用于汇编程序的命令;真指令就是作用于真正处理器的命令。

助记符说明表

助记符

指令说明

字节数

周期数

(数据传递类指令)

MOV

A,Rn

寄存器传送到累加器

1

1

MOV

A,direct

直接地址传送到累加器

2

1

MOV

A,@Ri

累加器传送到外部RAM(8 地址)

1

1

MOV

A,#data

立即数传送到累加器

2

1

MOV

Rn,A

累加器传送到寄存器

1

1

MOV

Rn,direct

直接地址传送到寄存器

2

2

MOV

Rn,#data

累加器传送到直接地址

2

1

MOV

direct,Rn

寄存器传送到直接地址

2

1

MOV

direct,direct

直接地址传送到直接地址

3

2

MOV

direct,A

累加器传送到直接地址

2

1

MOV

direct,@Ri

间接RAM 传送到直接地址

2

2

MOV

direct,#data

立即数传送到直接地址

3

2

MOV

@Ri,A

累加器传送到间接RAM

1

2

MOV

@Ri,direct

直接地址传送到间接RAM

2

1

MOV

@Ri,#data

立即数传送到间接RAM

2

2

MOV

DPTR,#data16

16 位常数加载到数据指针

3

1

MOVC

A,@A+DPTR

代码字节传送到累加器

1

2

MOVC

A,@A+PC

代码字节传送到累加器

1

2

MOVX

A,@Ri

外部RAM(8 地址)传送到累加器

1

2

MOVX

A,@DPTR

外部RAM(16 地址)传送到累加器

1

2

MOVX

@Ri,A

累加器传送到外部RAM(8 地址)

1

2

MOVX

@DPTR,A

累加器传送到外部RAM(16 地址)

1

2

PUSH

direct

直接地址压入堆栈

2

2

POP

direct

直接地址弹出堆栈

2

2

XCH

A,Rn

寄存器和累加器交换

1

1

XCH

A, direct

直接地址和累加器交换

2

1

XCH

A, @Ri

间接RAM 和累加器交换

1

1

XCHD

A, @Ri

间接RAM 和累加器交换低4 位字节

1

1

(算术运算类指令)

INC

A

累加器加1

1

1

INC

Rn

寄存器加1

1

1

INC

direct

直接地址加1

2

1

INC

@Ri

间接RAM 加1

1

1

INC

DPTR

数据指针加1

1

2

DEC

A

累加器减1

1

1

DEC

Rn

寄存器减1

1

1

DEC

direct

直接地址减1

2

2

DEC

@Ri

间接RAM 减1

1

1

MUL

AB

累加器和B 寄存器相乘

1

4

DIV

AB

累加器除以B 寄存器

1

4

DA

A

累加器十进制调整

1

1

ADD

A,Rn

寄存器与累加器求和

1

1

ADD

A,direct

直接地址与累加器求和

2

1

ADD

A,@Ri

间接RAM 与累加器求和

1

1

ADD

A,#data

立即数与累加器求和

2

1

ADDC

A,Rn

寄存器与累加器求和(带进位)

1

1

ADDC

A,direct

直接地址与累加器求和(带进位)

2

1

ADDC

A,@Ri

间接RAM 与累加器求和(带进位)

1

1

ADDC

A,#data

立即数与累加器求和(带进位)

2

1

SUBB

A,Rn

累加器减去寄存器(带借位)

1

1

SUBB

A,direct

累加器减去直接地址(带借位)

2

1

SUBB

A,@Ri

累加器减去间接RAM(带借位)

1

1

SUBB

A,#data

累加器减去立即数(带借位)

2

1

(逻辑运算类指令)

ANL

A,Rn

寄存器“与”到累加器

1

1

ANL

A,direct

直接地址“与”到累加器

2

1

ANL

A,@Ri

间接RAM“与”到累加器

1

1

ANL

A,#data

立即数“与”到累加器

2

1

ANL

direct,A

累加器“与”到直接地址

2

1

ANL

direct, #data

立即数“与”到直接地址

3

2

ORL

A,Rn

寄存器“或”到累加器

1

2

ORL

A,direct

直接地址“或”到累加器

2

1

ORL

A,@Ri

间接RAM“或”到累加器

1

1

ORL

A,#data

立即数“或”到累加器

2

1

ORL

direct,A

累加器“或”到直接地址

2

1

ORL

direct, #data

立即数“或”到直接地址

3

1

XRL

A,Rn

寄存器“异或”到累加器

1

2

XRL

A,direct

直接地址“异或”到累加器

2

1

XRL

A,@Ri

间接RAM“异或”到累加器

1

1

XRL

A,#data

立即数“异或”到累加器

2

1

XRL

direct,A

累加器“异或”到直接地址

2

1

XRL

direct, #data

立即数“异或”到直接地址

3

1

CLR

A

累加器清零

1

2

CPL

A

累加器求反

1

1

RL

A

累加器循环左移

1

1

RLC

A

带进位累加器循环左移

1

1

RR

A

累加器循环右移

1

1

RRC

A

带进位累加器循环右移

1

1

SWAP

A

累加器高、低4 位交换

1

1

(控制转移类指令)

JMP

@A+DPTR

相对DPTR 的无条件间接转移

1

2

JZ

rel

累加器为0 则转移

2

2

JNZ

rel

累加器为1 则转移

2

2

CJNE

A,direct,rel

比较直接地址和累加器,不相等转移

3

2

CJNE

A,#data,rel

比较立即数和累加器,不相等转移

3

2

CJNE

Rn,#data,rel

比较寄存器和立即数,不相等转移

2

2

CJNE

@Ri,#data,rel

比较立即数和间接RAM,不相等转移

3

2

DJNZ

Rn,rel

寄存器减1,不为0 则转移

3

2

DJNZ

direct,rel

直接地址减1,不为0 则转移

3

2

NOP

空操作,用于短暂延时

1

1

ACALL

add11

绝对调用子程序

2

2

LCALL

add16

长调用子程序

3

2

RET

从子程序返回

1

2

RETI

从中断服务子程序返回

1

2

AJMP

add11

无条件绝对转移

2

2

LJMP

add16

无条件长转移

3

2

SJMP

rel

无条件相对转移

2

2

(布尔指令)

CLR

C

清进位位

1

1

CLR

bit

清直接寻址位

2

1

SETB

C

置位进位位

1

1

SETB

bit

置位直接寻址位

2

1

CPL

C

取反进位位

1

1

CPL

bit

取反直接寻址位

2

1

ANL

C,bit

直接寻址位“与”到进位位

2

2

ANL

C,/bit

直接寻址位的反码“与”到进位位

2

2

ORL

C,bit

直接寻址位“或”到进位位

2

2

ORL

C,/bit

直接寻址位的反码“或”到进位位

2

2

MOV

C,bit

直接寻址位传送到进位位

2

1

MOV

bit, C

进位位位传送到直接寻址

2

2

JC

rel

如果进位位为1 则转移

2

2

JNC

rel

如果进位位为0 则转移

2

2

JB

bit,rel

如果直接寻址位为1 则转移

3

2

JNB

bit,rel

如果直接寻址位为0 则转移

3

2

JBC

bit,rel

直接寻址位为1 则转移并清除该位

2

2

什么是X86?

x86或80x86是英特尔Intel首先开发制造的一种微处理器体系结构的泛称。该系列较早期的处理器名称是以数字来表示,并以“86”作为结尾,包括Intel 8086、80186、80286、80386以及80486,因此其架构被称为“x86”。由于数字并不能作为注册商标,因此Intel及其竞争者均在新一代处理器使用可注册的名称,如Pentium。现时Intel把x86-32称为IA-32,全名为“Intel Architecture, 32-bit”。

什么是寄存器?寄存器中央处理器内的组成部分。寄存器是有限存贮容量的高速存贮部件,它们可用来暂存指令数据地址。在中央处理器的控制部件中,包含的寄存器有指令寄存器(IR)和程序计数器(PC)。在中央处理器的算术及逻辑部件中,包含的寄存器有累加器(ACC)。寄存器英文名称:Register

寄存器

寄存器内存阶层中的最顶端,也是系统获得操作资料的最快速途径。寄存器通常都是以他们可以保存的位元数量来估量,举例来说,一个“8 位元寄存器”或“32元寄存器”。寄存器现在都以寄存器档案的方式来实作,但是他们也可能使用单独的正反器、高速的核心内存、薄膜内存以及在数种机器上的其他方式来实作出来。

寄存器通常都用来意指由一个指令之输出或输入可以直接索引到的暂存器群组。更适当的是称他们为“架构寄存器”。

例如,x86指令集定义八个32 位元寄存器的集合,但一个实际 x86 指令集的CPU可以包含比八个更多的寄存器。

寄存器是CPU内部的元件,寄存器拥有非常高的读写速度,所以在寄存器之间的数据传送非常快。

数据寄存器- 用来储存整数数字(参考以下的浮点寄存器)。在某些简单/旧的CPU,特别的数据寄存

寄存器

器是累加器,作为数学计算之用。

地址寄存器- 持有存储器地址,用来访问存储器。在某些简单/旧的CPU里,特别的地址寄存器是索引寄存器(可能出现一个或多个)。

通用目的寄存器(GPRs) - 可以保存数据或地址两者,也就是说它们是结合数据/地址 寄存器的功用。

浮点寄存器(FPRs) - 用来储存浮点数字

常数寄存器- 用来持有只读的数值(例如0、1、圆周率等等)。

向量寄存器- 用来储存由向量处理器运行SIMD(Single Instruction, Multiple Data)指令所得到的数据。

特殊目的寄存器- 储存CPU内部的数据,像是程序计数器(或称为指令指针),堆栈寄存器,以及状态寄存器(或称微处理器状态字组)。

指令寄存器(instruction register)- 储存现在正在被运行的指令。

索引寄存器(index register)- 是在程序运行时用来更改运算对象地址之用。

在某些架构下,模式指示寄存器(也称为“机器指示寄存器”)储存和设置跟处理器自己有关的数据。由于他

PORT1的控制寄存器

们的意图目的是附加到特定处理器的设计,因此他们并不被预期会成为微处理器世代之间保留的标准。

有关从随机存取存储器提取信息的寄存器与CPU(位于不同芯片的储存寄存器集合)

存储器缓冲寄存器(Memory buffer register)

存储器数据寄存器(Memory data register)

存储器地址寄存器(Memory address register)

存储器型态范围寄存器(Memory Type Range Registers)

向量寄存器

8086寄存器编辑

8086 有14个16位寄存器,这14个寄存器按其用途可分为(1)通用寄存器、(2)指令指针、(3)标志寄存器和(4)段寄存器等4类。

通用寄存器

有8个, 又可以分成2组,一组是数据寄存器(4个),另一组是指针寄存器及变址寄存器(4个).

顾名思义,通用寄存器是那些你可以根据自己的意愿使用的寄存器,修改他们的值通常不会对计算机的运行造成很大的影响。

数据寄存器分为:

AH&AL=AX(accumulator):累加寄存器,常用于运算;在乘除等指令中指定用来存放操作数,另外,所有的I/O指令都使用这一寄存器与外界设备传送数据。

BH&BL=BX(base):基址寄存器,常用于地址索引

CH&CL=CX(count):计数寄存器,常用于计数;常用于保存计算值,如在移位指令,循环(loop)和串处理指令中用作隐含的计数器.

DH&DL=DX(data):数据寄存器,常用于数据传递。

他们的特点是,这4个16位的寄存器可以分为高8位: AH, BH, CH, DH.以及低八位:AL,BL,CL,DL。这2组8位寄存器可以分别寻址,并单独使用。

另一组是指针寄存器变址寄存器,包括:

SP(Stack Pointer):堆栈指针,与SS配合使用,可指向目前的堆栈位置

BP(Base Pointer):基址指针寄存器,可用作SS的一个相对基址位置

SI(Source Index):源变址寄存器,可用来存放相对于DS段之源变址指针

DI(Destination Index):目的变址寄存器,可用来存放相对于ES 段之目的变址指针

这4个16位寄存器只能按16位进行存取操作,主要用来形成操作数的地址,用于堆栈操作和变址运算中计算操作数的有效地址

指令指针IP

指令指针IP是一个16位专用寄存器,它指向当前需要取出的指令字节,当BIU从内存中取出一个指令字

寄存器

节后,IP就自动加(取出该字节的长度,如:BIU从内存中取出的是1个字节,IP就会自动加1,如果BIU从内存中取出的字节数长度为3,IP就自动加3),指向下一个指令字节。注意,IP指向的是指令地址的段内地址偏移量,又称偏移地址(Offset Address)或有效地址(EA,Effective Address)。

标志寄存器

8086有一个16位的标志性寄存器FR,在FR中有意义的有9位,其中6位是状态位,3位是控制位。标志寄存器(Flags Register,FR)又称程序状态字(Program Status Word,PSW)。这是一个存放条件标志、控制标志寄存器,主要用于反映处理器的状态和运算结果的某些特征及控制指令的执行。

OF:溢出标志位OF用于反映有符号数加减运算所得结果是否溢出。如果运算结果超过当前运算位数所能表示的范围,则称为溢出,OF的值被置为1,否则,OF的值被清为0。

DF:方向标志DF位用来决定在串操作指令执行时有关指针寄存器发生调整的方向。

IF:中断允许标志IF位用来决定CPU是否响应CPU外部的可屏蔽中断发出的中断请求。但不管该标志为何值,CPU都必须响应CPU外部的不可屏蔽中断所发出的中断请求,以及CPU内部产生的中断请求。具体规定如下:

(1)、当IF=1时,CPU可以响应CPU外部的可屏蔽中断发出的中断请求

(2)、当IF=0时,CPU不响应CPU外部的可屏蔽中断发出的中断请求。

TF:跟踪标志TF。该标志可用于程序调试。TF标志没有专门的指令来设置或清除。

(1)如果TF=1,则CPU处于单步执行指令的工作方式,此时每执行完一条指令,就显示CPU内各个寄存器的当前值及CPU将要执行的下一条指令。

(2)如果TF=0,则处于连续工作模式。

SF:符号标志SF用来反映运算结果的符号位,它与运算结果的最高位相同。在微机系统中,有符号数采用补码表示法,所以,SF也就反映运算结果的正负号。运算结果为非负数时,SF的值为0,否则其值为1。当运算结果没有产生溢出时,运算结果等于逻辑结果(即应该得到的正确的结果),此时SF表示的是逻辑结果的正负,当运算结果产生溢出时,运算结果不等于逻辑结果,此时的SF值所表示的正负情况与逻辑结果相反,即:SF=0时,逻辑结果为负,SF=1时,逻辑结果为非负。

ZF:零标志ZF用来反映运算结果是否为0。如果运算结果为0,则其值为1,否则其值为0。在判断运算结果

寄存器

是否为0时,可使用此标志位。

AF:( Assistant Carry Flag)下列情况下,辅助进位标志AF的值被置为1,否则其值为0:

(1)、在字操作时,发生低字节向高字节进位或借位时

(2)、在字节操作时,发生低4位向高4位进位或借位时。

PF:奇偶标志PF用于反映运算结果中“1”的个数的奇偶性。如果“1”的个数为偶数,则PF的值为1,否则其值为0。

CF:进位标志CF主要用来反映无符号数运算是否产生进位或借位。如果运算结果的最高位产生了一个进位或借位,那么,其值为1,否则其值为0。

段寄存器

为了运用所有的内存空间,8086设定了四个段寄存器,专门用来保存段地址

寄存器

CS(Code Segment):代码段寄存器

DS(Data Segment):数据段寄存器

SS(Stack Segment):堆栈段寄存器

ES(Extra Segment):附加段寄存器

当一个程序要执行时,就要决定程序代码、数据和堆栈各要用到内存的哪些位置,通过设定段寄存器CS,DS,SS 来指向这些起始位置。通常是将DS固定,而根据需要修改CS。所以,程序可以在可寻址空间小于64K的情况下被写成任意大小。所以,程序和其数据组合起来的大小,限制在DS 所指的64K内,这就是COM文件不得大于64K的原因。8086以内存作为战场,用寄存器做为军事基地,以加速工作。

备注:由于所讲的是16位cpu(IP寄存器的位数为16,即:偏移地址为16位)2的16次幂就是64K,所以16位段地址不能超过64K,超过64K会造成64K以上的地址找不到。

什么是堆栈?在计算机领域,堆栈是一个不容忽视的概念,堆栈是两种数据结构。堆栈都是一种数据项按序排列的数据结构,只能在一端(称为栈顶(top))对数据项进行插入和删除。要点:堆,顺序随意。栈,后进先出(Last-In/First-Out)。栈(操作系统):由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈

栈使用的是一级缓存, 他们通常都是被调用时处于存储空间中,调用完毕立即释放

堆(操作系统): 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收,分配方式倒是类似于链表。

堆则是存放在二级缓存中,生命周期由虚拟机的垃圾回收算法来决定(并不是一旦成为孤儿对象就能被回收)。所以调用这些对象的速度要相对来得低一些

堆(数据结构):堆可以被看成是一棵树,如:堆排序

栈(数据结构):一种后进先出的数据结构

什么是物理地址?描述

存储器里以字节为单位存储信息,为了正确地存放或取得信息,每一个字节单元给以一个唯一的存储器地址,称为物理地址(Physical Address),又叫实际地址绝对地址。地址从0开始编号,顺序地每次加1,因此存储器的物理地址空间是呈线性增长的。它是用二进制数来表示的,是无符号整数,书写格式为十六进制数

它是出现在CPU外部地址总线上的寻址物理内存的地址信号,是地址变换的最终结果。用于内存芯片级的单元寻址,与处理器和CPU连接的地址总线相对应。

2计算方法

20位物理地址计算方法如下:

物理地址=段基址*16d+偏移地址 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: