汇编语言基础

引言

     汇编语言是直接在硬件之上工作的编程语言,首先要了解硬件系统的结构,才能有效的应用汇编语言对其编程。汇编课程的研究重点放在如何利用硬件系统的编程结构和指令集有效灵活的控制系统进行工作。

基础知识

1.1机器语言

机器语言是机器指令的集合。
机器指令展开来讲就是一台机器可以正确执行的命令。
指气:01010000(PUSH AX)
电平脉冲 :

早期的程序员们将 0、1 数字编程的程序代码打在纸带或卡片上,1打孔,0不打孔,再将程序通过纸带机或卡片机输入计算机,进行运算

1.2汇编语言的产生

汇编语言的主体是汇编指令。
汇编指令和机器指令的差别在于指令的表示方法上。汇编指令是机器指令便于记忆的书写格式。
汇编指令是机器指令的助记符

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

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

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

 1.3汇编语言的组成

汇编语言由以下3类组成 :

1、汇编指令(机器码的助记符)(由编译器执行 )

2、伪指令

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

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

1.4存储器

CPU 是计算机的核心部件·它控制整个计算机的运作并进行运算,要想让一个CPU 工作,就必须向它提供指令和数据
指令和数据在存储器中存放,也就是平时所说的内存

在一台PC机中内存的作用仅次于CPU。
离开了内存,性能再好的CPU也无法工作。
磁盘不同于内存,磁盘上的数据或程序如果不读到内存中,就无法被CPU 使用。

(cpu读内存快  内存读硬盘慢)

1.5指令和数据

 指令和数据是应用上的概念。

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

1.6存储单元

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

对于大容量的存储器一般还用以下单位来计量容量 (以下用B来代表Byte) :
IKB=1024B  IMB=1024KB IGB=1024MB ITB=1024GB

1.7CPU对存储器的读写

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

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

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

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

 1.8地址总线

CPU是通过地址总线来指定存储单元的。
地址总线上能传送多少个不同的信息 ,CPU就可以对多少个存储单元进行寻址。

一个CPU有N根地址总线,则可以说这个CPU的地址总线的宽度为N。
这样的CPU最多可以寻找2的N次方个内存单元

1.9数据总线

CPU与内存或其它器件之间的数据传送是通过数据总线来进行的。
数据总线的宽度决定了CPU和外界的数据传送速度。

1.10控制总线

CPU对外部器件的控制是通过控制总线来进行的。在这里控制总线是个总称,控制总线是一些不同控制线的集合。有多少根控制总线,就意味着CPU提供了对外部器件的多少种控制。所以,控制总线的宽度决定了CPU做对外部器件的控制能力。
控制总线上发送的控制信息

前面所讲的内存读或写命令是由几根控制线综合发出的 :其中有一根名为读信号输出控制线负责由CPU 向外传送读信号,CPU 向该控制线上输出低电平表示将要读取数据 ;
有一根名为写信号输出控制线负责由CPU后外传送写信号。

1.11内存地址空间

什么是内存地址空间呢?
一个CPU的地址线宽度为10,那么可以寻址1024个内存单元,这1024个可寻到的内存单元就构成这个CPU的内存地址空间。下面深入讨论
首先需要介绍两部分基本知识,主板和接口卡。

1.12主板

在每一台PC机中,都有一个主板,主板上有核心器件和一些主要器件
这些器件通过总线 (地址总线、数据总线、控制总线) 相连。

1.13接口卡

计算机系统中,所有可用程序控制其工作的设备,必须受到CPU的控制。
CPU对外部设备不能直接控制,如显示器、音箱、打印机等。直接控制这些设备进行工作的是插在扩展插槽上的接口卡·

1.14各类存储器芯片

从读写属性上看分为两类 :随机存储器 (RAM) 和只读存储器 (ROM)
从功能和连接上分类 :
随机存储器RAM
口装有BIOS的ROM
接口卡上的RAM
PC机中各类存储器的逻辑连接情况

装有BIOS的ROMBIOS : Basic Input/Output System,基本输入输出系统。
BIOS是由主板和各类接口卡(如: 显卡网卡等) 厂商提供的软件系统,可以通过它利用该硬件设备进行最基本的输入输出。在主板和某些接O卡上插有存储相应BIOS的ROM。
Return

