汇编语言基础

news2025/1/18 20:30:42

引言

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

基础知识

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.coloradmin.cn/o/1095845.html

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

相关文章

Stm32_标准库_13_串口蓝牙模块_手机与蓝牙模块通信

代码: #include "stm32f10x.h" // Device header #include "Delay.h" #include "OLED.h" #include "Serial.h"char News[100] "";uint8_t flag 1;void Get_Hc05News(char *a){uint32_t i 0…

设计模式之是简单工厂模式

分类 设计模式一般分为三大类:创建型模式、结构型模式、行为型模式。 创建型模式:用于创建对象,共五种,包括单例模式、简单工厂模式、工厂方法模式、抽象工厂模式、建造者模式、原型模式。结构型模式:用于处理类或对…

STM32 ---- 再次学习STM32F103C8T6/STM32F409IGT6

目录 一、环境搭建及介绍 关于STM32基础介绍 新建工程 外设案例 LED流水灯 蜂鸣器 上拉电阻和下拉电阻知识 电压比较器 c语言基础知识 类型、结构体、枚举 类型int8_t int16_t int32_t 宏替换 #define 和typedef用法 结构体两种填充方法 和 命名规则 枚举用法 常用…

云安全——云计算基础

0x00 前言 学习云安全,那么必然要对云计算相关的内容进行学习和了解,所以云安全会分为两个部分来进行,首先是云计算先关的内容。 0x01 云计算 广泛传播 云计算最早大范围传播是2006年,8月,在圣何塞【1】举办的SES&a…

Vs2017搭建QT开发环境

前置条件: vs2017 前提需要安装Qt的插件 : 若是没有,通过 “工具->扩展和更新->联机->Qt Visual Studio Tools”,安装Qt Visual Studio Tools 1、新建工程"文件->新建->项目",出现如下界面…

Yakit工具篇:爆破与未授权检测的使用

