您的位置:首页 > 其它

汇编语言程序设计04-07课程笔记

2013-07-02 23:18 204 查看
------滴:4课---------第二章:8086cpu的内部结构

1.微处理器总线结构分为,内部结构和外部结构。

2.8086cpu芯片有40个管脚,他通过这些引脚与外部逻辑连接完成信息交换。

这些引脚就是微处理器及的总线,有一下功能:

1.与存储器之间交换信息

2.与Io设备交换信息:中间通过io电路。xx卡。

3.能输入输出信号

3.总线:地址,控制,数据总线;

---------------------

1.地址总线:单项的;能访问到最大的地址空间与cpu地址线有关

2.数据总线:双向的;能传输多大的数据,与cpu和存储器或io设备一次能交换

数据的位数有关;即带宽

3.控制总线:大部分单项,有一些双向

-------------------

微处理器的内部结构:cpu

1.运算功能

2.接受和发送数据的能力

3.内部可以暂存少量的数据:寄存器

4.能对指令进行寄存,译码并执行的操作

5.能提供整个系统所需的定时和控制信号

6.能响应io设备的中断请求

二。cpu内部结构图

1.控制器:程序计数器,指令寄存器,指令译码器,控制逻辑部件,堆栈指示

器,状体寄存器 6部分组成。

2.运算器alu

3.io控制逻辑

4.工作寄存器:地址寄存器,数据寄存器

三。

1.程序计数器:用于保存下一条要执行的指令地址。也叫指令地址计数器

2.指令寄存器:从外部寄存器中读入当前要执行的指令

3.指令译码器:对上面的指令进行译码分析,从而cpu知道怎么操作

4.控制逻辑部件:发送控制信号:节拍脉冲和电位发送

5.处理器状体字:暂存处理器当前的状态;结果正还是负?是否益处?是否进

位或借位,是否结果为0等标志。 每个位表示一个标志。我们可以去测这些状

态。

6.堆栈指示器:对堆栈操作的时候提供地址的。

四。I/O控制逻辑:功能:输入输出操作。

五。cpu程序执行过程:

1.取指令1,执行1,去指令2,执行2,取指令3。。。。 cpu的工作效率很低

为了克服以上缺点:

8086的取指令和执行指令是并行的。采用指令队列的方式。

--------- biu总线接口单元 eu执行单元

biu负责读指令到队列,知道满了为止就等待,eu负责从队列中取指令,出发队

列为空。

========第5课=======微处理器的寄存器组织=============

一。这课这个知识点,是学习汇编语言程序设计的关键

1.8086、8088cpu内部共有14个16位寄存器,用于提供运算,控制指令执行和对

指令及操作数的寻址。存的地址,存的数据,存的控制数据。

掌握每个寄存器的作用以及用法,是学好汇编语言程序设计的基础。

2.寄存器分为:通用寄存器8个,内部寄存器5=4+1指针,alu的标志寄存器=16

个。

14个寄存器按其用途可分为3大类:通用寄存器8、段寄存器4、控制寄存器2:

指针、标志

一。8个通用寄存器:

1.数据寄存器 4个:

2.地址指针2和变址寄存器2 4个

二。4个数据寄存器 H 高位,L低位。我们可以把高8位低8位分开来存储。

AH AL AX -- 累加器

BH BL BX --基地址寄存器

CH CL CX --计数器:循环次数

DH DL DX --数据寄存器

8 8位 16位

编程的时候,如果要存储一个8位的数据,那么我们可以选择这8个名称来存储

;如果要存储一个16位的数据,那么可以通过这4个名称的寄存器来存储数据。

三。4个地址寄存器:地址指针和变址寄存器

SP --堆栈指针寄存器

BP --基址指针寄存器

SI --源变址寄存器

DI --目的变址寄存器

题目:

在存储器地址为2000H开始的以下连续的存储单元中,存储着100个字节的无符

号二进制数,求这100个字节数的累加和(不考虑益处),并将和存放在AL中?

解题思想:

用源变址寄存器SI指向存储器首地址,要累加的字节数存放在计数器CX中,每

一次的累加和都放到AL中,开始AL清零。然后从SI作为地址的单元中取出一个

字节数与AL原来的内容相加,SI的内容曾1,循环执行CX次。

mov si,2000H 首地址赋值

mov cx,100 循环次数

mov al,00H 清零

NEXT:add AL,[SI] 用al的内容做被加数,以SI的内容做地址找到这个单元的内

容(数据)和AL相加,和保存在AL中去。

INC SI //SI的值自加1

LOOP NEXT

//注意,loop会自动让CX--1,作为循环计数器。

===============第6课:====cpu寄存器组织========

一。段寄存器

在微机系统的内存中通常存放着3类信息:

代码 -- 指示cpu执行何种操作

数据 -- 程序处理的对象或结果

堆栈信息--被保存的返回地址和中间结果等

代码段、数据段、堆栈段

cs代码段寄存器,指向当前的代码段,指令由此段取出

ds数据段寄存器,指向当前的数据段。

es附加数据段寄存器。

ss指向当前的堆栈段

二。控制寄存器2个

1.指令指针寄存器ip:下一个要执行的存储器的偏移地址

2.标志寄存器flag:9位有用

状态标志:6 是0吗?溢出吗?。。。负数吗?进位吗?

控制标志:3

===========第7课==========

一。存储器地址空间和数据存储格式

1.对存储器管理,以字节为单位管理的。一个字节8位,一个位就是一个二进制



2.一共有20跳地址总线,能寻址的空间2(20)1MB

3.每个字节对应一个唯一的地址

4.地址范围为0 - 2(20)-1

5.存储器内,2个连续的字节,定义为一个字,低字节(低8位)

6.字节中最低位为0,最高位为7,字中,最高位为15位。因为最低位是从0下标

算起的,所以最高位不是16而是15.

7.变量名:数据定义伪指令。用变量名来代替一个地址。地址多少我们很难记

,但是我们用变量名,就能够很好的使用该对应的地址。

8。DB字节 DW字 DD双字节 的变量定义。

9.偶地址,是对准的;奇地址,是未对准的。类似于struct的对齐问题。

1.对于访问一个偶地址的字的指令,也只需要一个总线周期;

对于访问一个奇地址,需要二个总线周期;所以内存对齐可以提高访问速度

----

二。储存器的分段与物理地址的形式

1.为什么要分段?

8086有20条地址线,能寻址的外部存储空间为1MB,内部能够想存储器提供地址

编码的地址寄存器有6个:bx bp cp dp....均为16位,所以用这6个16位地址寄

存器任意一个个外部存储器提供地址,只能提供2(16)64k个地址,所以对1MB

地址寻址不完。这16位地址寄存器分别为:

BX

BP

SI

DI

SP

IP 这些存储器以某种寻址方式向存储器提供段内偏移地址。

为了让1M都寻址到,那么就有必要把外部存储器分段。

将外部1M空间分成个若干个逻辑段,从而寻址范围扩大到了1MB

2.怎么分段?

1MB存储空间中,每个单元的时机编码称为物理地址。

把1Mb的存储空间划分成若干个逻辑段,每段最多64kb

各个逻辑段的起始地址必须被16整除,即一个段的起始地址的低4位二进制吗必

须是0

每个段有自己的头,所以记得头地址,那么我们都可以通过偏移地址来找东西

。。。。。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: