CS萌新的汇编学习之路(其实是老师作业呵呵哒)Learning of Assembly Language
第一节课学习汇编语言,做笔记,做笔记
1.概念
首先是汇编语言这门课程的定义以及对于学习高级语言、深入理解计算机系统的作用
机器语言 汇编语言 高级语言 关系
我们学习的主要是x86指令集
首先了解硬件结构,尤其是cpu和内存
汇编语言所写的程序效率极高,比高级语言高,比机器语言低
机器语言是机器指令的集合,一堆0和1的集合,没有必要学习
由指令生成相关的电平脉冲(CPU的工作原理)曾经使用纸带打孔,现在是CPU中石英振动正余弦
于机器语言一一对应
mov AX,BX 把寄存器BX内容移动到寄存器AX中
寄存器概念:CPU中可以存储数据的器件,比高级缓存、二级缓存低一级,一个CPU中有多个寄存器
计算机能够读懂的只有机器指令
汇编语言的产生:程序员编写汇编指令,编译器翻译成机器语言给计算机执行
而高级语言则先翻译成汇编语言
Microsoft Visual C++中查看C语言代码反汇编成汇编语言
Build---Start Debug---Run to Cursor(Ctrl+F10)---点击Debug窗口中的翻译汇编按钮(放大镜标志)
每一行代码都会翻译成汇编语言
反编译软件:OllyDbg
反编译返回成汇编语言的结果,因为高级语言以汇编语言为基础,一条高级语言指令可能包含多条汇编指令,无法直接转换成某种高级语言的指令会产生错误
汇编语言组成:1.汇编指令(机器码的助记符)2.伪指令(由编译器执行)3.其他符号(由编译器识别)
汇编语言的核心是汇编指令,它决定了汇编语言的特性。
存储器:指令和数据在存储器中存放
在PC机中内存的作用仅次于CPU
磁盘不同于内存,磁盘上的数据或程序如果不读到内存中,就无法被CPU使用
硬盘读取速度没有内存快,内存不够会在硬盘中划分虚拟内存
指令和数据:在内存和磁盘上,指令和数据没有任何区别,都是二进制信息
如 100100111011000读成16进制89D8H,H为HEX是16进制的意思
存储单元:存储器被划分为若干个存储单元,每个存储单元从0开始顺序编号
从0开始顺序编号
存储器不一定内存!!!比如显存
对于大容量的存储器一般还采用以下单位来计量容量
1KB=1024B
1MB=1024KB
1GB=1024MB
1TB=1024GB
然而存储设备厂商为了计算方便,一般将1024记成1000来算
磁盘的容量单位同内存一样
CPU对存储器的读写:必须和外部器件进行三类信息交互:1.储存单元的地址(地址信息)2.器件的选择、读写或写命令(控制信息)3.读或写的数据(数据信息)
包含了CPU于其他器件的所有基本操作
电子计算机能够处理、传输的信息都是电信号,电信号当然要用导线传输
总线:在计算机中专门由连接CPU和其他芯片的导线,通常称为总线
物理上是一根根导线的集合,逻辑上分为:1.地址总线 2.数据总线 3.控制总线,分别对应三类信息交互
指令和数据的区分,因为指令和数据都是二进制码,无法直接区分,在地址总线传输全当地址算,在数据总线传输全当数据算,在控制总线传输全当控制语句来计算
课本以8068处理器分析,各种CPU的内部架构都一样,继承器,通道等改变,但结构相同
CPU的运作原理:
1.地址总线: CPU是通过地址总线来指定储存单元的
地址总线上能传送多少个不同的信息,CPU就可以对多少个存储单元进行寻址
系统位数和速度关系:比如64位CPU+64位操作系统+64位操作软件才能达到64位的效率,缺一不可
地址总线图的读法:上低下高,从高位往低位读
一个CPU有N根地址总线,则可以说这个CPU的地址总线宽度为N,这样的CPU最多可以寻找2的N次方个内存单元。
一根地址总线可以索引一个储存单元,就是一个字节,就是一个Byte即8个bit
数据总线:据总线的宽度决定了CPU和外界的数据传送速度
索引由低到高索引8088CPU数据总线一次传输8根线即一个字节,而8086为16根线即两个字节
数据总线宽度的扩大,二级缓存、寄存器的增加使得速度加快
控制总线:不同控制线的集合
有多少根控制总线,就意味着CPU提供了对外部件的多少种控制(1表示读 0表示写)
宽度决定了CPU对外部器件的控制能力
1.汇编指令是机器指令的助记符,同机器指令一一对应
2.每一种CPU都有自己的汇编指令集
3.CPU可以直接使用的信息在存储器中存放
4.在存储器中指令和数据没有任何区别,都是二进制信息
5.存储单元从0开始顺序编号
6.一个存储单元可以存储8个bit,即八位二进制数
7.换算规则1KB=1024B 1MB=1024KB 1GB=1024MB 1TB=1024GB
8.每一个CPU芯片都有许多管脚,这些管脚和总线相连(引出总线)一个CPU可以以哦那个出三种总线的宽度决定了这个CPU不同方面的性能
地址总线宽度: 决定CPU的寻址能力
数据总线宽度:决定了CPU与其他器件进行数据传输的一次数据传送量
控制总线宽度:决定了CPU对系统中其他器件的控制能力
1.地址总线和数据总线的区别:
地址总线按照二进制数计算传输能力,N根地址总线,则可以说这个CPU的地址总线宽度为N,这样的CPU最多可以寻找2的N次方个内存单元
一根地址总线可以索引一个储存单元,就是一个字节,就是一个Byte即8个bit
例如题目中,1KB的储存器有1024个存储单元,可以储存1024*8个bit,1024个Byte,8088的地址总线宽度为20 根,寻址能力为(2^20/2^10)KB即1MB
寻址能力=2^(地址总线宽度次方)Byte
但是在数据总线中情况完全不同!!!
数据总线宽度仅仅以根数为运算能力标准,8根数据总线一次可传达一个8位二进制数据也就是一个字节;16根数据总线一次可以传送两个字节;也就是说,一次传送的字节数=(数据总线根数/8)Byte
例如,8088数据总线宽度位8根,一次可以传送1B的数据;8086数据总线宽度位16根,一次可以传送2B的数据;
如果从内存中读取1024字节的数据,8088要读1024次,而8086要读512次,数据总线宽度为32的803876要读256次。读取次数=(从内存中要读取的数据字节数)/(一次可以传送的数据字节数),小数补加1.
CS萌新的汇编学习之路(其实是老师作业呵呵哒)Learning of Assembly Language的更多相关文章
- CS萌新的汇编学习之路02 Learning of Assembly Language
第二节课 寄存器 1. 寄存器的定义: 进行信息储存的器件,是CPU中程序员可以读写的部件,通过改变各种寄存器中的内容来实现对CPU的控制 2. 寄存器的种类: 本节课学习通用寄存器和段寄存器 2. ...
- 大数据萌新的Python学习之路(一)
笔记开始简介 从2018年9月份正式进入大学的时代,大数据和人工智能的崛起让我选择了计算机专业学习数据科学与大数据技术专业,接触的第一门语言就是C语言,后来因为同学推荐的原因进入了学校的人工智能研究协 ...
- 大数据萌新的Python学习之路(三)
笔记内容: 一.集合及其运算 在之列表中我们可以存储数据,并且对数据进行各种各样的操作.但是如果我们想要对数据进行去重时是十分麻烦的,需要使用循环,要建立新的列表,还要 进行对比,十分的麻烦,还消耗 ...
- 大数据萌新的Python学习之路(二)
笔记内容: 一.模块 Python越来越被广大程序员使用,越来越火爆的原因是因为Python有非常丰富和强大标准库和第三方库,几乎可以实现你所想要实现的任何功能,并且都有相应的Python库支持,比如 ...
- 萌新web前端从零开始(1)——计算机入门
前言:这是一个萌新从零开始的学习之路,与大家分享自己的看法与见解,还请指出错误与遗漏点方便改正. 1.认识计算机. 计算机语言常见的有C,PHP,Ruby,Java,C#,Basic,JS,C++等, ...
- 萌新学习Python爬取B站弹幕+R语言分词demo说明
代码地址如下:http://www.demodashi.com/demo/11578.html 一.写在前面 之前在简书首页看到了Python爬虫的介绍,于是就想着爬取B站弹幕并绘制词云,因此有了这样 ...
- Qt 学习之路 2(16):深入 Qt5 信号槽新语法
Qt 学习之路 2(16):深入 Qt5 信号槽新语法 豆子 2012年9月19日 Qt 学习之路 2 53条评论 在前面的章节(信号槽和自定义信号槽)中,我们详细介绍了有关 Qt 5 的信号 ...
- STM32学习之路入门篇之指令集及cortex——m3的存储系统
STM32学习之路入门篇之指令集及cortex——m3的存储系统 一.汇编语言基础 一).汇编语言:基本语法 1.汇编指令最典型的书写模式: 标号 操作码 操作数1, 操作数2,... ...
- 中小研发团队架构实践之生产环境诊断工具WinDbg 三分钟学会.NET微服务之Polly 使用.Net Core+IView+Vue集成上传图片功能 Fiddler原理~知多少? ABP框架(asp.net core 2.X+Vue)模板项目学习之路(一) C#程序中设置全局代理(Global Proxy) WCF 4.0 使用说明 如何在IIS上发布,并能正常访问
中小研发团队架构实践之生产环境诊断工具WinDbg 生产环境偶尔会出现一些异常问题,WinDbg或GDB是解决此类问题的利器.调试工具WinDbg如同医生的听诊器,是系统生病时做问题诊断的逆向分析工具 ...
随机推荐
- Java利用cors实现跨域请求
由于ajax本身实际上是通过XMLHttpRequest对象来进行数据的交互,而浏览器出于安全考虑,不允许js代码进行跨域操作,所以会警告 网站开发,在某些情况下需要用到跨域. 什么是跨域? 跨域,指 ...
- 固定div的位置——不随窗口大小改变为改变位置
百度首页示例: 我给二维码,和下面文本固定位置 这时html代码 <div id="bar_code"> <div class="img_put&quo ...
- powershell脚本:你的文件已经被黑客篡改.ps1
本人原创powershell脚本分享. 脚本用途:列出某目录下,所有软件签名不符的文件. 系统需求: win7 + powershell 2.0 及 以上. #nd你的文件已经被黑客篡改.ps1 ps ...
- SQL-55 分页查询employees表,每5行一页,返回第2页的数据
题目描述 分页查询employees表,每5行一页,返回第2页的数据CREATE TABLE `employees` (`emp_no` int(11) NOT NULL,`birth_date` d ...
- SpringMVC云题库错题及答案汇总-2
此题目考察的是SpringMVC-注解驱动控制器,注释类型的范围: A.处理requet uri 部分的注解: @PathVariable; B.处理request header部分的注解: @Req ...
- 连接MySQL常用工具
database.properties 如下:url中coursesystem为将要连接的数据库名:username为该数据库设置权限时的用户名:如果设置了密码,再添一项password=你的密码 d ...
- spring boot 包jar运行
win根目录下执行 mvn install 生成 可运行jar使用java -jar jar名字 执行项目 ps aux|grep demo.jar 查看进程 kill -9 processid 杀 ...
- classPath与PATH
PATH是window的变量,而不是Java的变量: 通常配置PATH路径是为了找到需要的XX.exe命令,而且配置在用户的变量下面: 例如:JDK中的javac与java命令在cmd中使用,需要把命 ...
- jquery评分插件jquery.raty.js
1.参考链接 官方地址. 教程一 教程二 2.案例1 引入文件: <!-- 评分插件 --> <script type="text/javascript" src ...
- Linux 登陆配置读取顺序
Linux用户在登陆到Linux服务器时,一些登陆的提示欢迎信息,以及特定的环境配置等等都按预先设定好的配置来生效.Linux中的这个shell环境会读取很多不同的配置文件来达成上述目的,同时还有登陆 ...