学习机简介课件_第1页
学习机简介课件_第2页
学习机简介课件_第3页
学习机简介课件_第4页
学习机简介课件_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

学习机简介微型计算机结构汇编语言程序设计指令格式寻址方式指令系统第1节

微型计算机结构概念:微型计算机结构是指微型计算机主要部件的特性布局及连接,是程序设计者必须了解的硬件资源及其资源部件,如地址空间、寄存器组、寻址方式、指令系统等。典型的微型计算机结构包括微处理器、存储器、输入/输出三个主要部分,通过系统总线连接。

1.Intel8086处理器的结构

2.寄存器结构

8086微处理器内部共有14个16位的寄存器,所有寄存器可分为四组:数据寄存器AX、BX、CX、DX,指针及变址寄存器SP、BP、SI、DI,段寄存器CS、DS、SS、ES与控制寄存器IP、FLAGS。

(1)数据寄存器

数据寄存器是用来寄存运算中的数据。它包括:

a.AX(Accumulator)是累加器,是算术运算中主要寄存器。

b.BX(Base),是基址寄存器,常对应于数据段,用于间接寻址及基址变址寻址。

c.CX(Count),是计数寄存器,在循环指令和串处理指令中用作隐含的计数器,移位指令中使用CL作为计数器。

d.DX(Data),是数据寄存器,在双字运算时与AX组合,作为AX的扩展,存放高位字,AX存放低位字。

(2)指针及变址寄存器

指针及变址寄存器SP、BP、SI、DI,除SP外,可像数据寄存器一样,作为存放操作数的通用寄存器,更经常、更主要的用途是存放地址,提供寻址时的偏移地址。

a.SP(StackPointer)是堆栈指针寄存器,用来指示栈顶的偏移地址。

b.BP(BasePointer)是基址指针寄存器,对应于堆栈段。

c.SI(SourceIndex)和DI(DestinationIndex),是源变址寄存器和目的的变址寄存器,用来形成间接地址,实现基址加变址寻址。

(3)段寄存器

段寄存器是用来存放当前段的段地址。

a.CS(CodeSegment),代码段寄存器,用于存入代码段的段地址。

b.DS(DataSegment),数据段寄存器,用于存放数据段的段地址。

c.SS(StackSegment),堆栈段寄存器,用于存放堆栈段的段地址。

d.ES(ExtraSegment),附加数据段寄存器,用于存放附加数据段的段地址。

(4)控制寄存器

控制寄存器用以存放与程序执行有关的信息,寄存的内容将影响或改变程序的执行流程。

a.IP(InstructionPointer),指令指针寄存器,又称程序计数器,是一个专用寄存器,用于存放当前要执行指令的地址。

b.OF(OverflowFlag),溢出标志位。

c.SF(SignFlag),符号标志位。

d.ZF(ZeroFlag),零标志位。

e.AF(AuxiliartyFlag),辅助进位标志位。

f.PF(ParityFlag),奇偶标志位。

g.CF(CarryFlag),进位标志位。

h.DF(DirectionFlag),方向标志位。

i.IF(InterruptFlag),中断标志位。

j.TF(TrapFlag),陷阱标志位。

3.内存组织

(1).内存地址

内存的基本单元为8位组成的一个字节,每个内存单元分配了一个唯一地址,从0开始编址。1MB内存地址从00000H到FFFFFH。

8086微机字长为16位,16位称为1个字(Word),字被存储在连续2个字节中。双字(DoubleWord)被存储在连续4个字节中,如用寄存器存放,则需一对寄存器。如DX:AX。

(2)段式存储管理

8086微外理器内部的EU部件使用16位地址,只能进行16位运算,为解决与存储器20位地址的矛盾,对存储空间引入逻辑地址,分成许多逻辑段,采用段式存储管理。

采用段式存储管理,段地址与偏移地址都可直接放在16位寄存器中,段地址放段寄存器中,偏移地址可以放通用寄存器中,虽然指令使用16位地址,但寻址范围达到1M字节。

(3)逻辑地址与物理地址

逻辑地址是编写程序时使用的地址,由段地址与偏移地址构成。

逻辑地址常用格式“段地址:偏移地址”表示。

物理地址是内存的实际20位地址,是存储空间的绝对地址,和存储单元一一对应,采用5位十六进制数表示。

物理地址只有被转换成物理地址才能访问内存。

物理地址=段地址X16+偏移地址。

