第二微机中的微处理器_第1页
第二微机中的微处理器_第2页
第二微机中的微处理器_第3页
第二微机中的微处理器_第4页
第二微机中的微处理器_第5页
已阅读5页,还剩104页未读 继续免费阅读

下载本文档

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

文档简介

第二章微机中的微处理器引言微处理器是组成微计算机系统的核心部件。本章重点讲解8086微处理器,因为它体现了简单微处理器的一般原理,也是学习汇编语言程序设计的基础。主要讨论:微处理器的内部结构、与之配合的存储器组织、I/O组织和寻址方式。2010.2.251第二章微机中的微处理器2.18086微处理器的内部结构2.28086的寄存器结构2.38086的存储器组织2.38086的I/O组织2.58086的寻址方式2010.2.252微处理器的功能:MPU是组成计算机系统的核心部件,它具有运算和控制的功能。具体来讲,它有以下基本功能支持功能完善的指令系统,进行各种算术逻辑运算,通过程序完成复杂的科学计算。支持各种结构的程序的执行,如程序的分支、循环、嵌套、子程序的调用和返回、中断服务程序等。控制与存储器、外部设备等相连,组成完整的微机系统。2.1微处理器的内部结构2.1微处理器的一般结构2010.2.253微处理器的功能:具体来讲,它有以下基本功能①进行算术运算和逻辑运算;②接收存储器和I/O接口送来的数据和发送数据给存储器和I/O接口;③暂存少量数据;④对指令进行寄存、译码并执行指令所规定的操作;⑤提供整个系统所需的定时和控制信号;⑥响应I/O设备发出的中断请求。2.1微处理器的内部结构2.1微处理器的一般结构2010.2.254微处理器的功能:从程序设计的角度考虑,CPU必须便于处理:①赋值和算术表达式②无条件转移③条件转移以及关系和逻辑表达式④循环⑤数组和其它数据结构⑥子程序⑦输入/输出2.1微处理器的内部结构2010.2.255CPU的实际工作就是执行每一条指令。执行每一条指令都可分为三个阶段,即:

1.取指令2.分析指令3.执行指令2.1微处理器的内部结构取指令:从存储器中读出现行指令,把指令送入CPU中。分析指令:对指令进行译码,分析其指令性质。如指令要求操作数,则寻找操作数地址。

执行指令:进行相应的操作。2010.2.2563.1.1微处理器的内部结构串行处理指令的执行过程:取指令—取操作数(如需要)—执行指令—写入存储器(如需要)。取指令1译码1取数据1执行1存结果1取指令2译码2执行2取指令1译码1取数据1执行1存结果1取指令2译码2执行2取指令3译码3执行3存结果3并行处理2010.2.257123456内部寄存器

IP

ES

SSDSCS总线控制逻辑EU控制器∑ALU标志寄存器AHALBHBLCHCLDHDLSPBPSIDI通用寄存器地址加法器指令队列执行单元(EU)总线接口单元(BIU)16位20位16位8位ALU数据总线数据总线8086总线2.18086微处理器的功能结构2010.2.258总线接口单元(BIU)总线接口单元由下列各部分组成:(1)4个段地址寄存器;CS——16位的代码段寄存器;DS——16位的数据段寄存器;ES——16位的扩展段寄存器;SS——16位的堆栈段寄存器;

(2)16位的指令指针寄存器IP;(3)6字节的指令队列寄存器;(4)20位的地址加法器;(5)完成与EU通讯的内部寄存器;(6)总线控制逻辑。取指令时:从存储器指定地址取出指令送入指令队列排队;执行指令时:根据EU命令对指定存储器单元或者I/O端口存取数据。2010.2.259执行单元(EU)执行单元由下列各部分组成:(1)算术逻辑运算单元(ALU);(2)标志寄存器(FR):(3)通用寄存器组-AX,BX,CX,DX,SP,BP,DI,SI;(4)EU控制器;(5)暂存器。工作:执行指令,进行全部的算术逻辑运算、完成偏移地址的计算,向BIU提供指令执行结果的数据和偏移地址,并对通用寄存器和标志寄存器进行管理。2010.2.25102.18086的内部结构指令和程序执行过程如下图:取指令1执行1取指令2取数据2执行2取指令3执行3BIUEU2010.2.25112.28086的寄存器结构

