汇编语言学习 基础知识

摘要:
后来,高科技逐渐被使用……但制造漏洞的第一件事是使用继电器、电子管和晶体管将十进制转换为补充码1.2。汇编语言的主体是汇编指令。装配指令和机器指令的区别在于指令的方式。汇编指令是机器指令的书写格式,便于记忆。汇编指令是机器指令的助记符。机器指令:1000100111011000操作:将寄存器BX的内容发送到AX。装配说明:MOVAX。BX汇编语言的移动方法与人类语言相似,因此很容易读取和记忆寄存器。简而言之,它是CPU中可以存储数据的设备。CPU有多个寄存器。

       汇编语言是除了机器语言我们能操纵的最底层的语言了,汇编语言是所有语言中效率最高的一种语言,很多的驱动,很多的嵌入式的都是用汇编语言写的,当然也有用C语言那写的,C语言是比汇编语言高级,学会了汇编语言,对底层有一个大概的了解,知道CPU和内存和各种各样的硬件他是如何的配合的,如何地读取信息的,在学习高级语言的话会更加的得心应手,用机器的思维去操作计算机,这是编程里面一个非常高的进阶,反编译破解一下,在破解的过程中涉及的就是汇编语言,他把C语音变成汇编语言,再变成机器语言,在把他的机器语言发布出来,然后机器与语言和机器语言是一一对应的,直接通过机器语言把他翻译成它对应的机器语言

        汇编语言是直接在硬件之上工作的编程语言,首先要了解硬件系统的结构,才能有效的应用汇编语言对其编程,CPU 和 内存  显卡 声卡 都是有内存的。

       1.1机器语言

机器语言是机器指令的集合,CPU 电脑大脑唯一认可,就是0和1的集合,机器指令展开来讲就是一台机器可以正确执行的命令。

指令:01010000 (PUSH AH)

电平脉冲

早期程序员们将0,1数字编程的程序代码打在纸带或卡片上,1打孔,0不打孔,再将程序通过纸带机或卡片机输入计算机,进行运算。后来逐渐使用高科技..........但打洞洞是始祖    用了继电器,电子管,晶体管    进制转换  补码

       1.2汇编语言的产生

汇编语言的主体是汇编指令
汇编指令和机器指令的差别在于指令的表示方法上。汇编指令是机器指令便于记忆的书写格式(因为他便于记忆所以产生了汇编语言)
汇编指令是机器指令的助记符

机器指令:1000100111011000
操作:寄存器BX的内容送到AX中
汇编指令:MOV AX,BX 汇编语言移动方法
这样的写法与人类语言接近,便于阅读和记忆

寄存器:简单的讲是CPU中可以存储数据的器件,一个CPU中有多个寄存器。
AX是其中一个寄存器的代号
BX是另一个寄存器的代号

计算机能读懂的只有机器指令,那么如何让计算机执行程序员用汇编指令编写的程序呢

1.程序     

2.汇编指令
mov ax ,bx

3.编译器

4.机器码
100001000111011000

5.计算机

          1.3汇编语言的组成

1.汇编指令(机器码的助记符)

mov ax,bx   

2.伪指令(由编译器执行)

3.其它符号(由编译器识别)

汇编语言的核心是汇编指令,它决定了汇编语言的特性

计算机CPU连加减乘除都不会, 只认识1和0,认识的运算符就是逻辑运算符(推荐一本书编码的奥秘)就是CUP是怎么样实现的,继电器的逻辑线路

         1.4存储器

CPU是计算机的核心部件,他控制整个计算机的运作并进行运算,要想让一个CPU工作,就必须向他提供指令和数据

CPU是计算机的大脑,核心,心脏
指令是告诉CPU要怎么做
数据告诉CPU哪些是被做的,那些是做别人的

指令和数据在存储器中存放,也就是平时所说的内存

任何部件都有他的存储器,包括显卡,网卡

在一台PC机中内存的作用仅次于于CPU

离开了内存,性能再好的CPU也无法工作 通篇讲CPU怎么样跟内存打交道,怎么样控制内存 CUP读内存比较快,内存读数据比较慢

磁盘不同于内存,磁盘上的数据或程序,如果不读到内存中,就无法被CPU使用

          1.5指令和数据

指令和数据是应用上的概念  在内存或磁盘上,指令和数据没有任何区别,都是二进制信息  

二进制信息:
1000100111011000
——》89D8H(数据)
1000100111011000
——》MOV AX,BX(程序)

CPU处理的是二进制代码,这些也是指令,也是数据,就是根据我们程序员怎么样对他进行运用的

            1.6存储单元

存储器被划分为若干个存储单元,每个存储单元从0开始顺序编号  

例如:
一个存储器有128个存储单元
编号从0~127
如右图示:

其实GPU的速度笔CPU快多了,三D游戏的要求都很高了

