【汇编语言】初识汇编

【汇编语言】初识汇编


文章目录

  • 【汇编语言】初识汇编
  • 前言
  • 由机器语言到汇编语言
    • 机器语言与机器指令
    • 汇编语言与汇编指令
    • 汇编语言程序示例
  • 计算机组成
    • 指令和数据的表示
    • 计算机的存储单元
    • 计算机的总线
  • 内存读写与地址空间
    • CPU对存储器的读写
    • 内存地址空间
  • 总结


前言

为什么要学习汇编?学习汇编的 理由:
1.效率
运行效率:开发软件核心部件,快速执行和实时响应。
开发效率:做合适的事,开发效率无敌。
2.底层:计算机及外围设备的驱动程序
操作系统的内核。
嵌入式系统:家用电器,仪表仪器,物联网……
汇编语言在学习计算机中起到的独特作用——直击计算机系统的核心

学习汇编语言:
. 向上为理解各种软件系统的原理,打下技术理论基础
. 向下为掌握硬件系统的原理,打下实践应用基础。


由机器语言到汇编语言

机器语言与机器指令

机器语言是机器指令的集合
机器指令是一台机器可以正确执行的命令
机器指令是由一串二进制数表示,例如:011100001

早期程序员们的工作形态:将 0、1 数字编程的程序代码打在纸带或卡片上,1打孔,0不打孔,再将程序通过纸带机或卡片机输入计算机,进行运算。但是如果出错的话查找错误会比较麻烦。

汇编语言与汇编指令

汇编语言的主体是汇编指令
汇编指令和机器指令的差别在于指令的表示方式上:

汇变指令是机器指令便于记忆的书写格式。
汇编指令是机器指令的助记符。

例:
机器指令: 1000100111011000
操作:将寄存器BX的内容送到AX中
汇编指令:MOV AX, BX

在这里插入图片描述

汇编语言程序示例

在这里插入图片描述


计算机组成

计算机组板上有:CPU,总线,内存(条),扩展槽(接外部设备)

在这里插入图片描述
CPU 是计算机的核心部件,它控制整个计算机运作并进行运算。要想让一个CPU工作,就必须向它提供指令和数据
指令和数据在 存储器内存)中存放。
离开了内存,性能再好的CPU也无法工作。

指令和数据的表示

计算机的数据和指令,存储在内存和磁盘上。
数据和指令,都是二进制信息

问题:二进制信息1000100111011000是数据还是指令?

答案是由CPU来决定
CPU把它用作数据:1000100111011000 —>89D8H(数据)
CPU把它用作指令:1000100111011000 —>MOV AX,BX(程序)

数据如何表示?

  • 1000100111011000B(二进制)
  • 89D8H(十六进制)
  • 104730O(八进制)
  • 35288D(十进制)

数据大小:
B(字节)=8bit(比特),KB=1024B,MB=1024KB,GB=1024MB,TB=1024GB.

计算机的存储单元

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

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

在这里插入图片描述

实际上:
内存空间很“大”,
8086有20条数据线,
寻址空间2^20=1024*1024B=1MB,为1MB

在这里插入图片描述

计算机的总线

在计算机中专门有连接CPU和其他芯片的导线,通常称为总线。
物理上:一根根导线的集合;
逻辑上:地址总线数据总线控制总线

在这里插入图片描述

  • 地址总线

CPU是通过地址总线来指定存储单元的。地址总线宽度,决定了可寻址的存储单元大小。N根地址总线(宽度为
N),对应寻址空间2N。
在这里插入图片描述

  • 数据总线

CPU与内存或其它器件之间的数据传送是通过数据总线来进行的。数据总线的宽度决定了CPU和外界的数据传送速度。
例:向内存中写入数据89D8H时的数据传送。8088CPU只有8位数据总线要传两次,8086CPU有16根数据总线只要传一次

在这里插入图片描述

  • 控制总线

CPU通过控制总线对外部器件进行控制。控制总线是一些不同控制线的集合控制总线宽度决定了CPU对外部器件的控制能力。
在这里插入图片描述

内存读写与地址空间

CPU对存储器的读写

