【汇编语言】初识汇编

news2024/11/19 7:35:09

【汇编语言】初识汇编


文章目录

  • 【汇编语言】初识汇编
  • 前言
  • 由机器语言到汇编语言
    • 机器语言与机器指令
    • 汇编语言与汇编指令
    • 汇编语言程序示例
  • 计算机组成
    • 指令和数据的表示
    • 计算机的存储单元
    • 计算机的总线
  • 内存读写与地址空间
    • 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.coloradmin.cn/o/1610208.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

精通MongoDB聚合操作API:深入探索高级技巧与实践

MongoDB 聚合操作API提供了强大的数据处理能力,能够对数据进行筛选、变换、分组、统计等复杂操作。本文介绍了MongoDB的基本用法和高级用法,高级用法涵盖了setWindowFields、merge、facet、expr、accumulator窗口函数、结果合并、多面聚合、查询表达式在…

动态库静态库linux

动态库静态库 静态库 静态库必须包含在可执行文件里,整个都要包含 缺点:消耗系统大,每个使用静态库的程序都要复制静态库(浪费内存) 影响使用场景: 在静态库内存小的时候,可以用来提升速度 制…

Linux(CentOS7)离线使用安装盘部署Telnet

# [pdf在线免费转word文档](https://orcc.online/pdf) https://orcc.online/pdf 挂载镜像CentOS-7-x86_64-DVD-1810.iso到/mnt下(其他位置也行),命令如下: mount /dev/sr0 /mnt 安装包默认在Packages目录下,需要安装…

【QT进阶】Qt Web混合编程之CMake VS2019编译并使用QCefView(图文并茂超详细版本)

往期回顾 【QT进阶】Qt Web混合编程之CEF、QCefView简单介绍-CSDN博客 【QT进阶】Qt Web混合编程之VS2019 CEF的编译与使用(图文并茂超详细介绍)-CSDN博客【QT进阶】Qt Web混合编程之QWebEngineView基本用法-CSDN博客【QT进阶】Qt Web混合编程之VS2019 C…

AI生图美学在淘宝的实践应用

本文介绍了如何制定和应用美学标准来评估和改善人工智能生成的图像质量,特别是在电商领域的应用,主要分为制定美学标准、训练美学模型、应用美学模型、升级淘宝风格模型四个步骤。 美学的定义与分析 图像质量标准:现代设计框架下,…

类和对象【二】this指针,构造函数和成员初始化列表【超详细】

文章目录 this指针this指针的定义this指针的“工作”原理this指针的作用this指针的特点 构造函数构造函数的定义构造函数的作用构造函数的特点构造函数的调用方式括号法无参构造或者全缺省构造需要传参才能调用的构造函数 隐式类型转换法是只传一个参数就能调用的构造函数是要传…

HCIE-Shell实验1

要求: 判断当前磁盘剩余空间是否有20G,如果小于20G,则将报警邮件发送给管理员,每天检查一次磁盘剩余空间。判断web服务是否运行(1、査看进程的方式判断该程序是否运行,2、通过查看端口的方式判断该程序是否运行)&…

大模型应用开发基础

AGI 时代,AI 无处不在,形成新的社会分层: AI 使用者,使用别人开发的 AI 产品AI 产品开发者,设计和开发 AI 产品基础模型相关,训练基础大模型,或为大模型提供基础设施 越向下层,重要…

Leetcode-168.Excel表列名称

题目描述 给你一个整数 columnNumber ,返回它在 Excel 表中相对应的列名称。 例如: A -> 1 B -> 2 C -> 3 ... Z -> 26 AA -> 27 AB -> 28 ...示例 1: 输入:columnNumber 1 输出:"A"…

ROS2学习笔记(一) 基本概念

1. Node 节点 节点: 完成具体功能的模块 相关命令 #运行命令 ros2 run <package_name> <executable_name>#当前节点查询查询 ros2 node list#重映射 Remapping ros2 run <package_name> <executable_name> --ros-args --remap __node:<node_na…