也就是说,将段地址左移4位,加上偏移地址,即可得到物理地址。转换工作由总线接口部件的地址加法器完成。

(4)I/O空间是微处理器另一块独立的64KB大小的物理地址空间,用地址总线的低16位作为8位I/O端口的寻址线。

4.堆栈技术

(1)堆栈描述

堆栈是内存中一块特定区域,是一片先进后出、后进先出的存储空间,堆栈段中数据由高地址到低地址顺序存放。

堆栈一端是固定的,另一端是浮动的,固定的一端称为堆栈栈底,浮动的一端称为堆栈栈顶,是堆栈的操作端。由堆栈段寄存器SS指示堆栈段地址,堆栈栈底及堆栈长度由椎栈指针寄存器SP的初值指出,堆栈栈顶也由堆栈指针寄存器SP的值指出。

堆栈为空时,栈顶与栈底相同。

(2)堆栈操作

堆栈操作遵循“先进后出、后进先出”的原则,包括压入操作(PUSH)和弹出操作(POP)。堆栈操作过程中,SP的值不断变化,但总是指向堆栈栈顶位置。

堆栈操作总是对字数据进行。

压入操作用于数据进栈,保存信息。

弹出操作用于数据出栈,恢复信息。

堆栈操作有专用的指令完成,也可以由子程序调用指令实现。

第2节

汇编语言程序设计

1.开发环境

典型的汇编语言开发环境包括编辑程序、汇编程序、连接程序及调试程序。

a.编辑程序用于建立汇编程序,可用任何字处理软件完成。

b.汇编程序用于将汇编程序汇编成目标代码程序,常用的有Mricrosoft公司的MASM5.0与MASM6.0,目标代码程序文件扩展名为OBJ。

c.连接程序用于将目标代码程序连接装配成可执行程序,目标代码程序既可以是汇编程序产生的,也可以是其他编译程序产生的,常用的是Microsoft公司的LINK程序。执行程序文件扩展名为EXE。

d.调试程序用于跟踪程序的执行情况,查找程序中的逻辑错误,Microsoft公司的DEBUG、CodeView与Borland公司的TurboAssembler都是不错的调度工具。

2.一般过程

进行程序设计实际要做两件事,一是对数据进行描述,二是对操作进行描述。

程序设计的过程应严格遵循软件工程的规范,汇编语言程序设计的一般过程可简化为分析问题、设计算法、编制程序、分析结果四步,如下图所示:

3.基本方法

程序设计的基本方法是结构化程序设计方法。

结构化程序由顺序结构、选择结构、循环结构三种基本结构组成。

结构化程序设计方法的基本思想是“自顶向下、逐步求精”。在设计阶段,合理分解;在编码阶段,读者至上。

结构化程序设计方法就是模块化程序设计。

第3节

指令格式1.机器语言指令格式

机器语言中使用二进制代码指令,为了满足不同的功能要求,减少指令长度,提高指令的使用效率,8086指令系统采用1~6个字节组成的变字长指令格式,由操作码、寻址方式、操作数三部分组成,如下图所示:

通常指令的第1字节为操作码,规定指令的操作类型。第2字节为操作数,规定操作数的寻址方式。第3~6字节是可变字节,指出存储器操作数地址的位移量或产即数。

W位,指示操作数的类型。

D位,指示操作数的传送方向。

REG字段,指定一个寄存器操作数,见下表。它作为源操作数还是作为目的操作数同D位规定。

MOD字段,用来指定另一个操作数的寻址方式。

R/M字段,受MOD字段控制。

2.汇编语言指令格式

汇编语言以机器语言指令作为基础,使用与机器语言指令基本相对应的符号助记指令。

符号助记指令由操作助记符和若干操作数组成。

操作数分为数据操作数与转移地址操作数两大类。

数据操作数包括立即操作数、寄存器操作数、存储器操作数、I/O操作数四种。数据操作数通常有两个,一个为源操作数,一个为目的操作数。

汇编语言指令的基本格式:

a.操作助记符

b.目的操作数,源操作数

第4节

寻址方式概念:寻址方式给出操作数或操作数地址的计算方法,对转移指令形成程序的转移地址。根据寻址方式计算出操作数地址存取操作数的过程称为寻址操作。

1.数据寻址方式

数据寻址包括立即寻址、寄存器寻址、直接寻址、寄存器间接寻址、寄存器相对寻址、基址变址寻址、基址变址相对寻址等方式。

