汇编语言第二章知识梳理及思考

第二章 寄存器(CPU工作原理)

CPU概述

CPU由运算器、控制器、寄存器等器件组成,这些器件靠内部总线相连。

内部总线实现CPU内部各个器件之间的联系。

外部总线实现CPU和主板上其他器件的联系。

寄存器概述

8086CPU有14个寄存器:

AX、BX、CX、DX、SI、DI、SP、BP、IP、CS、SS、DS、ES、PSW。

2.1通用寄存器

8086CPU所有的寄存器都是16位的,可以存放两个字节。

通用寄存器:AX、BX、CX、DX通常用来存放一般性数据。

以AX为例,寄存器的逻辑结构:

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

16位数据在寄存器中的存放情况

数据:18

二进制表示:10010

在寄存器AX中的存储:

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0(AX)

0       0  0  0  0  0 0 0 0 0 0 1 0 0 1 0

一个16位的寄存器所能存储的数据的最大值为2^16-1

一个8位的寄存器所能存储的数据的最大值为2^8-1

为了保证兼容性,四个通用寄存器都可以分为两个独立的8位寄存器使用。

AX=AH(高8位(8~15位))+AL(低8位(0~7位));

BX=BH+BL;

CX=CH+CL;

DX=DH+DL;

2.2字在寄存器中的存储

一个字可存放在一个十六位的寄存器中,这个寄存器的高位字节和低位字节就存在这个寄存器的高八位寄存器和第八位寄存器中。

【关于数制的讨论】P16

2.3几条汇编指令(汇编指令不区分大小写)

123456789ABCDEFG

MOV AX,BX

add ax,bx

2.4物理地址

物理地址:CPU访问内存单元时要给出内存单元的地址。所有的内存单元构成的存储空间是一个一维的线性空间。

2.5 16位结构的CPU

16位结构描述了一个CPU具有以下几个方面的特征:

1,      运算器一次最多可以处理16位的数据;

2,      寄存器的最大宽度为16位;

3,      寄存器和运算器之间的通路是16位的;

2.6 8086CPU给出物理地址的方法

8086内部有20位地址总线,可传送20位地址,寻址能力为1M(2^20=1MB)。8086内部为16位结构,他只能传送16位的地址,表现出的寻址能力为64K。8086CPU采用一种在内部用两个16位地址合成的方法来形成一个20位的物理地址。

8086CPU读写内存:

1,      CPU中的相关部件提供两个十六位地址,一个称为段地址,另一个称为偏移地址;

2,      段地址和偏移地址通过内部总线送入一个称为地址加法器的部件;

3,      地址加法器将两个16位地址合并成一个20 位的地址;

4,      再通过20位地址总线传送到存储器中。

2.7 “物理地址=段地址*16+偏移地址”的本质含义

地址加法器合成物理地址的方法:物理地址=段地址*16+偏移地址;

段地址*16——》左移四位(二进制)

一个数据的X进制形式左移一位,相当于乘以X

2.8 段的概念

段的划分来自于CPU,由于8086CPU采用(物理地址=段地址*16+偏移地址)的方式给出内存单元的物理地址,使得我们可以用分段的方式来管理内存。在编程时可以根据需要,将若干地址连续的内存单元看作一个段,用段地址*16定位段的起始地址(基础地址),用偏移地址定位段中的内存单元。

注意:1,段地址*16必然是16的倍数,所以一个段的起始地址也一定是16的倍数;

2,偏移地址为16位,16位地址的寻址能力为64K,所以一个段的最大长度为64K;

小结:

CPU访问内存单元时,必须向内存提供内存单元的物理地址。

8086CPU在内部用段地址和偏移地址移位相加的方法形成最终的物理地址。

思考:

CPU可以用不同的段地址和偏移地址形成同一个物理地址。

偏移地址16位,变化范围为0~FFFFH,仅用偏移地址来寻址最多可以寻64K个内存单元。

“数据在21F60H内存单元中”8086CPU机的两种描述:

1. 数据存在内存2000:1F60单元中;

2. 数据存在内存的2000段中的1F60H单元中;

2.9段寄存器

段寄存器就是提供段地址的,8086CPU有4个段寄存器:

CS、DS、SS、ES。当8086要访问内存时,由这4个段寄存器提供内存单元的段地址。

2.10CS和IP

CS和IP是8086CPU中最关键的寄存器,它们指示了CPU当前要读取指令的地址。CS为代码段寄存器IP为指令指针寄存器。

2.11修改CS,IP的指令

转移指令:

同时修改CS,IP的内容:

Jmp 段地址:偏移地址

Jmp 2AE3:3

Jmp 3:0B16

功能:用指令中给出的段地址修改CS,偏移地址修改IP。

修改IP的内容:

Jmp 某一合法寄存器

Jmp ax (类似于mov IP,ax)

Jmp bx

功能:用寄存器中的值修改IP。

2.12代码段

2.9-2.12小结:

1.段地址在8086CPU的寄存器中存放。当8086CPU要访问内存时,由段寄存器提供内存单元的段地址。8686CPU有4个段寄存器,其中CS用来存放指令的段地址。

2.CS存放指令的段地址,IP存放指令的偏移地址。

8086机中。任意时刻,CPU将CS:IP指向的内容当作指令执行。

3.8086
CPU在工作的过程中:

(1)从CS:IP指向内存单元读取指令,读取的指令进入指令缓冲器;

(2)IP指向下一条指令;

(3)执行指令(跳转到(1),重复这一过程。)

4.8086
CPU提供转移指令修改CS,IP的内容。

原文地址:https://www.cnblogs.com/GloriousABC/p/9866128.html

时间: 2024-10-28 21:36:44

汇编语言第二章知识梳理及思考的相关文章

汇编语言第二章知识梳理

