第一章 预备知识.docx

上传人:b****6 文档编号:3458072 上传时间:2022-11-23 格式:DOCX 页数:12 大小:93.23KB
下载 相关 举报
第一章 预备知识.docx_第1页
第1页 / 共12页
第一章 预备知识.docx_第2页
第2页 / 共12页
第一章 预备知识.docx_第3页
第3页 / 共12页
第一章 预备知识.docx_第4页
第4页 / 共12页
第一章 预备知识.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

第一章 预备知识.docx

《第一章 预备知识.docx》由会员分享,可在线阅读,更多相关《第一章 预备知识.docx(12页珍藏版)》请在冰豆网上搜索。

第一章 预备知识.docx

第一章预备知识

第一章预备知识

汇编语言是面向机器的低级语言:

和其他计算机语言相比,能够充分利用计算机硬件特性;随机器的不同而不同。

学习汇编语言必须做到:

了解特定机器的硬件;了解其数据类型的表示方法;了解其指令系统等。

本章的内容包括:

什么是汇编语言;

汇编源程序举例;

汇编和调试过程;

寄存器组

1.1机器语言与汇编语言

人们用计算机语言操纵计算机,和计算机交流信息。

一般来说,计算机语言可以分为以下几类:

低级语言是面向机器的,为特定机器提出的;

高级语言是面相人的,接近于自然语言,为了方便人们使用提出的。

一、机器语言

机器指令:

能够被计算机识别,并能直接加以执行的语句。

机器语言:

由机器指令构成的集合。

机器指令也叫做硬指令,不同类型的CPU都有自己特有的、一定数量的基本指令,组成其特有的机器语言。

机器指令用二进制代码来表示,这样才能够被计算机识别并直接执行。

机器指令的一般形式为:

例如:

完成操作:

MOVAX,7FH;7FH→AX

操作码指出了运算的种类,如数据传送、加减运算等。

地址码指出了参与运算的操作数和运算结果的存放位置。

用机器语言编程,就意味着要用二进制数0和1编写程序。

这样做效率很低,而且容易出错。

但为了能够充分利用硬件特性,在一些时候仍然需要用低级语言编程,因此人们想办法对机器语言进行改进,提出了汇编语言。

此后很少直接使用机器语言了。

二、汇编语言

从本质上看,汇编语言是一种符号化的机器语言:

用助记符表示机器指令的操作码;

用变量代替操作数的存放地址;

用在语句前加一个标号,来代表该指令的存放地址。

汇编语言的主要操作与机器指令一一对应,是一种用符号书写的(不再是二进制代码)、并遵循一定语法规则的计算机语言。

例如:

MOVAX,7FH

MOVBX,1234H

ADDAX,BX

汇编语言是为了方便用户使用而设计的一种符号语言,并不能直接被计算机识别,必须将汇编语言程序翻译成机器语言程序(也叫目标程序),才能由计算机所执行。

翻译过程的图形表示:

汇编程序不同于汇编语言程序。

汇编语言程序是用汇编语言写的程序,汇编程序是翻译汇编语言程序的加工程序。

汇编程序可分为:

ASM——小汇编程序,占有较小的存贮区,但功能较弱,没有宏功能。

MASM——宏汇编程序,需要较大的存贮区,但功能强大,具有宏能力。

这门课使用的是宏汇编程序。

宏,是指用一个宏指令名字代替程序中重复出现的一组语句,在其它的地方,可以用宏指令名字及不同的参数来调用。

宏的功能类似于子函数,但实现方式不同。

此外,汇编语言还必须指出:

程序从什么地方开始、什么时候结束、数据放在哪里、数据类型是什么、临时存贮区等,这需要一组另外的指令指示MASM工作,这种指令叫做伪指令。

三、为什么要学习汇编语言?

汇编程序产生的目标程序简短,占用的存贮空间小,执行速度快,适合于编写过程控制、多媒体接口、通讯程序。