1.15内存地址空间.

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

假设,上图中的内存空间地址段分配如下
地址0~7FFFH的32KB空间为主随机存储器的地址空间 ;
地址8000H~9FFFH的8KB空间为显存地址空间 ;

地址A000H~FFFFH的24KB空间为各个ROM的地址空间

内存地址空间
最终运行程序的是CPU 我们用汇编编程的时候,必须要从CPU角度考虑问题。

寄存器(CPU工作原理)

概述

一个典型的CPU由运算器、控制器、寄存器等器件组成,这些器件靠内部总线相连。区别:内部总线实现CPU内部各个器件之间的联系。外部总线实现CPU和主板上其它器件的联系。   

2.1通用寄存器

16位数据在寄存器中的存放情况

数据:20000

二进制表示 :0100111000100000

在寄存器AX中的存储 :

2.2字在寄存器中的存储

一个字可以存在一个16位寄存器中,这个字的高位字节和低位字节自然就存在这个寄存器的高8位寄存器和低8位寄存器中。

2.3几条汇编指令

(汇编指令不区分大小写)

汇编指令控制CPU完成的操作用高级语言的描述
mov ax,18将18送入AXAX = 18
mov ah,78将78送入AHAH=78
add ax,8将寄存器AX中的数值加8AH=AX+8
mov ax,bx将寄存器BX中的数据送入寄存器AXAX = BX
add ax,bx将ax,bx中的内容相加,结果存在AX中AX=AX+BX

 例题:

答案:1044CH  但是因为只能存放4位  所以是  044CH

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

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

相关文章

单链表---结构体实现

定义 链表称为线性表的链式存储,顺序表逻辑上相邻的数据,存储位置也相邻。链表逻辑上相邻的数据,存储位置是随机分布在内存的各个位置上的。 故 对于每一个结点,定义的结构体是: typedef struct _LinkNode {int d…

Java-使用sqlSessionTemplate实现批量更新-模拟mybatis 动态sql

环境准备(非核心方法) 创建表 创建表的sql(下表是基于Oracle创建的) CREATE TABLE "SYSTEM"."STUDENT" ("ID" NUMBER(10, 0),"NAME" VARCHAR2(20 BYTE),"ADDRES" CLOB,PRIMARY KEY ( …

milvus和相似度检索

流程 milvus的使用流程是 创建collection -> 创建partition -> 创建索引(如果需要检索) -> 插入数据 -> 检索 这里以Python为例, 使用的milvus版本为2.3.x 首先按照库, python3 -m pip install pymilvus Connect from pymilvus import connections c…

mac电脑版数字图像处理软件:ACDSee Photo Studio 9最新 for Mac

ACDSee Photo Studio 9是一款由ACD Systems开发的功能强大的照片管理和编辑软件,专为Mac用户提供一站式解决方案,方便用户轻松浏览、管理和编辑照片。该软件提供了许多实用的工具和功能,包括高效的导入和排序工具、强大的编辑工具、智能组织和…

CustomTabBar 自定义选项卡视图

1. 用到的技术点 1) Generics 泛型 2) ViewBuilder 视图构造器 3) PreferenceKey 偏好设置 4) MatchedGeometryEffect 几何效果 2. 创建枚举选项卡项散列,TabBarItem.swift import Foundation import SwiftUI//struct TabBarItem: Hashable{ // let ico…

Java练习题-获取数组元素最大值

✅作者简介:CSDN内容合伙人、阿里云专家博主、51CTO专家博主、新星计划第三季python赛道Top1🏆 📃个人主页:hacker707的csdn博客 🔥系列专栏:Java练习题 💬个人格言:不断的翻越一座又…

Qt之给控件添加右键菜单

一、设置控件 在对应控件的属性中,将contextMenuPolicy设置为CustomContextMenu。 二、添加槽函数 在对应控件上右键选择槽函数customContextMenuRequested(QPoint)。 三、在槽函数中添加右键菜单 在槽函数中输入如下代码,添加右键菜单。 //右键菜单 …

Flutter 剪裁(Clip)

🔥 ClipOval 🔥 子组件为正方形时剪裁成内贴圆形;为矩形时,剪裁成内贴椭圆 裁剪纯色背景 ClipOval(child: Container(width: 300.w,height: 300.w,decoration: const BoxDecoration(color: Colors.red),),), 裁剪背景图片 裁剪前…

