第一章 基础知识

<>计算机与0和1

我们目前主要使用的计算机都是大规模集成电路机,是采用大规模和超大规模的集成电路作为逻辑元件的。

集成电路,按其功能、结构的不同,可以分为模拟集成电路、数字集成电路和数/模混合集成电路三大类。而我们的计算机主要是采用数字集成电路搭建的。

逻辑门是数字逻辑电路的基本单元。常见的逻辑门包括“与”门,“或”门,“非”门,“异或”等等。通过逻辑门可以组合使用实现更为复杂的逻辑运算和数值运算。

逻辑门可以通过控制高、低电平,从而实现逻辑运算。电源电压大小的波动对其没有影响,温度和工艺偏差对其工作的可靠性影响也比模拟电路小得多。所以相对稳定。

因为数字计算机是由逻辑门组成,而逻辑电路最基础的状态就是两个——开和关。所以,数字电路是以二进制逻辑代数为数学基础。二进制的基本运算规则简单,运算操作方便,这样一来有利于简化计算机内部结构,提高运算速度。

然而机器码过于繁琐且容易出错,继而诞生了汇编语言。

<>CPU

中央处理器(CPU)是执行计算机内部大部分处理的单元。为了控制与计算机其他部分之间的指令和数据流,CPU主要依赖于芯片组,芯片组是位于主板上的一组微芯片。

CPU 有两个组件:

* 控制单元:从存储器中提取指令并解码并执行它们
* 算术逻辑单元(ALU):处理算术和逻辑运算
cpu控制整个电脑的运行并进行运算,他的工作就是在内存中读取写入信

息,从而达到对软硬件的操作和控制。我们把数据放在存储器中并划分单元,以便更好地找到处理数据。因为计算机只能处理传输电信号,所以cpu和内存之间由导线连接(按功能分地址总线,数据总线,控制总线)。一次能传多少电信号,就代表cpu一次能处理,控制多少信息。如果有10根地址总线,那么一次性就能传输10位二进制数据。

小结
1.cpu直接使用的信息在存储器中
2.存储器中指令和数据没有区别都是二进制数(通过汇编语言让cpu区分)
3.一个存储单元存储8个bit,即8位二进制数
1byte=8bit 1kb=1024b 1mb=1024kb 1gb=1024mb

第二章 寄存器

一个典型的cpu(此后都用8086cpu举例)由运算器,控制器,寄存器,等器件构成,这些器件靠内部总线相连。

<>通用寄存器

8086所有寄存器都是16位(一位放一个二进制数据,因此,最大存放数据为2的16次方-1)的,可存放两个字节。AX,BX,CX,DX用来存放一般性数据,称为通用寄存器。每个寄存器可分为两个8位寄存器来使用,即AX分为AL(低八位)和AH(高八位),其他寄存器以此类推。它们即可分开表示数据也可合并表示数据。

基础指令

* mov ax,81     ;将81送入寄存器ax,类比高级语言ax=81
* add ax,8        ;将ax中的值加8,ax=ax+8
* mov ax,bx     ;将bx中的值送入ax,ax=bx
* add ax,bx      ;将bx,ax中的值相加放在ax,ax=ax+bx
写汇编指令或寄存器时不区分大小写,但不能大小混写

mov相当于覆盖,不论目标寄存器是否有值,数据传输运算时要注意数据是否超出寄存器容量且操作对象位数应当一致(al不能与bx传输运算,8位与8位对应,16位与16位对应)

<>物理地址与寻址

cpu想要对数据进行控制,首先要找到目标数据,才能进行读写。那么,偌大的内存中,怎样快速准确地找到数据呢?
所有的内存单元构成的存储空间是一个一维线性空间,每一个内存单元在空间中都有唯一的地址,这个地址即称为物理地址。相当于让cpu更好找到它们的门牌号。

地址加法器是寻址的工具人,它将物理地址拆分为段地址和偏移地址。物理地址的表达方式为:段地址*16+偏移地址=物理地址
wsm这么做呢?
为了增强寻址能力和效率

比如从0~999中确定一个数,首先要确定百位数,然后再确定十位和个位数。段地址*16(因为是16进制所以乘16)的算法还能节省一个位数的空间

内存地址并没有被分为固定的段,可以根据编程需要将若干地址连续的内存看做一个段。
8086cpu有四个段寄存器,cs,ds,ss,es。当cpu要访问内存时,由这四个段寄存器提供内存单元的段地址。

先来讲讲CS和IP,它们是cpu中最关键的两个寄存器,指示了cpu当前要读取指令的地址,cs为代码段寄存器,ip为指令指针寄存器。任意时刻,CPU都将CS:IP指向的内容当做指令执行。

<>实验1 查看CPU和内存,用机器指令和汇编指令编程

环境:windows2008,dosbox

debug是DOS,windows都提供的实模式(8086方式)程序的调试工具。使用它,可以查看CPU各种寄存器中的内容,内存的情况和在机器码级跟踪程序的运行。

基本指令

* R      查看,改变CPU寄存器内容
* D      查看内存中内容
* E      命令改写内存中的内容
* U      将内存中的机器指令翻译成汇编指令
* T      执行一条机器指令
* A      以汇编指令的格式在机器中写入一条机器指令
进入dosbox
(也可在command中完成)

r命令改变寄存器中的内容

d查看指定地址中内容

用e命令改写内容中的内容

此命令写可写入字符和机器码

a命令以汇编指令形式写入机器指令

技术
©2019-2020 Toolsou All rights reserved,
vue-countTo 操作大全SpringMVC框架中在controller层获取自定义配置文件的属性值python中switch_to_alert的用法非父子组件之间的三种传值办法Map---Java判断Map中是否包含某个keyiPhone 12售价、配置齐曝光:砍掉64GB、电池2227mAh起步(精华2020年6月3日更新) TypeScript中接口详解Result返回结果信息的封装[work] python读取txt文件最后一行关于Navicat for mysql 的2003错误