大工13春汇编语言程序设计辅导资料三
大工13春汇编语言程序设计辅导资料三主 题:第二章80x86计算机组织(第3-4节)
学习时间:2013年4月15日-4月21日
内 容:
第二章概述
这周我们将学习第二章中的第3-4节。这两节主要介绍80x86计算机组织中寄存器组部分和外部设备部分。本周学习要了解通用寄存器和专用寄存器,熟悉寄存器间的默认分配关系,了解外部设备工作端口寄存器和I/O地址空间。
第三节CPU工作寄存器组
1、寄存器组分类
1)寄存器概念:寄存器是中央处理器内的组成部件。寄存器是存储容量有限的高速存储部件,它们可以用来暂存指令、数据和地址
2)8086/8088寄存器组分类:
数据寄存器 AX、BX、CX、DX
指针及变址寄存器:SP、BP、SI、DI
段寄存器:CS、DS、ES、SS
控制寄存器:IP、FLAGS
说明:AX又称累加器专用寄存器,因为累加器默认的寄存器就是它,CX又是计数器寄存器,很多指令都利用CX来保存程序执行次数的计数值。4个通用寄存器可以拆分开来使用,比如BX可以分为高低8位来使用,分别记做AH和AL。AX和DX又可以联合使用用于存放32位数据,其中AX存放低16位数据,高16位数据存放于DX寄存器中。
通过前两节的学习,我们已经知道了存储器的分段方式,对于不同的分段,我们使用不同的段寄存器来存储段地址,堆栈段指认SS,数据段指认DS和ES,代码段指认CS。对于80386以上的机器还有FS和GS数据段寄存器。指针及变址寄存器用于和段寄存器联合使用寻址。在串处理指令中,数据段DS和SI用来存储源数据区,附加段ES和DS用来存放目的数据区。
专用寄存器IP/FLAGS,一般是不允许被修改的,不为用户所使用,IP称为程序指针寄存器,FLAGS称为标志状态寄存器,需要了解其中各标志位代表的状态
OF DF IF TF SF ZFAFPFCF
15 14 13 1211 10 9 8 7 6 5 4 3 2 1 0
OF溢出位 1为溢出
DF方向位 1为减量方向
IF 中段 1为允许中断
SF 符号 1 为负
ZF 零 1为零
AF 辅助进位 1为是有进位
PF 奇偶 1为偶
CF 进位 1为有进位
3)存储器与寄存器的比较
在存储器里以字节为单位存储信息,为了正确地存放或取得信息,每一个字节单元给以一个唯一的存储器地址,称为物理地址。地址从0开始编号,顺序地每次加1,因此存储器的物理地址空间是呈线性增长的。
寄存器是存储器的一部分,寄存器是要占用存储器空间的,一般寄存器可以做存储器来用,但特殊功能寄存器不同,比如控制中断的寄存器就不能赋值,它可能会影响你的程序的运行。
4)80x86的寄存器组
与8086/8088寄存器组比较,80x86寄存器最大的特点就是从16位扩展到32位了,AX扩展到EAX,BX扩展到EBX等等,这样的变化也为程序处理带来很大便利,从而使计算机运行速度大大提高
IP扩展到EIP,FLAGS扩展到EFLAGS,从而标志寄存器内容也更多,除了FLAGS需要熟悉的标志位内容外,扩展部分标志位代表的意义了解即可
2、保护模式下的80x86
1)保护模式支持的功能:多任务处理功能、支持虚拟存储器特性
2)保护模式下的寻址:保护模式下的逻辑地址已经不是实模式下的真实的存储器物理地址寻址了,而是在虚拟存储器中通过逻辑地址来寻址,除了涉及存储器分段内容外还要涉及到存储器分页分块的知识,这部分内容大家了解下即可
第四节外部设备
外设与主机的通信
1)外部设备与主机的通信是通过外设接口进行的,每个接口分配3类寄存器,包括数据寄存器、状态寄存器、命令寄存器。数据寄存器用于具体的通信内容的交流,状态寄存器用于存放外设的工作状态,主机只有在外设空闲的时候才能与其通信,命令寄存器用于主机对外设的控制等。例如CPU要启动磁盘,就要对磁盘发送启动命令,而这条指令就存放在命令寄存器中
说明:各种外部设备接口都有以上三种类型的寄存器,但是每个接口分配的寄存器的数量是不定的,有可能外设有多个数据寄存器、状态寄存器、命令寄存器,也有可能外设只需要一个数据和命令寄存器,并且把它们合二为一成为一类寄存器。
2)端口和端口号:端口就是外设中的每个寄存器的地址,我们称一个外设寄存器的地址为端口或端口号,端口号用8位或16位或32位2二进制代码表示
3)I/O地址空间:计算机外设各种端号合在一起就形成了独立于存储器的I/O地址空间,以便于对外部设备的管理。I/O地址空间可达64KB,端口地址范围是0000-FFFFH,地址用16位二进制代码表示。
本周要求掌握的内容如下:
基本概念:通用和专用寄存器、标示寄存器各标志位意义、端口、I/O地址空间、保护模式寻址。
基本理论:通用寄存器的拆分和合并用法,AX和CX的常用方式,段寄存器和指针及编址寄存器的默认联用关系,标志寄存器各标志位的意义。
练习:
1、如果一个程序执行前(CS)=0A7F0H,(IP)=2B40H,试问该程序的第一个字的物理地址是多少?
物理地址=16位段地址 16D+16偏移地址=0A7F0H 16D+2B40H=0AAA40H
2、字符串就是一串字符组成的数据,是一种数据类型。那么在80x86中,在处理字符串数据时请问源数据和目的数据地址(段地址和偏移地址)分别存放在哪些寄存器中?
在串处理指令中,数据段DS和SI用来存储源数据区,附加段ES和DS用来存放目的数据区。
3、8086微处理器由哪几部分组成?各部分的功能是什么?
8086/8088微处理器由两大部分组成:总线接口单元BIU和执行单元EU
1)BIU:负责与存储器接口即CPU与存储器之间的信息传递。即:BIU从内存的指定部分取出指令,送至指令队列排队(从内存的指定部分取出执行指令所需的操作数,送至EU部分)
2)EU:负责指令的执行
4.简述8086CPU的寄存器组织。
8086/8088CPU的寄存器是由通用寄存器、控制寄存器和段寄存器组成。
页:
[1]