简介(来自官方文档) 爆破和未授权检测是网络安全领域中一种常见的测试技术,其主要目的是测试系统或应用程序中的口令是否强健,Yakit的爆破与未授权检测模块则实现了该部分的内容。 这个模块可以对多种常见协议和服务(如ftp、memcached、mon…

【操作系统】信号量机制(整型信号量、记录型信号量),用信号量实现进程互斥、同步、前驱关系

🐌个人主页: 🐌 叶落闲庭 💨我的专栏:💨 c语言 数据结构 javaEE 操作系统 Redis 石可破也,而不可夺坚;丹可磨也,而不可夺赤。 信号量 一、信号量机制1.1 整型信号量1.2 记…

05_51单片机led流水线的实现

1:step创建一个新的项目并将程序烧录进入51单片机 以下是51单片机流水线代码的具体实现 #include <REGX52.H>void Delay500ms() //11.0592MHz {unsigned char i, j, k;i 4;j 129;k 119;do{do{while (--k);} while (--j);} while (--i); }void main(){while(1){P1 0…

深入理解React中的useEffect钩子函数

引言&#xff1a; React是一种流行的JavaScript库&#xff0c;它通过组件化和声明式编程的方式简化了前端开发。在React中&#xff0c;一个核心概念是组件的生命周期&#xff0c;其中包含了许多钩子函数&#xff0c;用于管理组件的不同阶段。其中之一就是useEffect钩子函数&…

完成了一个小项目:修改了一个用PHP+MySQL写的建网站用的CMS原程序

最近一段时间&#xff0c;我建了一个网站。建一个网站及简单也复杂。要功能合适&#xff0c;界面合适&#xff0c;也不是容易的事。开始用了一个现成的建站软件WordPress&#xff0c;但是对界面不满意。后来找了另外一个带源码的程序&#xff0c;修改该程序花了十多天时间。到目…

metaRTC7集成lvgl ui demo编译指南

概要 开源轻量级嵌入式图形库lvgl:Light and Versatile Graphics Library&#xff0c;最低只需8kb内存&#xff0c;可为任何 MCU、MPU 和显示类型创建漂亮的 UI。 metaRTC新增lvgl demo&#xff0c;可在linux下编译运行。 源码下载 https://github.com/metartc/metaRTC/rel…

Spring Cloud的革新:服务网格和云原生整合

文章目录 介绍Spring Cloud服务网格的兴起Spring Cloud与Service Mesh的整合1. 服务发现2. 负载均衡3. 故障处理4. 安全性 云原生整合结论 &#x1f389;欢迎来到架构设计专栏~Spring Cloud的革新&#xff1a;服务网格和云原生整合 ☆* o(≧▽≦)o *☆嗨~我是IT陈寒&#x1f37…

【力扣1876】长度为三且各字符不同的子字符串

&#x1f451;专栏内容&#xff1a;力扣刷题⛪个人主页&#xff1a;子夜的星的主页&#x1f495;座右铭&#xff1a;前路未远&#xff0c;步履不停 目录 一、题目描述二、题目分析 一、题目描述 题目链接&#xff1a;长度为三且各字符不同的子字符串 如果一个字符串不含有任何…

一卷到底,大明哥带你横扫 Netty

上一个死磕 Java 专栏【死磕 NIO】(当然写的不是很好&#xff0c;争取今年将它重写一遍)是**【死磕 Netty】**的铺垫&#xff0c;对于我们 Java 程序员而言&#xff0c;我们在实际开发过程一般都不会直接使用 Java NIO 作为我们的网络编程框架&#xff0c;因为写出一套高质量的…

【C++初阶(二)缺省参数与函数重载】

本专栏内容为&#xff1a;C学习专栏&#xff0c;分为初阶和进阶两部分。 通过本专栏的深入学习&#xff0c;你可以了解并掌握C。 &#x1f493;博主csdn个人主页&#xff1a;小小unicorn ⏩专栏分类&#xff1a;C &#x1f69a;代码仓库&#xff1a;小小unicorn的代码仓库&…

Kwik Trip IT系统遭遇神秘的“网络事件”导致系统故障

导语 近日&#xff0c;美国连锁便利店和加油站Kwik Trip遭遇了一系列神秘的业务中断&#xff0c;这很可能是一次赎金软件攻击。本文将为您详细介绍此次事件的背景和影响&#xff0c;并探讨赎金软件攻击对企业和个人的危害。 神秘的“网络事件” Kwik Trip是一家在密歇根州、明尼…

云上攻防-云原生篇K8s安全Config泄漏Etcd存储Dashboard鉴权Proxy暴露

文章目录 云原生-K8s安全-etcd未授权访问云原生-K8s安全-Dashboard未授权访问云原生-K8s安全-Configfile鉴权文件泄漏云原生-K8s安全-Kubectl Proxy不安全配置 云原生-K8s安全-etcd未授权访问 攻击2379端口&#xff1a;默认通过证书认证&#xff0c;主要存放节点的数据&#x…

14 | 乐观锁机制和重试机制在实战中应该怎么用

什么是乐观锁&#xff1f; 乐观锁在实际开发过程中很常用&#xff0c;它没有加锁、没有阻塞&#xff0c;在多线程环境以及高并发的情况下 CPU 的利用率是最高的&#xff0c;吞吐量也是最大的。 而 Java Persistence API 协议也对乐观锁的操作做了规定&#xff1a;通过指定 Ve…

服务器感染了.360、.halo勒索病毒,如何确保数据文件完整恢复?

导言&#xff1a; 数据的安全性至关重要&#xff0c;但威胁不断进化&#xff0c;.360、.halo勒索病毒是其中的令人担忧的勒索软件。本文91数据恢复将深入介绍.360、.halo勒索病毒&#xff0c;包括其威胁本质、数据恢复方法和如何采取预防措施来保护您的数据。 如果受感染的数据…

智慧公厕高精尖技术揭秘,让卫生管理更智能、更舒适

随着科技的飞速发展&#xff0c;智慧公厕正逐渐走进人们的生活。借助物联网、互联网、云计算、大数据、人工智能、自动化控制等技术的应用&#xff0c;智慧公厕将卫生管理提升到一个全新的水平&#xff0c;为公众打造了清洁舒适的使用环境。本文以智慧公厕源头厂家广州中期科技…