汇编语言程序设计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
每个段有自己的头,所以记得头地址,那么我们都可以通过偏移地址来找东西
。。。。。。
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
每个段有自己的头,所以记得头地址,那么我们都可以通过偏移地址来找东西
。。。。。。
相关文章推荐
- 07_04 使用存储过程获取指定课程数
- 吴恩达deeplearning.ai课程系列笔记04
- 学习笔记 07-01-04
- 软件07汇编语言程序设计课程设计参考答案
- 软件07汇编语言程序设计课程设计参考答案
- 《深度学习Ng》课程学习笔记04week1——卷积神经网络
- Coursera台大机器学习技法课程笔记04-Soft-Margin Support Vector Machine
- 【张孝祥并发课程笔记】04:线程范围内共享变量的概念与作用
- 马哥笔记07_01~~~07_04
- 深度学习入门课程学习笔记04 softmax分类器
- Coursera台大机器学习技法课程笔记07-Blending and Bagging
- 【张孝祥并发课程笔记】07:java5原子性操作类的应用
- 课程笔记 04 :数据结构(清华) 向量-查找算法
- 课程笔记 07:数据结构(清华) 列表
- HTML实训课程笔记_04
- Servlet基础笔记_17-07-04
- 学习web程序员角度ubuntu自修速学课程安装flash player笔记
- C语言课程笔记(一)
- (acm协会课程笔记)归并算法
- tensorflow36《TensorFlow实战》笔记-06-04 TensorFlow实现 ResNet code