汇编语言学习

文章目录

  • 前言
  • 机器语言与机器指令
  • 汇编语言与汇编指令
    • 用汇编语言编写程序的工作过程
      • 注意事项
  • 计算机组成
    • 指令和数据的表示
    • 计算机中的存储单元
    • 计算机中的总线
      • 三类总线
      • X86 CPU性能一览
  • CPU对存储器的读写
    • 内存地址空间
      • 将各类存储器看作一个逻辑存储器 —— 统一编址
      • 内存地址空间的分配方案 —— 以8086 PC机为例
  • 寄存器及数据存储
    • CPU的组成
    • 寄存器是CPU内部的信息存储单元
      • 通用寄存器 —— 以AX为例
        • "字" 在存储器中的存储
  • mov和add指令
    • 学习汇编指令 —— 用中学
      • 写出汇编指令执行的结果(1)
      • 写出汇编指令执行的结果(2)
  • 确定物理地址的方法
    • 物理地址

前言

开始学习汇编语言,学习的B站课程链接:https://www.bilibili.com/video/BV1Wu411B72F?spm_id_from=333.788.videopod.episodes&vd_source=737c6257f76c5f1bba2796b3bf263fad&p=3

参考书是王爽老师的《汇编语言第3版)


提示:以下是本篇文章正文内容,下面案例可供参考

机器语言与机器指令

  • 机器语言是机器指令的集合;
  • 机器指令是一台机器可以正确执行的命令;
  • 机器指令由一串二进制数表示,例:01010000
  • 电平脉冲
    在这里插入图片描述

汇编语言与汇编指令

  • 汇编语言的主体s是汇编指令
  • 汇编指令和机器指令的差别在于指令的表示方法上
    • 汇编指令是机器指令便于记忆的书写格式
    • 汇编指令是机器指令的助记符
操作:将寄存器BX的内容送到AX中
机器指令:1000100111011000
汇编指令:MOV AX, BX

在这里插入图片描述

用汇编语言编写程序的工作过程

在这里插入图片描述
汇编语言程序示例

assume cs : codesg	# 告诉汇编器 CS(代码段寄存器)应该指向 codesg 段
codesg segment
start:mov ax, 0123H	# 将 0123H 装载到寄存器 AXmov bx, 0456H	# 将 0456H 装载到寄存器 BXadd ax, bx		# 将 AX 和 BX 中的值相加,结果存储在 AX 中add ax, ax		# 再次将 AX 加上它自己(即 AX = AX + AX)mov ax, 4c00H	# 设置 AX 为 4C00H, 这是 DOS 的终止函数调用int 21H			# 调用中断 int 21H 来执行 DOS 功能
codesg ends
end

注意事项

  • DOS 中断:int 21H 是一个常见的 DOS 中断,用于调用各种 DOS 功能。AH=4Ch 表示程序终止功能,AL中的内容作为返回码给操作系统。
  • 假设指令:assume cs : codesg 告诉汇编器 CS(代码段寄存器)应该指向 codesg 段;

计算机组成

