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

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. css——letter spacing

    letter spacing属性是用来设置字母的间距 实例: 设置h1和h2之间字母的间距 <html> <head> <style type="text/cs ...

  2. LoadLibrary 失败的解决

    工作中遇到调用Loadlibrary 偶发失败的问题,不是必现,而且这种错误只是在程序初始化的时候出现,初始化成功后当然不会调用,而初始化也不是经常做的动作,所以查找原因起来比较麻烦,调试过程中发现有 ...

  3. PTA --- 时间复杂度 选择题

    1-1 2​N​​和N​N​​具有相同的增长速度. (2分) T         F 作者: DS课程组 单位: 浙江大学 1-2 (NlogN)/1000是O(N)的. (1分) T         ...

  4. Leetcode 600 不含连续1的非负整数

    给定一个正整数 n,找出小于或等于 n 的非负整数中,其二进制表示不包含 连续的1 的个数. 例如: 输入: 5 输出: 5 解释: 下面是带有相应二进制表示的非负整数<= 5: 0 : 0 1 ...

  5. JavaScript 之默认行为 DOM2级,事件委托机制

    1. 事件默认行为及阻止方式    1.1 浏览器的默认行为       JavaScript事件本身所具有的属性,例如a标签的跳转,Submit按钮的提交,右键菜单,文本框的输入等.    1.2 ...

  6. Selenium常用API详解介绍

    转至元数据结尾   由 黄从建创建, 最后修改于一月 21, 2019 转至元数据起始   一.selenium元素定位 1.selenium定位方法 2.定位方法的用法 二.控制浏览器操作 1.控制 ...

  7. 树莓派外网ssh访问holer实现篇

    外网ssh访问树莓派 内网的树莓派(Raspberry Pi),只能在局域网内访问,怎样从公网也能ssh登录访问树莓派? 本文将介绍使用holer实现的具体步骤. 1. 准备工作 1.1 安装并启动树 ...

  8. 免费的DDos网络测试工具集合

    今天晚上看YT上的hulk VS monster Dogs 然后想看电影资源,给我推送了hulk这款工具了解下,发现了一些东西,收藏下 1.卢瓦(LOIC) (Low Orbit Ion Canon) ...

  9. 清华机试中手机键盘问题求解 java 和 c

    题目描述:按照手机键盘输入字母的方式,计算所花费的时间 如:a,b,c都在“1”键上,输入a只需要按一次,输入c需要连续按三次.如果连续两个字符不在同一个按键上,则可直接按,如:ad需要按两下,kz需 ...

  10. @RequestMapping、@ResponseBody和@RequestBody的使用

    使用SSM框架进行Web开发时,经常在Controller中遇到@RequestMapping.@ResponseBody和@RequestMapping注解. 1.@RequsetMapping注解 ...