AXAHALBXBHBL数据寄存器

CXCHCL (8/16位)DXDHDL

通用寄存器

SP堆栈指针

BP基址指针地址指针/变址寄存器

SI源变址 (16位)

DI目的变址

CS代码段

DS数据段段寄存器

SS堆栈段 (16位)

ES附加段

专用寄存器

IP指令指针

控制寄存器

FLAG标志寄存器 (16位)

2010.2.25122.2.1通用寄存器组4个16位数据寄存器(存在于 EU中):包括AX,BX,CX,DX。主要功能:(见P14表2.1)

1.存放数据 2.存放地址每一个寄存器又可分为两个8位的数据寄存器:

AX---AHAL BX---BHBL CX---CHCL DX---DHDL16位数据寄存器可存放数据和地址,而8位寄存器只能存放数据2010.2.25132.2.1数据寄存器AX——累加器,使用频度最高,用于算术、逻辑运算,以及与外设传送信息等;累加器一般用来存放参加运算的数据和结果。尤其在乘、除法运算、I/O操作中有不可替代的作用。

乘法运算:存放结果 除法运算:存放商 I/O操作:AX(或AL)与I/O端口进行数据通信。2010.2.25142.2.1数据寄存器BX——基址寄存器基址寄存器可作数据寄存器还可放内存的逻辑偏移地址,而AX,CX,DX则不能。如: MOVAX,[BX]但是,如果写成: MOVAX,[CX]是错误的2010.2.25152.2.1数据寄存器CX——计数寄存器计数寄存器做数据寄存器还可以在循环操作中和移位操作中做计数器用。如: MOVCX,15(循环程序中);给cx赋值为15 …………. ………….

循环操作15次2010.2.25162.2.1数据寄存器DXDX做通用数据寄存器还在乘、除法运算、带符号数的扩展指令中有特殊用途。

2010.2.25172.2.1通用寄存器组地址指针和变址寄存器:变址寄存器,用于在某些间接寻址方式中存放段内偏移地址的全部或一部分:SI——源变址寄存器DI——目的变址寄存器串操作类指令中,SI和DI具有特别的功能指针寄存器用于寻址内存堆栈内的数据:SP——堆栈指针,指示栈顶的偏移地址。SP不能再用于其他目的,具有专用目的。BP——基址指针,用于在某些间接寻址方式中存放段内偏移地址的一部分。SP和BP寄存器与SS段寄存器联合使用以确定堆栈段中的存储单元地址。2010.2.2518BIU设有4个16位段寄存器(可见P18的2.2.3内容)2.2.2段寄存器组段寄存器用来存放段地址,cpu可通过4个段寄存器访问存储器中4个不同的段(每段64k)。

CS——代码段寄存器,存放代码段的段地址

SS——堆栈段寄存器,存放堆栈段的段地址

DS——数据段寄存器,存放数据段的段地址

ES——附加段寄存器,存放附加段的段地址2010.2.25192.2.3控制寄存器组指令指针寄存器IP:

保存下一条要执行的指令的偏移地址,它与代码段寄存器CS联用,确定下一条指令的物理地址。计算机通过CS:IP寄存器来控制指令序列的执行流程。IP寄存器是一个专用寄存器。2010.2.2520补充内容无符号数和有符号数原码、反吗、和补码2010.2.2521有符号数的表示方法二进制数分为:

无符号数 有符号数2010.2.2522有符号数的表示方法二进制数分为:无符号数和有符号数无符号数 :所有的二进制数位均为数值位。例如:10000111=135有符号数 :最高位为符号位,后面的所有位为数值位。例如:10000111=-72010.2.2523有符号数的表示方法无符号数 :所有的二进制数位均为数值位。例如:10000111=135有符号数 :最高位为符号位,后面的所有位为数值位。例如:10000111=-72010.2.2524有符号数的表示方法有符号数:+:用0表示(正数)-:用1表示(负数)用0表示“+”,用1表示“-”。这样的表示方法就是符号数字化。即用数字来表示正负数的符号。2010.2.2525有符号数的表示方法8位无符号数范围:所有的二进制数位均为数值位。

0≤X≤25500000000到111111118位有符号数的范围 :最高位为符号位,后面的所有位为数值位。 -128≤X≤127

10000000到011111112010.2.2526有符号数的表示方法有符号数的表示方法:

原码 反码 补码2010.2.2527有符号数的表示方法原码

正数的符号用“0”表示,负数的符号用“1”表示,绝对值的编码规则与无符号数编码规则相同。这样的表示方法称为原码表示法。 一个数X的原码记作[x]原

例如:用8位二进制表示: 19的原码是:[19]原=

00010011(最高位是符号位) -19的原码是:[-19]原=100100112010.2.2528

0

Xn-2Xn-3…X1X0x≥0

[x]原=

1Xn-2Xn-3…X1X0x≤0

1.原码[+0]原=00000000[-0]原=10000000[+1]原=00000001[-1]原=10000001[+127]原=01111111=28-1-1[-127]原=11111111=-(28-1-1)-2n-1~+(2n-1–1)-128~+127字长表示范围n8有符号数的表示方法2010.2.25292.反码★正数的反码:与原码相同;★负数的反码:原码的符号位不变,其它各位求反。

例如:用8位二进制表示: 19的反码是:[19]原=

00010011,[19]反=

01101100 -19的反码是:[-19]原=10010011,[-19]反=111011002010.2.25302.反码[+0]反=00000000[-0]反=11111111[+1]反=00000001[-1]反=11111110[+127]反=01111111[-127]反=10000000

-2n-1~+(2n-1–1)-128~+127字长表示范围n82010.2.25313.补码★正数的补码:与原码相同;★负数的补码:原码的符号位不变,其它各位求反加1。

例如:用8位二进制表示: 19的反码是:[19]原=

00010011,[19]反=

00010011

[19]补=

00010011 -19的反码是:[-19]原=10010011,[-19]反=11101100

[-19]补=111011012010.2.25323.补码-2n-1~+(2n-1–1)-27~+(27–1)字长表示范围n8[+0]补=00000000[-0]补=28–|-0|=00000000[+1]补=00000001[-1]补=28–|-1|=11111111[+127]补=01111111[-127]补=28–|-127|=100000012010.2.2533有符号数的表示方法一个有符号数X

X≥0

[x]原=[x]反=[x]补

X≤0

[x]反:[x]原符号位不变,其它各位求反 [x]补=[x]反+1练习2010.2.25343.补码例:73-2=73+(-2)=71 01001011(73)+ 11111110(-2)

101000111(71)在计算机中,加减法是用补码来运算的。补码加法,如果符号位有进位,必须舍弃

2010.2.25352.2.3控制寄存器组标志寄存器(FLAG):

状态标志——记录程序运行结果的状态信息,许多指令的执行都将相应地设置它。CFZFSFPFOFAF

控制标志——可由程序根据需要用指令设置,用于控制处理器执行指令的方式。DFIFTF2010.2.25362.2.3控制寄存器组标志寄存器(FLAG)D15D0OFDFIFTFSFZFAFPFCF进位标志奇偶标志辅助进位标志符号标志单步中断中断允许方向标志溢出标志1-有进、借位0-无进、借位1-低8位有偶数个10-低8位有奇数个11-低4位向高4位有进、借位0-低4位向高4位无进、借位1-结果为00-结果不为0零标志2010.2.2537进位标志CF:当运算结果的最高有效位有进位(加法)或借位(减法)时,进位标志置1,即CF=1;否则CF=0。(无符号数)标志寄存器(FLAG) 00111010 01111100 10110110+ 10101010 01111100

