也不知道想什么。大四忙着找工作的时候还想到处学点其他的东西,感觉自己挺贪心的。这本就是在图书馆找的有关汇编语言方面的书,也不知道和我这种学软件的人理解的汇编语言有多大出入哎。
教课书常理——第一章先讲讲历史搭搭框架,反正了解了解,感受下前人的聪明,具体是什么就没那么有兴趣知道了。
首先是1873年,F. Baldwin制造出了手摇式机械计算器。然后到了1946年约翰·莫克莱博士和他的研究生研制出了世界上第一台电子计算机ENIAC(电子数字积分计算器)。之后计算机的硬件飞速发展,从计算器处理器上说就是发展了一到五代微型处理器。关于处理器我没怎么分清,感觉上应该是按照处理器的字节长度分的吧,第一代是4或者8位的,第二代是8位,三——16位,四——32位,五——64位(这个还是准64位。。。16年的书应该差的不是很多),时间的话是隔得很近的(真飞速发展)。之前为了查具体的名字看了下好像说ENIAC是第一台通用计算机,ABC才是第一台电子计算机。然后我印象中的1912图灵机应该属于计算器。 ↑↑↑具体什么的还是去百度比较好。
微型计算机的分类:入力したくない。
微处理器:
微型计算器:
微型计算机系统:
计算机中数的表示
终于看到了些可以用计算来处理的问题了,标配数学专业的学生还是喜欢有计算的东西些。这个地方主要说了下二进制、八进制、十进制、十六进制的表达方式和转化方法、算术运算、逻辑运算。
二进制:1101101.1101B 八进制:155.64O 十进制:109.8125D 十六进制:6d.dH(开头字母时需头部加0) 以上是109.8125的各个进制的表达方式。二、八、十六进制直接的转化很方便,通常转化成二进制之后就可以直接转化为八或十六进制。提一下十→二,其他的各个进制直接的转化都和这方法一样。
PS:小数部分不一定能完全精准的转化,可按照精度要求转化。
算术运算上有加减乘除,原理上和十进制的算术运算都一样。
逻辑运算主要包括:
与(AND、· 、× 、∩ 、∧) 规矩为:0×0=0;0×1=1;1×0=1;1×1=1;
或( OR 、+
、∪
、∨) 规矩为:0+0=0;0+1=0;1+0=0;1+1=1;
非(NOT、在逻辑变量上加一横线) 规矩为:非0为1;非1为0;
异或(XOR、⊕) 规矩为:0⊕0=0;0⊕1=1;1⊕0=1;1⊕1=0;
计算机采用二进制,运算器运算的是二进制数,控制器发出的各种指令也是表示成二进制数,存储器中存放的数据和程序也是二进制数,在网络上进行数据通信时发送和接收的还是二进制数。所以可见,在计算机内部到处都是0和1组成的数据流。
计算机中最小的数据单位是二进制的一个数位(Bit)。
字节(Byte):简写为B,通常采用8位表示一个字节。是计算机中用来表示存储空间大小的基本容量单位。
1B=8bit
千字节 (KB) 1KB=1024B=2^10B
兆字节 (MB) 1MB=1024KB=2^20B
十亿字节(GB) 1GB=1024MB=2^30B
1TB=1024GB=2^40B
字(Word):在计算机中作为一个整体被存取、传送、处理的二进制字符串叫做一个字或单元。每个字的二进制位数的长度称为字长,通常有8位、16位、32位、64位。通常叫32位为双字,64位为4字。
数连同符号在计算机中数值化表示称为机器数,通常有三种码制来表示(原码、补码、反码)。大多数计算机用补码表示,感觉是因为对运算器的要求低点。
原码:最高位表示符号(正数用0,负数用1),其他位表示数值位,称为用符号数的原码表示法。
X=45D=+101101B [X]原=00101101B
Y=-45D=-101101B [Y]原=10101101B
PS:异号的加法需要改给减,估计还要逻辑判断下正负。
反码:正数的反码和原码相同,负数的反码符号位用1表示,数值位为原码数值位按位取反形成。
[X]原=00101101B [X]反=00101101B
[Y]原=10101101B [Y]反=11010010B
PS:为了减法运算转化为加法运算引进了反码和补码,但感觉反码依旧要逻辑判断下正负。
补码:正数的补码和原码相同,负数用2^n-丨X丨来表示(n为机器的字长),简单点就是反码加1。
[X]原=00101101B [X]补=00101101B
[Y]原=10101101B
[Y]反=11010010B [Y]反=11010011B
PS:补码0就一种表达方式,字节长为8时,取值范围为-128~127。
[X+Y]补=[X]补+[Y]补;[X-Y]补=[X]补+[-Y]补;
同号相加和异号相减都不需要判读符号,异号相加可转换为同号相减。
上面两式用补码的标准表达方式是直接推出等式成立滴。并且不需要逻辑判断正负。
感觉是用溢出解决了,2^n+丨X丨但没得n+1位来表示2^n所以就直接表示成了丨X丨
无符号整数:没得符号位,使数的表达范围往正整数方向挪了很多。
非数值信息的表示:主要是ASCII码、BCD码(8421码,通常在输入输出多使用十进制数时使用)、GB2312码(用于满足汉字和一些其他语言需要),目前好像UTF-8用的多些。
微机系统中的接口问题
终于要码玩了,看书都没这么麻烦,最后全是字哎。
通常将两个部件之间的交接部位称为接口(或称为界面),这个部件既可以是硬件也可以是软件。主机实际上是通过系统总线连接到接口,在通过接口与外部设备相连接。例如:磁盘接口位于磁盘驱动器和系统总线之间。各设备公用的接口逻辑如中断控制器、DMA控制器等往往集成在主板上。
微机接口是CPU和输入、输出设备之间进行连接和沟通的部件,如IDE接口、USB接口。
CPU在与I/O设备进行数据交换时通常存在(速度不匹配、时序不匹配、信息格式不匹配、信息类型不匹配)问题。所以嘞,接口通常要有这些功能(设置数据的缓存、能够进行格式的转化,如串行转并行、能够协调CPU和外设在信息类型和电平的差异、协调时序差异、地址译码和设备选择功能、设置中断和DMA控制逻辑)
CPU通过接口对外设进行控制的方式有下面几种:
程序查询方式
中断处理方式
DMA传送方式