有些无法用高级语言实现的操作,可以由汇编完成。

机器语言

汇编语言

高级语言

计算机能否直接识别

不能

不能

易用性

占据空间

执行速度

用途

特殊

加密/解密

系统核心

要求速度快,代码短的程序

直接操纵I/O

信息安全

一般性软件开发

1.2汇编源程序举例举例

一、完整源程序

为了对汇编语言有具体的理解,下面编写一个简单的程序:

.386

;堆栈段

STACKSEGMENTUSE16STACK;段名和组合类型

DB200DUP(0);堆栈的大小为200个字节

STACKENDS

;数据段

DATASEGMENTUSE16;段为16位段

SUMDW?

;SUM为字变量,初值不定

DATAENDS

;代码段

CODESEGMENTUSE16

ASSUMECS:

CODE,SS:

STACK,DS:

DATA,ES:

DATA

START:

MOVAX,DATA

MOVDS,AX;数据段首址送DS

MOVCX,50;循环计数器置初值

MOVAX,0;累加器置初值

MOVBX,1;1→BX

NEXT:

ADDAX,BX;(AX)+(BX)→AX

INCBX

INCBX;(BX)+2→BX

DECCX;(CX)-1→CX

JNENEXT;(CX)≠0转NEXT

MOVSUM,AX;(CX)=0累加结果→SUM

MOVAH,4CH

INT21H;返回DOS

CODEENDS

ENDSTART;源程序结束语句。

程序运行时,启动地址为START

二、分段

在该例中,一共定义了三个段:

堆栈段、数据段和代码段。

.386

;堆栈段

STACKSEGMENTUSE16STACK

STACKENDS

;数据段

DATASEGMENTUSE16

DATAENDS

;代码段

CODESEGMENTUSE16

ASSUMECS:

CODE,SS:

STACK,DS:

DATA,ES:

DATA

START:

MOVAX,DATA

MOVDS,AX

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

三、语句

该例中的源程序由一系列语句组成。

语句的一般格式为:

[名字]操作符[操作数或地址][;注释]

1.操作符可分为3类:

●指令

●伪指令

●宏

2.操作数也可分为3类:

●数值

●寄存器

●内存

3.常用指令:

MOVAX,0

ADDAX,BX

INCAX

DECCX

1.3汇编和调试过程

一、汇编过程

1.必备软件

●MASM.EXE

●LINK.EXE

●TD.EXE

●其他:

文本编辑器、DOSBOX等

2.命令

●MASMDEMO.ASM

汇编DEMO.ASM,应该生成MASM.OBJ

●LINKDEMO.OBJ

连接DEMO.OBJ,应该生成MASM.EXE

●TDDEMO.EXE

调试DEMO.EXE

二、调试程序TurboDebugger的使用

1.如图,TD的界面可分为:

●菜单

●代码操作区

●数据操作区

●寄存器操作区

●标记寄存器操作区

●堆栈段操作区

标记有:

●当前指令标记

●当前栈顶标记

2.TD的主要操作

●单步执行:

F7,F8

●设置(取消)断点:

F2

●直接执行:

F9

3.查看数据区

4.查看用户界面

5.修改数据、指令、寄存器内容

1.4Intel80x86微处理器简介

汇编语言是一种面向机器的低级语言,要学好它,必须对计算机硬件结构有一个初步了解。

一、微型计算机的组成

微型计算机主要由微处理器(CPU)、主存贮器(MM)、外部设备及互连部件组成。

如下图所示:

微处理器是计算机系统的核心。

存贮器:

存放程序以及数据、信息、中间结果。

外设:

I/O设备和大容量存贮器。

I/O设备包括显示器、打印机、键盘等。

二、Intel80x86内部结构

个人电脑的发展,经过了8086、80186、80286、80386等几代产品,Intel80x86是1985年推出的32位处理器,按功能可分为执行部件(EU)和总线接口部件(BIU)。