1 00100110+CF=0CF=13AH+7CH=B6HAAH+7CH=(1)26H2010.2.2538PF:奇偶标志位,如果操作结果的低8位含有偶数个1,则PF=1;否则CF=0。标志寄存器(FLAG) 01001000 01100010 10101010+001000110100010001010010000110010111010101011101+PF=1PF=048H+62H=AAH2344H+5219H=755DH2010.2.2539AF:辅助进位标志,如果在加法时D3

有进位或者减法时D3有借位,则AF=1,否则AF=0。标志寄存器(FLAG) 01001000 01100010 10101010+010011000001100101100101+AF=0AF=148H+62H=AAH4CH+19H=65H2010.2.2540ZF:零标志位,如果运算结果各位都是零,则ZF=1,否则ZF=0。标志寄存器(FLAG) 01001000 01100010 10101010+000110010001100100000000--ZF=0ZF=148H+62H=AAH19H-19H=00H2010.2.2541SF:符号标志位,它总是和结果的最高位相同。(字节操作时是D7,字操作时是D15)标志寄存器(FLAG) 01001000 01100010 10101010+SF=148H+62H=AAH001000110100010001010010000110010111010101011101+SF=02344H+5219H=755DH2010.2.2542溢出标志OF:若算术运算的结果有溢出,则OF=1;否则OF=0(有符号数)标志寄存器(FLAG)例如: 00111010 01111100 101101103AH+7CH=B6H,产生溢出:OF=1+OF=1 10101010 01111100

1 00100110AAH+7CH=(1)26H,没有溢出:OF=0+OF=02010.2.2543标志寄存器(FLAG)问题:什么是溢出?溢出和进位有什么区别?如何判断是否溢出?2010.2.2544处理器内部以补码表示有符号数。 8个二进制位能够表达的整数范围是:-128~+127

16位表达的范围是:-32768~+32767

标志寄存器(FLAG)什么是溢出?如果运算结果超出了可表达的范围,就是产生了溢出。有溢出,说明有符号数的运算结果不正确。2010.2.2545例:73+72=145>127[x]补=01001001(+73)+[y]补=01001000(+72)

10010001两个正数相加结果变成了负数?溢出:运算结果,超出了8位有符号数所能表示的范围。补码运算发生溢出情况:

1.同号数相加,可能溢出;2.异号数相减,可能溢出。2010.2.2546判断运算结果是否溢出有一个简单的规则:最高位溢出的判断标志寄存器(FLAG) 1+ 10 0+ 01 1- 00 0- 112010.2.2547溢出标志OF和进位标志CF是两个意义不同的标志。进位标志表示无符号数运算结果是否超出范围,运算结果仍然正确;溢出标志表示有符号数运算结果是否超出范围,运算结果已经不正确。标志寄存器(FLAG)溢出和进位有什么区别?2010.2.2548例1:3AH+7CH=B6H溢出和进位对比标志寄存器(FLAG) 001110103AH 011111007CH 10110110B6H+B6H=128

CF=0无符号数运算:58+124=182,范围内0~255,无进位有符号数运算:58+124=182,范围外-128~127,有溢出

001110103AH

011111007CH

10110110B6H+[B6H]补=-74

OF=1有符号数最高位是符号位2010.2.2549溢出和进位对比标志寄存器(FLAG)例2:AAH+7CH=(1)26H 10101010AAH 011111007CH

10010011026H+CF=1,(1)26H=294无符号数运算:170+124=294,范围外0~255,有进位有符号数运算:-86+124=28,范围内-128~127,无溢出OF=0

10101010AAH

011111007CH

1

0010011026H+训练2010.2.2550