![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/4aad09bd0be648a9a5c398c3db5a5b6f.png
CPU是计算机的核心部件,它控制整个计算机的运作并进行运算,要想让一个CPU工作,就必须向它提供指令和数据;

指令和数据在存储器(内存)中存放,离开内存,性能再好的CPU也无法工作;

指令和数据的表示

计算机中的数据和指令,存储在内存或磁盘上;

数据和指令,都是二进制信息;

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

  • 1000100111011000 -> 89D8H(数据)
  • 1000100111011000 -> MOV AX, BX(指令)

计算机中的存储单元

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

计算机中的总线

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

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

在这里插入图片描述

三类总线

地址总线:

  • CPU是通过地址总线来指定存储单元的;
  • 地址总线宽度决定了可寻址的存储单元大小;
  • N根地址总线(宽度为N),对应寻址空间 2^N

在这里插入图片描述
数据总线:

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

例:向内存中写入数据89D8H时的数据传输
在这里插入图片描述
在这里插入图片描述

控制总线:

  • CPU通过控制总线对外部器件进行控制;
  • 控制总线是一些不同控制线的集合;
  • 控制总线宽度决定了CPU对外部器件的控制能力;

在这里插入图片描述

X86 CPU性能一览

CPU地址总线宽度寻址能力数据总线宽度一次传送数据读取1KB数据要读的次数
80801664KB81B1024
8088201MB81B1024
8086201MB162B512
802862416MB162B512
80386324GB324B256

CPU对存储器的读写

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

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

演示:

机器码:1010 0000 0000 0011 0000 0000
16进制:A00300
汇编指令:MOV AL, [3]
含义:从3号单元读取数据送入寄存器AL

在这里插入图片描述

内存地址空间

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

从CPU角度看地址空间分配

  • RAM
    • 主板上的RAM
    • 扩展槽上的RAM(例显卡)
  • ROM
    • 系统BIOS
    • 接口卡上的BIOS

将各类存储器看作一个逻辑存储器 —— 统一编址

所有的物理存储器被看作一个由若干存储单元组成的逻辑存储器;

每个物理存储器在这个逻辑存储器中占有一个地址段,即一段地址空间;

CPU在这段地址空间中读写数据,实际上就是在相对应的物理存储器中读写数据;
在这里插入图片描述

内存地址空间的分配方案 —— 以8086 PC机为例

在这里插入图片描述

寄存器及数据存储

CPU的组成

在这里插入图片描述

寄存器是CPU内部的信息存储单元

8086 CPU有14个存储器:

  • 通用寄存器:AX、BX、CX、DX
  • 变址寄存器:SI、DI
  • 指针寄存器:SP、BP
  • 指令指针寄存器:IP
  • 段寄存器:CS、SS、DS、ES
  • 标志寄存器:PSW

共性:

  • 8086 CPU所有的寄存器都是16位的,可以存放两个子节;

在这里插入图片描述

通用寄存器 —— 以AX为例

一个16位寄存器存储一个16位的数据
在这里插入图片描述

问题:8086上一代CPU中的寄存器都是8位的,如何保证程序的兼容性

方案:通用寄存器均可以分为两个独立的8位寄存器使用

细化:

  • AX可以分为AH和AL
  • BX可以分为BH和BL
  • CX可以分为CH和CL
  • DX可以分为DH和DL
寄存器寄存器中的数据所表示的值
AX01001110001000020000(4F20H)
AH0100111078(4EH)
AL0010000032(20H)
“字” 在存储器中的存储

8086是16位CPU

  • 8086的字长为16bit

一个字可以存在一个16位寄存器中

  • 这个字的高位字节存在这个寄存器的高8位寄存器
  • 这个字的低位字节存在这个寄存器的低8位寄存器

在这里插入图片描述

mov和add指令

学习汇编指令 —— 用中学

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

注:汇编指令不区分大小写

写出汇编指令执行的结果(1)

假设原AX、BX中的值均为0000H

程序段中的指令指令执行后AX中的数据指令执行后BX中的数据
mov AX, 4E20H4E20H0000H
add AX, 1406H6226H0000H
mov BX, 2000H6226H2000H
add AX, BX8226H2000H
mov BX, AX8226H8226H
add AX, BX044CH(最高位溢出)8226H

写出汇编指令执行的结果(2)

假设原AX、BX中的值均为0000H

程序段中的指令指令执行后AX中的数据指令执行后BX中的数据
mov AX, 001AH001AH0000H
mov BX, 0026H001AH0026H
add AL, BL0040H0026H
add AH, BL2640H0026H
add BH, AL2640H4026H
mov AH, 00040H4026H
add AH, 85H00C5H4026H
add AL, 93H0058H4026H

确定物理地址的方法

物理地址

CPU访问内存单元时要给出内存单元的地址

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

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

相关文章

MATLAB深度学习(七)——ResNet残差网络

一、ResNet网络 ResNet是深度残差网络的简称。其核心思想就是在,每两个网络层之间加入一个残差连接,缓解深层网络中的梯度消失问题 二、残差结构 在多层神经网络模型里,设想一个包含诺干层自网络,子网络的函数用H(x)来表示&#x…

【PHP】部署和发布PHP网站到IIS服务器

欢迎来到《小5讲堂》 这是《PHP》系列文章,每篇文章将以博主理解的角度展开讲解。 温馨提示:博主能力有限,理解水平有限,若有不对之处望指正! 目录 前言安装PHP稳定版本线程安全版解压使用 PHP配置配置文件扩展文件路径…

SSM 校园一卡通密钥管理系统 PF 于校园图书借阅管理的安全保障

摘 要 传统办法管理信息首先需要花费的时间比较多,其次数据出错率比较高,而且对错误的数据进行更改也比较困难,最后,检索数据费事费力。因此,在计算机上安装校园一卡通密钥管理系统软件来发挥其高效地信息处理的作用&a…

TCP 2

文章目录 Tcp状态三次握手四次挥手理解TIME WAIT状态 如上就是TCP连接管理部分 流量控制滑动窗口快重传 延迟应答原理 捎带应答总结TCP拥塞控制拥塞控制的策略 -- 每台识别主机拥塞的机器都要做 面向字节流和粘包问题tcp连接异常进程终止机器重启机器掉电/网线断开 Tcp状态 建…

【操作系统】实验二:观察Linux,使用proc文件系统

实验二 观察Linux,使用proc文件系统 实验目的:学习Linux内核、进程、存储和其他资源的一些重要特征。读/proc/stat文件,计算并显示系统CPU占用率和用户态CPU占用率。(编写一个程序使用/proc机制获得以及修改机器的各种资源参数。…

【密码学】AES算法

一、AES算法介绍: AES(Advanced Encryption Standard)算法是一种广泛使用的对称密钥加密,由美国国家标准与技术研究院(NIST)于2001年发布。 AES是一种分组密码,支持128位、192位和256位三种不同…

【学习笔记】目前市面中手持激光雷达设备及参数汇总

手持激光雷达设备介绍 手持激光雷达设备是一种利用激光时间飞行原理来测量物体距离并构建三维模型的便携式高科技产品。它通过发射激光束并分析反射回来的激光信号,能够精确地获取物体的三维结构信息。这种设备以其高精度、适应各种光照环境的能力和便携性&#xf…

探索 LeNet-5:卷积神经网络的先驱与手写数字识别传奇

一、引言 在当今深度学习技术蓬勃发展的时代,各种复杂而强大的神经网络架构不断涌现,如 ResNet、VGG、Transformer 等,它们在图像识别、自然语言处理、语音识别等众多领域都取得了令人瞩目的成果。然而,当我们回顾深度学习的发展历…

【数据结构——栈与队列】链栈的基本运算(头歌实践教学平台习题)【合集】

目录😋 任务描述 相关知识 测试说明 我的通关代码: 测试结果: 任务描述 本关任务:编写一个程序实现链栈的基本运算。 相关知识 为了完成本关任务,你需要掌握: 初始化栈、销毁栈、判断栈是否为空、进栈、出栈、取栈…

【笔记】架构上篇Day6 法则四:为什么要顺应技术的生命周期?

法则四:为什么要顺应技术的生命周期? 简介:包含模块一 架构师的六大生存法则-法则四:为什么要顺应技术的生命周期?&法则四:架构设计中怎么判断和利用技术趋势? 2024-08-29 17:30:07 你好&am…

Security自定义逻辑认证(极简案例)

项目结构 config SecurityConfig package com.wunaiieq.tmp2024121105.config;import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.security.crypto.password.NoOpPasswordEnco…

docker安装ddns-go(外网连接局域网)

docker先下载镜像,目前最新版是v6.7.6 也可以csdn资源下载 再导入dockers https://download.csdn.net/download/u014756339/90096748 docker load -i ddns-go.tar 启动 docker run -d --name ddns-go --restartalways --nethost -v /opt/ddns-go:/root jeessy/…

技术速递|dotnet scaffold – .NET 的下一代内容创建

作者:Sayed Ibrahim Hashimi - 首席项目经理 排版:Alan Wang Visual Studio 中为 ASP.NET Core 项目搭建脚手架是一项长期特性,是在 ASP.NET Core 发布后不久添加的。多年来,我们一直支持从命令行搭建脚手架。根据从命令行操作中获…

基于ZYNQ 7z010开发板 oled点亮的实现

dc拉高的时候就是发送128字节数据的时候 发送指令dc拉低 模式是00 sck先置低再置高 复位是与开发板上的按键一样都是低有效 25位字节指令 加 3字节的 页地址加起始结束 b0,00,10, timescale 1ns / 1ps module top0(input wire clk ,input wire rst_n,// out…

使用torch模拟 BMM int8量化计算。

使用torch模型BMM int8计算。 模拟:BMM->softmax->BMM 计算流程 import torch import numpy as np torch.manual_seed(777) def int8_quantize_per_token(x: torch.Tensor, axis: int -1, attnsFalse):if x.dtype ! torch.float32:x x.type(torch.float32)…

【CSS in Depth 2 精译_070】11.3 利用 OKLCH 颜色值来处理 CSS 中的颜色问题(下):从页面其他颜色衍生出新颜色

当前内容所在位置(可进入专栏查看其他译好的章节内容) 第四部分 视觉增强技术 ✔️【第 11 章 颜色与对比】 ✔️ 11.1 通过对比进行交流 11.1.1 模式的建立11.1.2 还原设计稿 11.2 颜色的定义 11.2.1 色域与色彩空间11.2.2 CSS 颜色表示法 11.2.2.1 RGB…

HTML:表格重点

用表格就用table caption为该表上部信息,用来说明表的作用 thead为表头主要信息,效果加粗 tbody为表格中的主体内容 tr是 table row 表格的行 td是table data th是table heading表格标题 ,一般表格第一行的数据都是table heading

15.Java 网络编程(网络相关概念、InetAddress、NetworkInterface、TCP 网络通信、UDP 网络通信、超时中断)

一、网络相关概念 1、网络通信 网络通信指两台设备之间通过网络实现数据传输,将数据通过网络从一台设备传输到另一台设备 java.net 包下提供了一系列的类和接口用于完成网络通信 2、网络 两台以上设备通过一定物理设备连接构成网络,根据网络的覆盖范…

项目中使用AntV L7地图(五)添加飞线

项目中使用AntV L7地图,添加 飞线 文档地址:https://l7.antv.antgroup.com/zh/examples/line/animate/#trip_animate 一、初始化地图 使用的地图文件为四川地图JSON,下载地址:https://datav.aliyun.com/portal/school/atlas/area_selector#&…

MySQL-DQL之数据表操作

文章目录 零. 准备工作一. 简单查询1.查询所有的商品.2.查询商品名和商品价格.3.查询结果是表达式(运算查询):将所有商品的价格10元进行显示. 二. 条件查询1. 比较查询2. 范围查询3. 逻辑查询4. 模糊查询5. 非空查询 三. 排序查询四. 聚合查询…