其中运算器执行所有的算术和逻辑运算指令;控制器负责计算机的控制工作(如取出指令、发出各种控制命令)。

其内部结构如下所示:

各部分的功能:

1.总线接口部件:

是CPU与整个计算机系统之间的高速接口

功能:

接受所有的总线操作请求,并按优先权进行选择,最大限度地利用本身的资源为这些请求服务。

2.执行部件:

寄存器组、标志寄存器、算逻部件、控制部件等组成

功能:

从译码指令队列中取出指令并且执行

(1)数据寄存器组(EAX,EBX,ECX,EDX)

●EAX(累加器)Accumulator

●EBX(基址寄存器)Base

●ECX(计数寄存器)Count

●EDX(数据寄存器)Data

作用:

用来保存操作数、运算结果或作指示器、变址寄存器,减少存取操作数所需要的访问总线和主存储器的时间,加快运行速度。

注意:

●它们既可作32位、16位寄存器,也可作8位寄存器使用。

●16位和8位的寄存器不能作指示器或变址寄存器。

(2)指示器变址寄存器组(ESI、EDI、ESP、EBP)

作用:

一般用来存放操作数的偏移地址,用作指示器或变址寄存器。

●ESI(SourceIndex),称为源变址寄址器;字符串指令源操作数的指示器;

●EDI(DestinationIndex),称为目的变址寄存器;字符串指令目的操作数的指示器

●ESP(StackPointer),称为堆栈指示器,存放的是当前堆栈段中栈顶的偏移地址;

●EBP(BasePointer),为对堆栈操作的基址寄存器;

3.指令预取部件和指令译码部件

指令预取部件:

通过总线接口部件,把将要执行的指令从主存中取出,送入指令排队机构中排队。

指令译码部件:

从指令预取部件中读出指令并译码,再送入译码指令队列排队供执行部件使用。

指令指示器:

它总是保存着下一条将要被CPU执行的指令的偏移地址,其值为该指令到所在段首址的字节距离。

4.分段部件和分页部件

(1)使用分段部件和分页部件实现虚拟存储空间映射到物理存储空间

程序员使用二维地址,即“段地址:

段内偏移地址”

段地址:

段内偏移地址一维的线性的地址

虚拟的线性的地址主存储器的物理地址

(2)段寄存器用来保存段首地址

●代码段寄存器CS

●堆栈段寄存器SS

●数据段寄存器DS

●附加段寄存器ES

●附加段寄存器FS

●附加段寄存器GS

 

5.指令执行过程:

(1)指令预取部件和指令译码部件

由EIP取得指令的偏移地址

EIP增量,形成下一条指令的地址

(2)分段部件和分页部件

由分段部件和分页部件,将“CS:

EIP”转换为指令的物理地址

(3)总线接口部件

从主存中取指令送到预取指令队列

(4)CPU按序从预取指令队列中取出指令送到指令译码部件。

(5)指令译码部件译码,执行部件执行指令;

(6)执行过程中若需要取主存操作数,从指令中取得操作数偏移地址

(7)分段部件和分页部件

由分段部件和分页部件,将“段首址:

偏移地址”转换为操作数的物理地址

(8)总线接口部件

从主存中取数据送到执行部件

三、80x86的三种工作方式

1.实方式(实际地址)

操作相当于一个可进行32位快速运算的8086(内部32位、外部总线16位数据、20位地址)

2.保护方式(虚地址)

是80386设计目标全部达到的工作方式,通过对程序使用的存储区采用分段、分页的存储管理机制,达到分级使用互不干扰的保护目的。

能为每个任务提供一台虚拟处理器,使每个任务单独执行,快速切换。

3.虚拟8086方式

保护方式下所提供的同时模拟多个8086处理器。

本章作业

一、1.2

二、利用寄存器,编程实现:

(12+34)*56–78,结果放在寄存器AX中

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1