处理器对两个操作数进行运算时,按照无符号数求得结果,并相应设置进位标志CF;同时,根据是否超出有符号数的范围设置溢出标志OF。如何运用溢出和进位标志寄存器(FLAG)应该利用哪个标志,则由程序员来决定。 无符号数运算,影响进位; 有符号数运算,则影响溢出位。2010.2.2551可用指令设置。字符串操作时,受它的控制。当DF=0时,执行串操作指令,变址寄存器自动递增;当DF=1时,则变址寄存器地址自动递减。即该位可控制变址寄存器的地址朝增大的方向或减小的方向改变。DF:方向标志位标志寄存器(FLAG)2010.2.2552可用指令设置当IF=1时,CPU可响应可屏蔽中断请求;当IF=0时,CPU不响应可屏蔽中断请求。IF:中断允许标志标志寄存器(FLAG)2010.2.2553若TF=1,则CPU处于单步执行指令工作方式。每执行一条指令就会自动产生一次类型1的内部中断。在调试程序的过程中,每执行一条指令,就利用这种中断,来显示所有寄存器的当前值和将要执行的下一条指令。一般情况下,TF=0。只有在调试程序时,可能会用到单步执行时,才设置TF=1。TF:陷阱标志位标志寄存器(FLAG)2010.2.2554计数制:指用一组固定的数字符号和统一的规则来表示数的方法。基数:各种进制中数字符号的个数。权:在位置记数法中,对每一个数位赋以不同的位值。2.38086的存储器组织2010.2.2555各种数制2.38086的存储器组织十进制二进制十六进制数码0~90,10~9,A~F基(或模)10216进位原则逢十进一逢二进一逢十六进一位权值10i2i16i数制后缀符号D或者省略BH2010.2.2556微计算机的硬件结构(冯.诺依曼结构)

从功能或逻辑的角度,微型计算机的硬件由运算器、控制器、存储器、输入设备、输出设备五大部分组成。

运算器控制器MPU存储器输出设备I/O接口输入设备A.BUSD.BUSC.BUS2.38086的存储器组织2010.2.25572.38086的存储器组织2.3.1存储器地址空间和数据存储格式*********B00000H00001H00002H00003HFFFFDH…………..FFFFEHFFFFFH十六进制地址存储器存储器的地址8086的存储器是以字节(8位)为单位组织的。8086cpu具有20条地址总线,可寻址的存储器地址空间容量为220B,地址(1MB)。20条地址总线,16条数据总线2010.2.25582.38086的存储器组织2.3.1存储器地址空间和数据存储格式*********B00000H00001H00002H00003HFFFFDH…………..FFFFEHFFFFFH十六进制地址存储器存储器的地址每个存储单元都有一个唯一的地址编号—存储器地址其范围是0~220-1,(用十六进制表示为

00000H~FFFFFH),每个存储单元存放一个字节的内容(********B,如10001110B)2010.2.25592.38086的存储器组织2.3.1存储器地址空间和数据存储格式两个连续的字节,为一个字:低地址对应低字节,高地址对应高字节(小端方式)。字的地址指低字节的地址。([00004H])=1122H([00001H])=4455H([00003H])=2233H23H00000H55H00001H44H00002H33H00003H22H00004H00010001B00005H2010.2.25602.38086的存储器组织2.3.1存储器地址空间和数据存储格式字的地址为偶地址,称字的存储是对准的,访问时只需一个总线周期。字的地址为奇地址,称字的存储是未对准的,访问时要两个总线周期(CPU自动完成)。2010.2.25612.38086的存储器组织2.3.2存储器分段管理和物理地址的形成8086CPU有20条地址线,物理地址范围从00000H~FFFFFH。最大可寻址空间为220=1MB,

*********B00000H00001H00002H00003HFFFFDH…………..FFFFEHFFFFFH十六进制地址存储器1M个内存单元2010.2.25622.38086的存储器组织2.3.2存储器分段管理和物理地址的形成提供偏移地址或偏移地址的一部分的寄存器BX、IP、SP、BP、SI和DI及ALU都是16位,0000H~FFFFH,其寻址范围是64KB。*********B0000H0001H0002H0003HFFFDH…………..FFFEHFFFFH十六进制地址存储器64K个内存单元8086CPU采用地址分段方法,将寻址范围扩大到1MB。2010.2.25632.38086的存储器组织2.3.2存储器分段管理和物理地址的形成8086CPU将1MB空间分成许多逻辑段(Segment),每个段最大限制为64KB,段地址的低4位为0000B,即****0H。00000H00001H00002H00003H0FFFDH0FFFEH0FFFFH………一个逻辑段,共64K个单元00010H00011H00012H00013H1000DH1000EH1000FH………下一个逻辑段,共64K个单元2010.2.25642.38086的存储器组织00000H00010H00020H0FFFFH………存储器………………………1000FH………1001FH段0段1段22010.2.25652.38086的存储器组织2.3.2存储器分段管理和物理地址的形成8086对逻辑段的要求是:

段地址低4位均为0,每段最大不超过64KB。每个段不要求必须是64KB,段与段可以重叠。1MB空间最多能分成多少个段?

每隔64K个存储单元开始一个段,所以1MB最少有:

220÷216=16个段每隔16个存储单元就可以开始一个段,所以1MB最多有:

220÷16=216=64K个段1MB空间最少能分成多少个段?2010.2.2566基本概念物理地址起始地址段地址偏移地址逻辑地址2.3.2存储器分段管理和物理地址的形成2.38086的存储器组织2010.2.25672.3.2存储器分段管理和物理地址的形成2.38086的存储器组织00000H00001H00002H00003HFFFFDH…………..FFFFEHFFFFFH十六进制地址存储器物理地址存储器有1M个内存单元,每个内存单元都有自己的地址编码,这个编码在所有的内存单元中是唯一的,这些地址编码就是存储单元的物理地址。其范围是00000H~FFFFFH。物理地址:存储单元的实际地址编码。2010.2.25682.3.2存储器分段管理和物理地址的形成2.38086的存储器组织00000H00001H00002H00003HFFFFDH…………..FFFFEHFFFFFH十六进制地址存储器起始地址在存储器中,每个逻辑段的首地址就是起始地址,起始地址是个物理地址,20位。如右图:起始地址:00000H2010.2.25692.3.2存储器分段管理和物理地址的形成2.38086的存储器组织段地址一个段的起始地址(物理地址)的高16位就是该段的段地址。00010H00011H00012H00013H1000DH1000EH1000FH………一个逻辑段,共64K个单元如右图:此逻辑段起始地址:00010H段地址:0001H段地址由段寄存器(CS,DS,SS,ES)提供2010.2.25702.3.2存储器分段管理和物理地址的形成2.38086的存储器组织偏移地址在一个段内,相对于段起始地址的偏移量,就是段内偏移地址。其范围:0000H~FFFFH,都是16位。00010H00011H00012H00013H1000DH1000EH1000FH………物理地址偏移地址0000H0001H0002H0003HFFFDHFFFEHFFFFH如右图(00010H~1000FH)红色内存单元偏移地址:0000H黄色内存单元偏移地址:0001H最后一个内存单元偏移地址:FFFFH2010.2.25712.3.2存储器分段管理和物理地址的形成2.38086的存储器组织00010H00011H00012H00013H1000DH1000EH1000FH………物理地址偏移地址0000H0001H0002H0003HFFFDHFFFEHFFFFH逻辑地址其格式为段地址:偏移地址。如右图:黄色内存单元的逻辑地址为:0001:0003段地址偏移地址2010.2.25722.38086的存储器组织2.3.2存储器分段管理和物理地址的形成对应每个物理存储单元都有一个唯一的20位编号,即物理地址。00000H~FFFFFH物理地址的形成:

段地址*16+偏移地址=20位物理地址

第四个内存单元的物理地址:(逻辑地址为0001:0003)

物理地址=0001H*10H+0003H=00013H2010.2.2573123456内部寄存器

IP

ES