CPU 想要进行数据的读写,必须和外部器件进行三类信息的交互:

  1. 存储单元地址(地址信息
  2. 器件选择,读或写命令(控制信息
  3. 读或写的数据(数据信息

演示:
机器码: 101000000000001100000000
16进制:A00300
汇编指令:MOV AL,[3]
含义:从3号单元读取数据送入寄存器AL
在这里插入图片描述
要读取的地址信息通过地址线找到相应的内存单元,控制信息的器件通过控制线发出读,地址号为3的内存单元的数据通过数据线读入CPU存放于存放数据的器件。

内存地址空间

什么是内存地址空间:
CPU地址总线宽度为N,寻址空间为2^N B
8086CPU的地址总线宽度为20,那么可
以寻址1MB个内存单元,其内存地址空间为1MB。

从CPU角度看地址空间分配:

在这里插入图片描述
随机存储器(RAM)在程序的执行过程中可读可写,必须带电存储

只读存储器(ROM)在程序的执行过程中只读,关机数据不丢失

在这里插入图片描述
将各类存储器看作一个逻辑存储器——统一编址

所有的物理存储器被看作一个由若干存储单元组成的逻辑存储器;
每个物理存储器在这个逻辑存储器中占有一个地址段,即一段地址空间;
CPU在这段地址空间中读写数据,实际上就是在相对应的物理存储器中读写数据。

在这里插入图片描述
内存地址空间的分配方案——以8086PC机为例

在这里插入图片描述

总结

到这里这篇文章的内容就结束了,谢谢大家的观看,如果有好的建议可以留言喔,谢谢大家啦!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/559242.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Numpy重修系列(一) --- 初识Numpy

一、为什么使用Numpy? 1.1、简介 Python科学计算基础包,提供 多维数组对象 、派生对象(掩码数组、矩阵) 数组的快速操作(数学计算、逻辑、形状变化、排序、选择、输入输出、离散傅里叶变换、基本线性代数、基本统计运…

数据分析案例-中国黄金股票市场的EDA与价格预测

🤵‍♂️ 个人主页:艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞&#x1f4…

【数据结构】单链表经典算法题的巧妙解题思路

目录 题目 1.移除链表元素 2.反转链表 3.链表的中间节点 4.合并两个有序链表 5.环形链表的约瑟夫问题 解析 题目1:创建新链表 题目2:巧用三个指针 题目3:快慢指针 题目4:哨兵位节点 题目5:环形链表 介绍完了…

Activity——spring方式创建activiti所需数据表结构

文章目录 前言依赖引入编写数据库连接等配置配置日志文件编写java代码生成数据库表结构问题反馈与解决思路问题一:Cause: java.sql.SQLSyntaxErrorException: Table activiti_02.act_ge_property doesnt exist 为什么文件名必须写死? 前言 在之前创建ac…

循序渐进丨使用 Python 向 MogDB 数据库批量操作数据的方法

当我们有时候需要向数据库里批量插入数据,或者批量导出数据时,除了使用传统的gsql copy命令,也可以通过Python的驱动psycopg2进行批量操作。本文介绍了使用psycopg2里的executemany、copy_from、copy_to、copy_expert等方式来批量操作 MogDB …

js-pytorch:开启前端+AI新世界

嗨, 大家好, 我是 徐小夕。最近在 github 上发现一款非常有意思的框架—— js-pytorch。它可以让前端轻松使用 javascript 来运行深度学习框架。作为一名资深前端技术玩家, 今天就和大家分享一下这款框架。 往期精彩 Nocode/Doc,可…

python爬虫之爬取携程景点评价(5)

一、景点部分评价爬取 【携程攻略】携程旅游攻略,自助游,自驾游,出游,自由行攻略指南 (ctrip.com) import requests from bs4 import BeautifulSoupif __name__ __main__:url https://m.ctrip.com/webapp/you/commentWeb/commentList?seo0&businessId22176&busines…

“中医显示器”是人体健康监测器

随着科技的进步,现代医学设备已经深入到了人们的日常生活中。然而,在这个过程中,我们不应忘记我们的医学根源,中医。我们将中医的望、闻、问、切四诊与现代科技相结合,通过一系列的传感器和算法将人体的生理状态以数字…

3、MYSQL-一条sql如何在MYSQL中执行的

MySQL的内部组件结构 大体来说,MySQL 可以分为 Server 层和存储引擎层两部分。 Server层 主要包括连接器、查询缓存、分析器、优化器、执行器等,涵盖 MySQL 的大多数核心服务功能,以及所有的内置函数(如日期、时间、数学和加密函…

[Algorithm][滑动窗口][无重复字符的最长字串][最大连续的一个数 Ⅲ][将x减到0的最小操作数]详细讲解

目录 1.无重复字符的最长字串1.题目链接2.算法原理详解3.代码实现 2.最大连续的一个数 Ⅲ1.题目链接2.算法原理详解3.代码实现 3.将x减到0的最小操作数1.题目链接2.算法原理详解3.代码实现 1.无重复字符的最长字串 1.题目链接 无重复字符的最长字串 2.算法原理详解 研究的对…

算法打卡day39

今日任务: 1)卡码网57. 爬楼梯(70. 爬楼梯进阶版) 2)322.零钱兑换 3)279.完全平方数 4)复习day14 卡码网57. 爬楼梯(70. 爬楼梯进阶版) 题目链接:57. 爬楼梯…

数据结构从入门到实战——顺序表的应用

目录 一、基于动态顺序表实现通讯录 二、代码实现 2.1 通讯录的初始化 2.2 通讯录的销毁 2.3 通讯录的展示 2.4 通讯录添加联系人信息 2.5 通讯录删除联系人信息 2.6 通讯录修改联系人信息 2.7 通讯录的查找联系人信息 2.8 将通讯录中联系人信息保存到文件中 2.9…

乡政府管理系统|基于Springboot的乡政府管理系统设计与实现(源码+数据库+文档)

乡政府管理系统目录 目录 基于Springboot的乡政府管理系统设计与实现 一、前言 二、系统功能设计 三、系统实现 1、用户信息管理 2、活动信息管理 3、新闻类型管理 4、新闻动态管理 四、数据库设计 1、实体ER图 五、核心代码 六、论文参考 七、最新计算机毕设选题推…

考研党们,搭子们,打打鸡血!刷视频免疫了,时间竟然多了起来!——早读(逆天打工人爬取热门微信文章解读)

断舍离,断的是过去 引言Python 代码第一篇 人民日报 一个班级,29人全部“上岸”! 第二篇 人民日报 来了!新闻早班车要闻社会政策 结尾 时间就像河流 它带来一切 也带走一切 不打游戏不刷视频 时间的河流便能带来更丰富的体验 引言…

PSO-GPR单变量时序预测-递归预测未来数据 基于粒子群算法-高斯过程回归递归预测未来数据

文章目录 效果一览文章概述订阅专栏只能获取一份代码部分源码参考资料效果一览 文章概述 PSO-GPR单变量时序预测-递归预测未来数据 基于粒子群算法-高斯过程回归递归预测未来数据 订阅专栏只能获取一份代码 部分源码 %

Java对象克隆-浅拷贝与深拷贝

目录 1、对象的克隆 1.1 对象的浅拷贝 1.2 对象深拷贝 1、对象的克隆 1.1 对象的浅拷贝 在实际编程过程中,我们常常要遇到这种情况:有一个对象A,在某一时刻A中已经包含了一些有效值,此时可能会需要一个和A完全相同新对象B&am…

PyQt程序:实现新版本的自动更新检测及下载(FTP服务器实现)

一、实现逻辑 本实例采用相对简单的逻辑实现,用户在客户端使用软件时点击“检测升级”按钮,连接至FTP服务器检索是否有新版本的.exe,如果有,下载最新的.exe安装升级。 本实例服务端待下载.exe所在目录结构 本实例客户端待更新.exe所在目录结构 二、搭建服务器 可以参考…

springcloud第4季 springcloud-alibaba之sentinel

一 sentinel介绍 1.1 sentinel作用 sentinel是面向分布式、多语言异构化服务架构的流量治理组件,主要以流量为切入点,从流量路由、流量控制、熔断降级、系统自适应过载保护、热点流量防护等多个维度来帮助开发者保障服务的稳定性。 1.2 组成部分 sen…

学习Rust的第11天:模块系统

Today we are taking a look at the module system of rust. We can use this to manage growing projects and keep track of what modules is stored where… 今天我们来看看Rust的模块系统。我们可以使用它来管理不断增长的项目,并跟踪 modules 存储在何处。 Rus…

MyBatis使用PageHelper分页插件

1、不使用PageHelper分页插件 模块名:mybatis-012-page CarMapper接口package org.example.mapper;import org.apache.ibatis.annotations.Param; import org.example.pojo.Car;import java.util.List;public interface CarMapper {/*** 分页查询* param startInd…