*不管是什么编程,只要是编号一定是从0开始

对于大容量的存储器一般还用以下单位来计量容器(以下用B来代表byte)
1kb=1024b
1mb=1024kb
1gb=1024mb
1tb=1024gb
磁盘的容量单位同内存的一样,实际上以上单位是微机中常用的计量单位

                1.7CPU对存储器的读和写

CPU要想进行数据的读写,必须和外部器件(标准的说法是芯片)进行三类信息交互,

1.存储单元的地址(地址信息)

2.器件的选择,读或写命令(控制信息)

3.读或写的数据(数据信息)

那CPU是通过什么将地址、数据和控制信息传到存储芯片中的呢

电子计算机能处理、传输信息都是电信号,电信号当然用导线传送

在计算机中专门有连接CPU和其它芯片的导线,通常为总线

物理上:一根根导线的集合;
逻辑上划分为:
地址总线
数据中线
控制总线

              1.8地址总线
CPU通过地址总线来指定存储单元的
地址总线上能传送多少个不同的信息,CPU就可以对多少个存储单元进行寻址
达到64位:你需要64位的CPU, 也需要64位的操作系统,要有64位的操作软件,缺一不可
一个CPU有N根地址总线,则可以说这个CPU的地址总线的宽度为N。
这样的CPU最多可以寻找2的N次方个存单元。
64位CUP一次可以走八个字节
一个字节可以存放多少个位,也就是2的8次方

               1.9数据总线
CPU与内存或其它器件之间的数据传输是通过数据总线来进行
数据总线额宽度决定了CUP和外界的数据传送速度
数据总线就是一头高速公路,高速公路越大,每次来来回回的车辆越多,你运送的货物越快,这不决定于车的速度,而决定于车的大小
它们向内存中写入数据89D8H时,是如何通过数据总线传送数据的:
8088CPU数据总线上的数据传送情况
每次是传送8位的
8086CPU数据总线上的数据传送情况
16位数据总线上传送信息

              

                1.10控制总线
CPU对外部器件的控制是通过控制总线来进行的。在这里控制总线是一个总称,控制总线是一些不同控制线的集合
宏观上来讲:有多少根控制总线,就意味着CPU提供了对外部器件的多少种控制
所以控制总线的宽度决定了CPU对外部器件的控制能力,宽度越大越多条控制线,就对越多的端口进行控制
控制总线发送的控制信息
前面所讲的内存读或写命令是由几根控制线综合发出来的:
其中有一根名为读信号输出控制线负责由CPU向外传送读信号,CPU向该控制线上输入低电平表示将要读取数据
有一根名为写信号输出控制线负责由CPU向外传送写信号

  

 小结
1.汇编指令是机器指令的助记符,同机器指令一一对应
用底层的思维来指导自己写出高级优秀的程序
2.每一种CPU都有自己的汇编指令集
酷睿 帮助处理图像 处理
3.CPU可以直接使用的信息在存储器中存放
CPU要运行必须要有数据交换的场所,就是存储器
CPU的缓存
4.在存储器中指令和数据没有任何区别,都是二进制信息
自由主题
5.存储单元从0开始顺序编号
6.一个存储单元可以存储8个bit(用作单位写成“b”),即8位二进制数
7.1B=8bit 1KB=1024B 1MB=1024KB 1GB=1024MB
8.每一个CPU芯片都有许多管脚,这些管脚和总线相连。也可以说,这些管脚引出总线。一个CP可以引出三种总线的宽度标志了这个CPU不同的性能
地址总线的宽度决定了CPU的寻址能力
数据总线的宽度决定了CPU与其它器件进行数据传送时的一次数据传送量
控制总线宽度决定了CPU对系统中其它器件的控制能力
在汇编过程中,我们从功能的角度介绍了这三类总线,对实际连接情况不做讨论

CPU在内存中读和写的过程

汇编语言学习 基础知识第1张

汇编语言学习 基础知识第2张
我们知道CPU是如何进行数据读写的。可是我们如何命令计算机进行数据的读写呢?

对于8086CPU,下面的机器码能够完成从3号单元读数据
机器码
好像在分析老爷车
含义:从3号单元读取数据送入寄存器AX
CPU接受这条机器码后将完成上面所述的读写工作

                      1.11内存地址空间(概述)

什么是内存地址空间呢?
一个CPU的地址宽度为10,那么可以寻址1024个内存单元,这1024个可寻到的内存单元就构成这个CPU的内存地址空间。下面深入讨论

  

首先需要介绍两部分基础知识,主板和接口卡
1.12主板
在每一台PC机中,都有一个主板,主板上有核心器件和一些主要器件
这些器件通过总线(地址总线,数据总线,控制总线)相连
1.13接口卡
计算机系统中,所有可用程序控制其工作的设备,必须受到CPU的控制
CPU对外部设备不能直接控制,如显示器,音响,打印机等。直接控制这些设备进行工作的是插在控制槽上的接口卡
网卡
接口与网络连接
显卡
进口有显示器连接