SSDSCS总线控制电路EU控制器∑ALU标志寄存器AHALBHBLCHCLDHDLSPBPSIDI通用寄存器地址加法器指令队列执行单元(EU)总线接口单元(BIU)16位20位16位8位ALU数据总线数据总线8086总线物理地址的形成过程2010.2.25742.38086的存储器组织2.3.3信息的分段存储与段寄存器的关系存储器中的信息可分为:程序代码数据计算机的状态2010.2.25752.38086的存储器组织2.3.3信息的分段存储与段寄存器的关系存储器可分为:程序区、数据区、堆栈区。程序区:存储程序的指令代码数据区:存储原始数据、中间数据和最后结果堆栈区:存储需要压入堆栈的数据或状态信息。2010.2.25762.38086的存储器组织2.3.3信息的分段存储与段寄存器的关系段寄存器的分工:代码段寄存器CS:划定并控制着程序区。数据段寄存器DS或附加段寄存器ES:控制着数据区。堆栈段寄存器SS:对应着堆栈存储区。2010.2.25772.38086的存储器组织2.3.3信息的分段存储与段寄存器的关系一个完整的程序分为:代码段、数据段、堆栈段、附加段当调用程序时,就把: 代码段调入程序区, 数据段和附加段调入数据区, 堆栈段调入堆栈区。 代码段:存放程序的指令序列 数据段:存放当前运行程序所用的数据 堆栈段:存放需要压栈的信息

附加段:附加的数据段,如需要则开辟附加段1、代码段、数据段、堆栈段和附加段对应的是程序;2、程序区、数据区、和堆栈区对应的是存储区;3、段寄存器:保存段的段地址2010.2.25782.38086的存储器组织2.3.3信息的分段存储与段寄存器的关系dataSEGMENT;数据段firstDB12h;调入数据区dataENDSstack1SEGMENTstack;堆栈段DW30DUP(0);调入堆栈区stack1ENDScodeSEGMENT;代码段ASSUMECS:code,DS:data,SS:stack1

start: MOVAX,data MOVDS,AX……

…….…...MOVAH,4ch INT21hcodeENDSENDstart;调入代码区2010.2.25792.38086的存储器组织2.3.3信息的分段存储与段寄存器的关系段寄存器

CS:存放代码段的段地址 DS:存放数据段的段地址 SS:存放堆栈段的段地址

ES:存放附加段的段地址2010.2.2580程序员如何分配各个逻辑段?2.38086的存储器组织2.3.3信息的分段存储与段寄存器的关系程序的指令序列必须安排在代码段;程序使用的堆栈一定在堆栈段;程序中的数据默认是安排在数据段,也经常安排在附加段,尤其是串操作的目的区必须是附加段。数据的存放比较灵活,实际上可以存放在任何一种逻辑段中。2010.2.25812.38086的存储器组织访问存储器类型默认段地址可指定段地址段内偏移地址来源取指令码CS无IP堆栈操作SS无SP字符串操作源地址DSCS,ES,SSSI字符串操作目的地址ES无DIBP用作基址寄存器SSCS,DS,ES依寻址方式求得有效地址EA一般数据存取DSCS,ES,SS依寻址方式求得有效地址EA下表列出了各类型访问存储器时使用的段寄存器和段内偏移地址的来源。2010.2.2582各个逻辑段独立示意图如右图:当前段可容纳64KB代码,64KB堆栈,128KB数据,即共256KB。2010.2.2583各个逻辑段重叠示意图段可以部分重叠,若不用附加段,则ES和DS重合。2010.2.2584微计算机的硬件结构(冯.诺依曼结构)

从功能或逻辑的角度,微型计算机的硬件由运算器、控制器、存储器、输入设备、输出设备五大部分组成。

运算器控制器MPU存储器输出设备I/O接口输入设备A.BUSD.BUSC.BUS2.58086的I/O组织2010.2.25852.58086的I/O组织

I/O接口与CPU之间的通信是利用称为I/O端口的寄存器来完成的。I/O端口I/O接口1I/O端口I/O接口2I/O端口I/O端口…....…....I/O端口I/O端口每个端口都是一个8位的寄存器(相当于内存单元)。系统为每个端口分配一个地址,各个端口有唯一的I/O地址与之对应,是单独编址的。2010.2.25862.58086的I/O组织