《Deep Residual Learning for Image Recognition》阅读笔记

论文标题 《Deep Residual Learning for Image Recognition》 撑起CV界半边天的论文Residual :主要思想,残差。 作者 何恺明,超级大佬。微软亚研院属实是人才辈出的地方。 初读 摘要 提问题: 更深层次的神经网络更难训练。 …

(vue3)大事记管理系统 文章管理页

[element-plus进阶] 文章列表渲染(带搜索&到分页) 表单架设:当前el-form标签配置一个inline属性,里面的元素就会在一行显示了 中英国际化处理:App.vue中el-config-provider标签包裹组件,意味着整个组…

【LeetCode高频SQL50题-基础版】打卡第6天:第31~35题

文章目录 【LeetCode高频SQL50题-基础版】打卡第6天:第31~35题⛅前言员工的直属部门🔒题目🔑题解 判断三角形🔒题目🔑题解 连续出现的数字🔒题目🔑题解 指定日期的产品价格🔒题目&am…

Java实现hack汇编器

Hack汇编语言是一种特定于计算机体系结构的汇编语言,使用Hack架构的机器码指令来编写程序。Hack是一种基于Von Neumann结构的计算机体系结构,由Harvard大学的Nand to Tetris项目开发出来,用于实现计算机硬件和软件。 Hack汇编语言主要用于在…

linux 内核中的pid和前缀树

前言: 写这个文章的初衷是因为今天手写了一个字典树,然后写字典树以后忽然想到了之前看的技术文章,linux kernel 之前的pid 申请方式已经从 bitmap 变成了 基数树,所以打算写文章再回顾一下这种数据结构算法 一、内核中pid的申请…

【学习笔记】minIO分布式文件服务系统

MinIO 一、概述 1.1 minIO是什么? MinIO是专门为海量数据存储、人工智能、大数据分析而设计的对象存储系统。(早前流行的还有FastDFS) 据官方介绍,单个对象最大可存储5T,非常适合存储海量图片、视频、日志文件、备…

java.sql.SQLFeatureNotSupportedException解决方法

使用MyBatis访问数据库查询数据时报错: Caused by: java.sql.SQLFeatureNotSupportedExceptionat com.alibaba.druid.pool.DruidPooledResultSet.getObject(DruidPooledResultSet.java:1771)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun…

03在命令行环境中创建Maven版的Java工程,了解pom.xml文件的结构,了解Java工程的目录结构并编写代码,执行Maven相关的构建命令

创建Maven版的Java工程 Maven工程的坐标 数学中使用x、y、z三个向量可以在空间中唯一的定位一个点, Maven中也可以使用groupId,artifactId,version三个向量在Maven的仓库中唯一的定位到一个jar包 groupId: 公司或组织域名的倒序, 通常也会加上项目名称代表公司或组织开发的一…

JDBC操作BLOB类型字段

JDBC中Statement接口本身不能直接操作BLOB数据类型 操作BLOB数据类型需要使用PreparedStatement或者CallableStatement(存储过程) 这里演示通过PreparedStatement操作数据库BLOB字段 设置最大传入字节 一般是4M 可以通过以下命令修改 set global max_allowed_packet1024*1…

网页在线打开PDF_网站中在线查看PDF之pdf.js

一、pdf.js简介 PDF.js 是一个使用 HTML5 构建的便携式文档格式查看器。 pdf.js 是社区驱动的,并由 Mozilla 支持。我们的目标是为解析和呈现 PDF 创建一个通用的、基于 Web 标准的平台。 pdf.js 将 PDF 文档转换为 HTML5 Canvas 元素,并使用 JavaScr…

Puppeteer结合测试工具jest使用(四)

Puppeteer结合测试工具jest使用(四) Puppeteer结合测试工具jest使用(四)一、简介二、与jest结合使用,集成到常规测试三、支持其他的几种四、总结 一、简介 Puppeteer是一个提供自动化控制Chrome或Chromium浏览器的Node…

MyBatis(中)

目录 1、动态sql: 1、if标签: 2、where标签: 3、 trim标签: 4、set标签: 5、choose when otherwise: 6、模糊查询的写法: 7、foreach标签: (1)批量删除…