揭开ChatGPT面纱(一):准备工作(搭建开发环境运行OpenAI Demo)

文章目录 序言&#xff1a;探索人工智能的新篇章一、搭建开发环境二、编写并运行demo1.代码2.解析3.执行结果 本博客的gitlab仓库&#xff1a;地址&#xff0c;本博客对应01文件夹。 序言&#xff1a;探索人工智能的新篇章 随着人工智能技术的飞速发展&#xff0c;ChatGPT作为…

虚拟ip地址怎么弄到手机上

在当下的社会&#xff0c;手机已经变得至关重要&#xff0c;它融入了我们的日常生活&#xff0c;无论是上网冲浪、社交互动&#xff0c;还是工作学习&#xff0c;都离不开它。但有时候&#xff0c;由于某些限制&#xff0c;我们可能无法充分享受网络带来的便利。这时&#xff0…

《苍穹外卖》Day02部分知识点记录

一、属性的拷贝以及密码的加密 使用org.springframework.beans中的BeanUtils.copyProperties()方法时&#xff0c;二者的属性名必须要一致。 /*** 新增员工* param employeeDTO*/Overridepublic void save(EmployeeDTO employeeDTO) {Employee employee new Employee();// 对…

spring webflux 小结

一、WebFlux 简介 WebFlux 是 Spring Framework5.0 中引入的一种新的反应式Web框架。通过Reactor项目实现Reactive Streams规范&#xff0c;完全异步和非阻塞框架。本身不会加快程序执行速度&#xff0c;但在高并发情况下借助异步IO能够以少量而稳定的线程处理更高的吞吐&…

COIN++: Neural Compression Across Modalities 论文阅读笔记

1. 论文基本信息 发布于&#xff1a; TMLR 2022 2. 创新点 使用元学习将编码时间减少了两个数量级以上&#xff0c;将编码共享结构进行编码&#xff0c;并对该网络应用调制来编码实例特定信息。量化和熵编码调制。虽然我们的方法在压缩和速度方面都大大超过了 COIN&#xff0…

Navicat导入sql文件图文教程

本文使用的MySQL工具为:Navicat.默认已经连接数据库!! 步骤: 1.右键自己的数据库,选择新建数据库. 2.输入数据库名称&#xff0c;字符集选择“utf8”&#xff0c;排序规则选择“ utf8_general_ci”,确定. 3.双击新建好的“数据库”。右键点击“运行SQL文件”。 4.选择本地的s…

Linux上的uname

2024年4月19日&#xff0c;周五上午 这是我第一篇用CSDN上的markdown编辑器写的博客&#xff0c;感觉还不错 uname 是一个常用的命令行工具&#xff0c;uname 的全称是 “Unix Name”&#xff0c;它是一个 Unix 和类 Unix 操作系统上的命令行工具&#xff0c;用于获取操作系统相…

同旺科技 USB TO SPI / I2C适配器读写24LC256--页写

所需设备&#xff1a; 1、USB 转 SPI I2C 适配器&#xff1b;内附链接 2、24LC256芯片 适应于同旺科技 USB TO SPI / I2C适配器升级版、专业版&#xff1b; 从00地址开始写入64个字节&#xff0c;然后再将64个字节读回&#xff1b; 页写时序&#xff1a; 读时序&#xff1a…

【不看后悔】AGI时代,这些工具真的能让你收入翻倍!

引言 在数字化浪潮中&#xff0c;AIGC已经成为不可或缺的一部分 无论你是一名内容创作者&#xff0c;还是简单的社交媒体用户&#xff0c;免费的AI工具都能在多个层面助你一臂之力。这些工具涵盖从文本创作到图像设计&#xff0c;再到视频制作等多个方面&#xff0c;不仅可以…

Python全栈开发前端与后端的完美融合

&#x1f47d;发现宝藏 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。【点击进入巨牛的人工智能学习网站】。 在当今互联网时代&#xff0c;全栈开发已经成为了一种趋势。全栈开发者具备前端和后端开发的…