任何两个编号相邻的8位I/O端口可以组成一个16位I/O端口,类似于存储器的字。

8086CPU地址总线的低16位用来对8位I/O端口寻址,I/O地址空间为65535,即可访问65535个8位的I/O端口,寻址范围是0~64K。 I/O地址线和存储器地址线是共用的,但利用控制总线中的一些控制信号可以区分是I/O存取还是存储器存取。2010.2.25872.68086的寻址方式指令由操作码和操作数两部分组成:操作码:说明计算机要执行哪种操作,如传送、运算、移位、跳转等操作,它是指令中不可缺少的组成部分。操作码操作数操作数:指令执行的参与者,即各种操作的对象。有些指令不需要操作数,通常的指令都有一个或两个操作数,也有个别指令有3个甚至4个操作数。2010.2.25882.68086的寻址方式MOVdest,src ;dest←src;MOV指令的功能是将源操作数src;传送至目的操作数destMOVAL,05H ;AL←05HMOVBX,AX;BX←AXMOVAX,[SI] ;AX←DS:[SI]MOVAX,[BP+06H] ;AX←SS:[BP+06H]MOVAX,[BX+SI] ;AX←DS:[BX+SI]指令的助记符格式:

操作码操作数1,操作数2 ;注释2010.2.25892.68086的寻址方式操作数一般存在的地方:

1.指令中 ;MOVAX,0012H 2.cpu内部寄存器中 ;MOVBX,AX 2.存储器中 ;MOVAX,[0050]8086的寻址方式有:

立即数寻址方式寄存器寻址方式存储器寻址方式

寻址:寻找操作数的地址

寻址方式:寻找操作数地址的方法2010.2.25902.68086的寻址方式具体的寻址方式: 1.立即数寻址 2.寄存器寻址 2.直接寻址 4.寄存器间接寻址 5.寄存器相对寻址 6.基址变址寻址 7.基址变址且相对寻址2010.2.25911立即数寻址

指令中的操作数直接存放在指令中,紧跟在操作码之后(操作数作为指令的一部分存放在操作码之后的主存单元中)。可以是8位数i8(00H~FFH),可以是16位数i16(0000H~FFFFH)。立即数寻址方式常用来给寄存器赋值。MOVAL,05H ;AL←05HMOVAX,0102H ;AX←0102H2010.2.25922寄存器寻址MOV

AX,1234H;AX←1234HMOV

BX,AX

;BX←AX操作数存放在CPU的内部寄存器中8位寄存器R8:AH/AL/BH/BL/CH/CL/DH/DL16位寄存器R16:AX/BX/CX/DX/SI/DI/BP/SP4个段寄存器SEG:CS/DS/SS/ES2010.2.25933存储器寻址存储器寻址:操作数在存储器中。指令中给出操作数的主存地址信息(偏移地址,称之为有效地址EA),而段地址在默认的段寄存器中或用段超越前缀指定的段寄存器中。首先获取操作数的偏移地址EA

获取段地址通过计算,来获取操作数的物理地址

物理地址=段地址*16+EA2010.2.2594存储器寻址3直接寻址方式有效地址在指令中直接给出,默认的段地址在DS段寄存器。MOVAX,[2000H] ;AX←DS:[2000H];EA=2000H假如(DS)=3200H,EA=2000H操作数的物理地址=3200*10H+2000H=34000H2010.2.2595存储器寻址4寄存器间接寻址方式有效地址EA存放在基址寄存器BX,或变址寄存器SI、DI。段地址对应:BX/SI/DI寄存器默认是DSMOVAX,[BX]

;AX←DS:[BX] ;EA=(BX)假如(DS)=3200H,(BX)=2000H那么:EA=(BX)=2000H操作数的物理地址=3200*10H+2000H=34000H2010.2.2596存储器寻址5寄存器相对寻址方式

有效地址是寄存器内容与有符号8位或16位位移量之和,寄存器可以是BX或SI、DI。

有效地址=(BX)/(SI)/(DI)+8/1

温馨提示

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

评论

0/150

提交评论