一个典型的cpu由运算器.控制器.寄存器等器件组成,这些器件靠内部总线相连. 内部总线实现cpu内部各个器件之间的联系.外部总线实现cpu和主板上其他器件的联系. 8086CPU中的14个寄存器:AX,BX,CX,DX,SI,DI,SP,BP,IP,CS,SS,DS,ES,PSW 概括的讲,16位结构描述了一个cpu具有以下几个方面的特征:(1)运算器一次最多可以处理16位的数据.(2)通用寄存器的最大宽度为16位.(3)寄存器和运算器之间的通路是16位的. 8086cpu有20位地址总线,可传

第二章知识梳理

思维导图 基本数据类型 布尔型bool 整型:int.short.long 浮点型:float.double.long double 字符型:char 枚举型:enum 运算表达式(注意运算优先级) 算数:+.-.*./.% 赋值:=   例:a=4 逗号:,  例:a=3*5,a*4 逻辑:<.<=.>>=.==.!=.!.&&.|| 条件:_?_:_ sizeof: sizeof(类型名)       sizeof 表达式 位运算:注意二进制比特位运算 基本控制

汇编语言第三章知识梳理及思考

第三章 内存访问的角度学习寄存器 3.1内存中字的存储 0号单元是低地址单元,1号单元是高地址单元. 问题: (1)0地址单元(字节单元)中存放的字节型数据是多少?20H (2)0地址字单元中存放的字型数据是多少?4E20 (3)2地址字单元中存放的字节型数据是多少?12H (4)2地址单元中存放的字型数据是多少?0012H (5)1地址字单元中存放的字型数据是多少?124EH 结论:任何两个连续的内存单元,N号单元和N+1号单元,可以将它们看成一个地址为N的字单元中的高位字节单元N+1和低位字

第二章 知识图谱——机器大脑中的知识库

第二章 知识图谱——机器大脑中的知识库 作者:刘知远(清华大学):整理:林颖(RPI) 版权所有,转载请注明出处 知识就是力量.——[英]弗兰西斯·培根 1 什么是知识图谱 在互联网时代,搜索引擎是人们在线获取信息和知识的重要工具.当用户输入一个查询词,搜索引擎会返回它认为与这个关键词最相关的网页.从诞生之日起,搜索引擎就是这样的模式,直到2012年5月,搜索引擎巨头谷歌在它的搜索页面中首次引入“知识图谱”:用户除了得到搜索网页链接外,还将看到与查询词有关的更加智能化的答案.如下图所示,当用户输

汇编语言 第二章 寄存器检测点2.2 第二题

这道题是汇编语言第二版的习题,一开始我也是百思不得其解,下面看看吧: 有一数据存放在内存20000H单元中,现给定段地址为SA,若想用偏移地址寻址到此单元, 则SA 应满足的条件是:最小为 1001H 最大为 2000H :最大值: (很多人最大值很容易算出来,但是最小值卡住了,很纳闷为什么是1001H)我们可以根据原题列出一个式子: X * 10H + 0H = 20000H 我们之前是乘以16,但是那个16是十进制的,因为整个式子里都是16进制,加入个10进制去算会出错的所以呢,我们把16转

汇编语言第二章总结

第二章里我们学习了寄存器的内容.了解到一个典型的CPU由运算器.控制器.寄存器等器件构成,这些器件靠内部总线相连.前一章所说的总线,相对于CPU内部来说是外部总线.内部总线实现CPU内部各个器件之间的联系,外部总线实现CPU和主板上其他器件的联系.在CPU中,运算器进行信息处理:寄存器进行信息存储:控制器控制各种器件进行工作:内部总线连接各种器件,  在它们之间进行数据的传送. 对于一个汇编程序员来说,CPU中的主要部件是寄存器.寄存器是CPU中程序员可以用指令读写的部件.程序员通过改变各种寄存

专业课第二章知识总结

第二章我们主要学习了高级语言构成有:数据类型.变量常量.标识符.关键字.运算符表达式和语句等. java数据类型是用来表示计算机内存的特定方法.主要分为两种一种是基本类型有:整形(byte,short,int,long).浮点型(float,double).字符型(char).布尔型(boolean).另外一种是引用类型是String字符串. 在java中变量是程序中最基本的存储单元其中就包括数据类型,和变量名和变量值,而我们在声明变量时应定义一个数据类型然后定义变量名和初始值: 常量声明必须先

汇编第二章知识总结

今天刚学完第二章,以下是一些学习到的内容. 首先是CPU的概述 1.一个典型CPU由运算器.控制器和寄存器等器件组成. 2.内部总线实现CPU内部各个部件之间的联系. 3.外部总线实现CPU和主板上其他器件的联系. 通用寄存器 1.8086CPU所用的寄存器都是16位的,可以存放2个字节.AX,BX,CX,DX这四个寄存器都唱用来存放一般性数据,被称为通用寄存器 2.为了保证与上一代8位CPU兼容,8086CPU的AX.BX.CX.DX可分为两个可独立使用的8位寄存器. AX可分为AH和AL B

曼昆《经济学原理》(第五版)习题解答 第二章 像经济学家一样思考

复习题1 .经济学如何像一门科学?答:经济学家努力以科学家的客观态度来探讨经济问题.用科学的方法提出理论.收集资料,并分析这些资料以努力证明或否定他们提出的理论来研究社会.经济学家研究经济的过程和方法与自然科学的科学家研究自然是一样的.所以说经济学也是一门科学. 2 .为什么经济学家要做出假设?答:假设可以使解释这个世界更为容易.对不同的问题作出不同的假设,略去对问题的答案没有实质影响的因素,突出实质性的内容,使我们可以集中进行思考. 3 .经济模型应该准确地描述现实吗?答:经济模型不需要准确地