1.14各类存储器芯片
从读写属性上看分为两类
随机存储器RAM
只读存储器ROM
永远只能读,但是数据中
装有BIOS的ROM
BIOS:Basic Input/Output System,基本输入输出系统 主板的BIOS
BIOS是由主板和各类接口卡(如:显卡、网卡等)厂商提供的软件系统,可以通过它利用该硬件设备进行最基本的输入输出。在主板和某些接口卡上插有存储相应BIOS的ROM。
一个病毒能够杀入BIOS里面去,杀毒软件杀不了了
从功能和连接上分类
随机存储器RAM
装有BIOS的ROM
接口卡上的RAM
PC机中各类存储器的逻辑连接情况

CPU是大脑,存储器是轮子

汇编语言学习 基础知识第3张

上述的那些存储器在物理上是独立的器件
但是它们在以下两点上相同
1.都和CPU的总线相连
2.CPU对它们进行读和写的时候都通过控制线发出内存读写命令

CUP只能看到主存储器地址空间
将各类存储器看做一个逻辑存储器

汇编语言学习 基础知识第4张

假设内存地址分配如下
地址0~7FFFHd的32kb空间为主随机存储器的地址空间;
地址8000H~9FFFH的8kb空间为显存地址空间
地址A000H~FFFFH的24kb空间位各个ROM的地址空间
不同的计算机系统的内存地址空间分配情况是不同的
8086PC机内存地址空间分配的基本情况
英特尔 CPU IBM pore CPU 中国 龙 芯的CUP
8086PC机的内存地址空间分配

汇编语言学习 基础知识第5张

内存地址空间
最终运行程序的是CPU,我们用汇编编程的时候,必须要从CPU角度考虑清楚
我们学习这门课程的核心思维

C++的一个问题
q=(++j)(++j)(++j);
先优化一下
把前面两个当成系数
先放到DS寄存器,再把它递增一,再把他放回去,递增了两次之后他才来进行相加
7+7+8
对于CUP来讲,系统中的所有存储器中的存储单元都处于一个统一的逻辑存储器中,他的容量受CPU寻址能力的限制。这个逻辑存储器即是我们所说的内存地址空间
目标

免责声明:文章转载自《汇编语言学习 基础知识》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇json数据映射填充到html元素显示PHP如何实现网址伪静态(转)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

使用yum安装php72

1.执行yum search php72w查看自己的yum源有没有php72 如果自己有安装其它php版本先执行yum -y remove php* 2.没有php72执行以下命令扩展yum库,以下命令来自https://webtatic.com/packages/php72/(想看自行查看) yum install epel-release rpm -...

Android Fastboot 与 Recovery 和刷机 千山万水迷了鹿

1. 首先来看下Android系统的分区:   Android系统的分区.jpg   Android分区解释.png 安卓系统一般把rom芯片分成7个区,如果再加上内置sd卡这个分区,就是8个: hboot分区----------负责启动。 radio分区----------负责驱动。 recovery分区-------负责恢复。...

第七章 Python 盒子:模块、包和程序

前戏部分 模块,用一堆(很多行)代码实现了某个功能的代码集合。 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合。而对于一个复杂的功能来说,可能需要多个函数才能完成(函数又可以在不同的.py文件中),n个 .py 文件组成的代码集合就称为模块。 其实模块只是有很多 Python 代码的一个文...

【推荐】CentOS安装PHP5.6.4+扩展安装+安全配置+性能配置

注:以下所有操作均在CentOS 6.5 x86_64位系统下完成。 #准备工作# 前段时间PHP官方发布了一个重要的安全升级公告,修复了两个unserialize函数的严重漏洞,目前受影响的版本有: <5.4.36 <5.5.20 <5.6.4 这里我们直接下载5.6.4的版本进行安装配置,并且在这之前需要先把MySQL和Apach...

Windows+Python+Selenium基础篇之1-环境搭建

1.所需工具包1.1Selenium for python1.2  Python  1.3  Notepad++或python IDE2.  环境搭建2.1  下载和安装Pythonpython2.7.17    下载地址:https://www.python.org/downloads/  安装时需要特别注意选上pip和Add python.exe tp...

6.15

今天完成了PHP项目的答辩,对于答辩情况当然不是很理想,很多知识点不能够明确知道其意义和用法,对于知识点的理解很模糊,特别是相似点的知识区分不仔细容易混淆。 就对PHP的学习而言,也只能说一些基本的知识还算学得可以,但是如果复杂一点的东西自己还是有很多很多的不知道,自己也想多学一点但是有时候却真实的感觉很难,特别是当一个练习别人可以做出来自己却敲代码敲不出来...