(1)立即寻址

立即寻址指的是操作数直接包括在指令中。

这样的操作数称为立即数,可以是8位的,也可以是16位的。

(2)寄存器寻址

寄存器寻址指的是操作数放在指令指定的寄存中。

(3)直接寻址

直接寻址指的是操作数的偏移地址直接出现在指令中,书写时加上中括号以表示是偏移地址。默认段寄存器DS,允许段超越。

(4)寄存器间接寻址

寄存器间接寻址指的是操作数的偏移地址在基址寄存器BX、BP,或变址寄存器SI、DI中。使用BX、SI、DI,默认段寄存器DS;使用BP,默认段寄存器SS。允许段超越。

(5)寄存器相对寻址

寄存器相对寻址指的是操作数的偏移地址是一个基址寄存器或变址寄存器的内容加上指令中给出的8位或16位位移量。

(6)基址变址寻址

基址变址寻址指的是操作数的偏移地址是一个基址寄存器内容加上一个变址寄存器的内容。

(7)基址变址相对寻址

基址变址相对寻址指的是操作数的偏移

第5节

指令系统每台计算机都拥用自己的指令系统,指令系统是程序的底层支撑。不同类型计算机提供的指令数量、格式、功能不尽相同。

大多数指令必须遵守以下基本规则:

(1)目的操作数与源操作数的类型必须匹配,一般8位对8位,16位对16位。

(2)目的操作数不能立即操作数

(3)目的操作数与源操作数不能同时为存储器操作数。串操作指令除外

(4)目的操作数与源操作数不能同时为段寄存器。

1.通用数据传送指令

(1)数据传送指令MOV

格式:MOVDOPD,SOPD

功能:将一个字节或字操作数从SOPD传送至DOPD。

说明:

a.CS不能作为目的的操作数,立即数不能直接传送到段寄存器中,SOPD、DOPD不能同时为存储器操作数,不能在段寄存器之间直接传送。

b.不影响标志寄存器。

(2)数据交换指令XCHG

格式:XCHGDOPD,SOPD

功能:交换DOPD与SOPD内容

说明:不影响标志寄存器

(3)查表转换指令XLAT

格式:XLAT[OPD]

功能:从BX作为表头的表中找到序号为AL的字节数据送AL中,[BX+AL]--AL。

说明:XLAT指令可以很方便地将一种代码转换成另一种代码。

(4)堆栈操作指令PUSH和POP

格式:PUSHSOPD

POPDOPD

功能:对字数据进行操作,PUSH指令将数据压入堆栈,POP指令将数据弹出堆栈。

说明:

(1)操作数可以是立即数以外的寻址方式,POP指令不可以使用CS,不影响标志位。

(2)压入时SP-2-SP,弹出时SP+2--SP。

(3)PUSH指令和POP指令一般要成对使用,进栈必须出栈,堆栈指针必须保持平衡与稳定,这是使用堆栈的一个重要原则。

2.地址传送指令

(1)传送偏移地址指令LEA

格式:LEAREG16,MEM

功能:将MEM的偏移地址传送至指定寄存器中。

说明:该指令通常用来设置偏移地址初值,以便从此地址开始存取多个数据。

(2)传送偏移地址与数据段地址指令LDS

格式:LDSREG16,MEM32

功能:将MEM32中低字内容送REG16,高字内容送DS。

说明:

a.MEM32存放的双字一般是某个程序或变量的逻辑地址。

b.该指令为访问非当前数据段作地址准备,常指定SI寄存器。

(3)传送偏移地址与数据段地址指令LES

格式:LESREG16,MEM32

功能:与LDS指令完全类似,只是将高字内容送ES。

说明:该指令为访问附加数据段作地址并准备。

3.标志传送指令

(1)取标志指令LAHF

格式:LAHF

功能:将FLAGS的低字节送AH,即取SF、ZF、AF、PF及CF等5个状态位送入AH对应位中。

(2)置标志指令SAHF

格式:SAHF

功能:将AH内容送FLAGS的低字节,即以AH对应内容修改SF、ZF、AF、PF及CF等5个状态位。

(3)标志压入堆栈指令PUSHF

格式:PUSHF

功能:将FLAGS内容压入堆栈,该指令不影响状态标志位。

(4)标志弹出堆栈指令POPF

格式:POPF

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论