第一节课学习汇编语言,做笔记,做笔记

1.概念

首先是汇编语言这门课程的定义以及对于学习高级语言、深入理解计算机系统的作用

软硬件接口
机器语言 汇编语言 高级语言 关系
机器语言和汇编语言可移植性差  
机器语言为二进制码,而汇编语言是对机器语言的集合、抽象,而高级语言是对汇编语言的抽象,故不考虑优化,而在效率上,机器语言最高,汇编其次,高级语言最低
我们学习的主要是x86指令集
 
2.学习过程笔记
首先了解硬件结构,尤其是cpu和内存
汇编语言所写的程序效率极高,比高级语言高,比机器语言低
机器语言是机器指令的集合,一堆0和1的集合,没有必要学习
由指令生成相关的电平脉冲(CPU的工作原理)曾经使用纸带打孔,现在是CPU中石英振动正余弦
于机器语言一一对应
mov AX,BX 把寄存器BX内容移动到寄存器AX中
 
3.知识点
寄存器概念: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对外部器件的控制能力
 
4。推荐书目:《编码的奥秘》(了解计算机系统)、《C陷阱和缺陷》(了解编程常产生的错误)
小结
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对系统中其他器件的控制能力
 
重点!!!
 
写检测点时发现了几个易错点(就是我自己写错的emm):
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学习永无止境,为自己打打气 (ง •̀_•́)ง!!!
 
 
 
 
 
 
 

CS萌新的汇编学习之路(其实是老师作业呵呵哒)Learning of Assembly Language的更多相关文章

  1. CS萌新的汇编学习之路02 Learning of Assembly Language

    第二节课  寄存器 1. 寄存器的定义: 进行信息储存的器件,是CPU中程序员可以读写的部件,通过改变各种寄存器中的内容来实现对CPU的控制 2. 寄存器的种类: 本节课学习通用寄存器和段寄存器 2. ...

  2. 大数据萌新的Python学习之路(一)

    笔记开始简介 从2018年9月份正式进入大学的时代,大数据和人工智能的崛起让我选择了计算机专业学习数据科学与大数据技术专业,接触的第一门语言就是C语言,后来因为同学推荐的原因进入了学校的人工智能研究协 ...

  3. 大数据萌新的Python学习之路(三)

    笔记内容:  一.集合及其运算 在之列表中我们可以存储数据,并且对数据进行各种各样的操作.但是如果我们想要对数据进行去重时是十分麻烦的,需要使用循环,要建立新的列表,还要 进行对比,十分的麻烦,还消耗 ...

  4. 大数据萌新的Python学习之路(二)

    笔记内容: 一.模块 Python越来越被广大程序员使用,越来越火爆的原因是因为Python有非常丰富和强大标准库和第三方库,几乎可以实现你所想要实现的任何功能,并且都有相应的Python库支持,比如 ...

  5. 萌新web前端从零开始(1)——计算机入门

    前言:这是一个萌新从零开始的学习之路,与大家分享自己的看法与见解,还请指出错误与遗漏点方便改正. 1.认识计算机. 计算机语言常见的有C,PHP,Ruby,Java,C#,Basic,JS,C++等, ...

  6. 萌新学习Python爬取B站弹幕+R语言分词demo说明

    代码地址如下:http://www.demodashi.com/demo/11578.html 一.写在前面 之前在简书首页看到了Python爬虫的介绍,于是就想着爬取B站弹幕并绘制词云,因此有了这样 ...

  7. Qt 学习之路 2(16):深入 Qt5 信号槽新语法

    Qt 学习之路 2(16):深入 Qt5 信号槽新语法  豆子  2012年9月19日  Qt 学习之路 2  53条评论 在前面的章节(信号槽和自定义信号槽)中,我们详细介绍了有关 Qt 5 的信号 ...

  8. STM32学习之路入门篇之指令集及cortex——m3的存储系统

    STM32学习之路入门篇之指令集及cortex——m3的存储系统 一.汇编语言基础 一).汇编语言:基本语法 1.汇编指令最典型的书写模式: 标号 操作码        操作数1, 操作数2,... ...

  9. 中小研发团队架构实践之生产环境诊断工具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如同医生的听诊器,是系统生病时做问题诊断的逆向分析工具 ...

随机推荐

  1. java导出Excel定义导出模板

    在很多系统功能中都会有Excel导入导出功能,小编采用JXLS工具,简单.灵活. JXLS是基于 Jakarta POI API 的Excel报表生成工具,它采用标签的方式,类似于jsp页面的EL表达 ...

  2. Android中的几个基本常用控件

    Android 中常用的几大UI控件 1. TextView : 用于在界面中显示一段文本信息 <TextView android:id="@+id/text_view" / ...

  3. DevExpress v18.2新版亮点——DevExtreme篇(三)

    行业领先的.NET界面控件2018年第二次重大更新——DevExpress v18.2日前正式发布,本站将以连载的形式为大家介绍新版本新功能.本文将介绍了DevExtreme Complete Sub ...

  4. chrome添加扩展程序

    example: chrome添加vue devtools 扩展程序 打开地址:https://chrome-extension-downloader.com/ download extension: ...

  5. 七月在线爬虫班学习笔记(五)——scrapy spider的几种爬取方式

    第五课主要内容有: Scrapy框架结构,组件及工作方式 单页爬取-julyedu.com 拼URL爬取-博客园 循环下页方式爬取-toscrape.com Scrapy项目相关命令-QQ新闻 1.S ...

  6. 释放jQuery 的$ 的使用权

    1.释放操作必须在编写其他jquery 代码之前编写,释放之后就不能使用$,改为jQuery . jQuery.noConflict();   2.也可以自定义访问符号   var nb = jQue ...

  7. LINQ Expresstion Tree 表达式树

    Expression trees represent code in a tree-like data structure, where each node is an expression, for ...

  8. windows10安装anaconda,配置tensorflow

    1.安装anaconda 3.5.5 默认安装,注意,把添加到path勾选上,其他默认安装(能搜到这篇文章,相信大家都有过变成经验,这些环境变量的重要性就不要窝在多说了) 2.以管理员身份,打开ana ...

  9. 函数QFileSystemModelPrivate::_q_fileSystemChanged

    由于Qt的体系过于庞大,即使是某个模块,分析起来也十分困难.对于QFileSystemModel,我们在这里对单个重要函数慢慢分析 1 /*! \internal The thread has rec ...

  10. L360 Most People Spend Their Time in Just 25 Places

    Some people are always out on the town, going to concerts, restaurant openings, you name it. They're ...