一些汇编语言的总结

一、汇编语言的介绍

1、汇编语言和处理器指令集高度相关,不同指令集的汇编语言不兼容。

2、汇编语言是对机器语言的一种抽象,用英文字符来代表运算和控制指令,用英文字母和数字代表操作数。


二、常用的汇编语言

有 x86的汇编语言,ARM汇编语言,开源指令集。


三、汇编指令的格式

格式如下:
1、每次占据一行。

2、采用下列格式:

操作码  操作数1, 操作数2案例:   mov  al, 33
mov是操作码,al, 33 是操作数。

注意:
操作码代表基本操作,例如相加、相减、相除、移位、比较、赋值等运算。

操作数代表运算数据存放位置,或者常数指定。


四、操作码注意事项

操作码代表运算和控制操作,有的需要2个操作数,有的只需要1个操作数,要查官方文档。

不同版本可能操作码不一样。

通俗解释:操作数就是加减乘除,输入输出等操作,只不过每次只能做一个运算或者操作,不能一心两用。


五、操作数注意事项

1、操作数一般是寄存器、数据栈和常量来充当。

2、操作数如果使用寄存器,那么需要指定寄存器的名字。
一般处理器寄存器很多种,每个占据2字节或者4字节。

3、操作数如果是数据栈,那么需要告诉数据栈的偏移量,也就是在字节序列的索引位置。

因为按照字节存放,有些数据占据4个字节,有的占据8个字节,需要指定开始读取的索引位置。

4、常量是编程时指定的。

通俗解释:操作数就是用来计算的数字,可能存在内存里等待临时确定,可能直接常数指定。


六、寄存器的注意事项

1、寄存器是处理器能直接读取和写入数据的存储设备。

2、寄存器是处理器和外部内存、外部存储设备(磁盘)交换数据的平台。

3、处理器用寄存器和外部设备通信,用总线来连接外部设备。

4、每当处理器需要数据,那么内存就把数据复制到寄存器,处理器从寄存器读取。

5、每当处理器输出数据,就把数据写入寄存器,内存就从寄存器读取数据。

通俗解释:寄存器就是处理器工作的平台,内存把数据放到平台上,等处理完后,内存再把数据从平台拿走。


七、用中断来调用外部功能

1、中断是处理器用来停止当前指令,保存当前状态,开始执行另一个程序的指令时作出的操作。

2、处理器需要和外部设备进行数据交换时调用中断程序。(例如磁盘读写,网络网卡读写,显示文字和图像,读取鼠标和键盘的输入)

3、BIOS提供了主板支持的中断程序,处理器只需要在寄存器设置中断程序的功能编号,然后调用该中断程序。

通俗解释:处理器想要外部数据了,就调用主板提供的中断程序。


八、显存的作用

显存是存放图像二进制数据的存储空间,是处理器直接输出图像信号的对象。

显示器从显存中读取图像数据来显示,同时用一定周期读取显存刷新图像。

通俗解释:处理器往显存里放图像的二进制数据,显示器就从显存里取数据显示。


九、数据栈和指令栈

1、汇编语言把指令和数据分开,分别放在指令栈和数据栈中。

2、指令执行时,按照地址增加的顺序读取指令,执行指令(因为指令连续存放)。

3、用指令计数器来保存当前执行的指令在指令栈的下标位置。

4、汇编语言把内存空间,显存空间连续排列,用地址来编号,每个字节一个地址,用整数递增。

5、数据栈也是一个连续存放的内存空间,每个空间有地址,方便用地址来读写数据。

按照变量类型来连续读几个字节(例如int整型连续读4个字节)。

通俗解释:把指令和数据分开,各自单独放一起,连续存放,像计数一样,加一个单位就获取一个指令,或者加一个单位就获取一个数据。

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

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

相关文章

YOLOv10涨点改进:卷积魔改 | 分布移位卷积(DSConv),提高卷积层的内存效率和速度

💡💡💡本文改进内容: YOLOv10如何魔改卷积进一步提升检测精度?提出了一种卷积的变体,称为DSConv(分布偏移卷积),其可以容易地替换进标准神经网络体系结构并且实现较低的存储器使用和较高的计算速度。 DSConv将传统的卷积内核分解为两个组件:可变量化内核(VQK)和…

iOS编程入门:揭秘神秘的开发世界

iOS编程入门:揭秘神秘的开发世界 在数字化时代的浪潮中,iOS编程成为了许多开发者热衷探索的领域。想要入门iOS编程,不仅需要掌握基础知识,还需理解其独特的生态系统。本文将通过四个方面、五个方面、六个方面和七个方面&#xff…

golang中通过反射获取结构体Tag标签定义的内容 函数和测试用例

当我们在go语言中定义结构体的时候, 经常需要给某些字段打上一个Tag标签, 如 Name string json:"name" , 那这个标签有和作用呢? 这个作用可大了,最为常用的是json序列化和反序列化, 还有各种ORM 的实体对象定义&…

C# yolov8 TensorRT +ByteTrack Demo

C# yolov8 TensorRT ByteTrack Demo 目录 效果 说明 项目 代码 Form2.cs YoloV8.cs ByteTracker.cs 下载 参考 效果 说明 环境 NVIDIA GeForce RTX 4060 Laptop GPU cuda12.1cudnn 8.8.1TensorRT-8.6.1.6 版本和我不一致的需要重新编译TensorRtExtern.dll&…

微调医疗大模型,与通用大模型效果对比

下面是一份CT描述: “肝脏大小、形态未见明确异常。肝S2见一结节状低密度影,大小约13x11mm,增强扫描呈明显渐进性强化,延迟期呈等密度。余肝实质内未见异常密度影或强化灶。肝内大血管及其分支走行未见异常,肝门区层次…

ip地址告诉别人安全吗?ip地址告诉别人会有什么风险

IP地址告诉别人安全吗?在数字化时代,IP地址作为网络连接的关键标识符,承载着重要的安全意义。然而,很多人可能并不清楚,轻易地将自己的IP地址告诉他人可能带来一系列安全风险。那么,IP地址告诉别人会有什么…

文件夹损坏0字节:全面解析、恢复技巧与预防策略

在数字时代,数据的完整性和安全性至关重要。然而,我们时常会遭遇文件夹损坏并显示为0字节的棘手问题。这种情况一旦发生,用户可能会面临数据丢失的风险。本文将详细探讨文件夹损坏0字节的现象,分析其背后的原因,并提供…

Redis-重定向

实验环境(3主3从的Redis-Cluster) 一、Redis重定向基础篇 1、MOVED重定向 Redis Custer 中,客户端可以向集群中任意节点发送请求。此时当前节点先对 Key 进行 CRC 16 计算,然后按 16384 取模确定 Slot 槽。确定该 Slot 槽所对应的…

为什么使用短链系统?

短链接(Short Link)是指将一个原始的长 URL(Uniform Resource Locator)通过特定的算法或服务转化为一个更短、易于记忆的 URL。短链接通常只包含几个字符,而原始的长 URL 可能会非常长。 短链接的原理非常简单&#x…

FPGA编程与PLC编程的区别:深入解析与对比

FPGA编程与PLC编程的区别:深入解析与对比 在工业自动化和控制系统领域,FPGA(现场可编程门阵列)编程和PLC(可编程逻辑控制器)编程都是关键的编程技术,但它们在应用、功能、结构和编程方法上存在…

IEEE编程语言排行榜:深度解析编程语言的四大维度、五大趋势、六大热门与七大挑战

IEEE编程语言排行榜:深度解析编程语言的四大维度、五大趋势、六大热门与七大挑战 在信息技术领域,编程语言排行榜一直是衡量各种编程语言流行度和影响力的重要指标。IEEE(电气电子工程师协会)作为全球最具影响力的科技专业组织之…

【Java数据结构】详解LinkedList与链表(二)

目录 1.❤️❤️前言~🥳🎉🎉🎉 2.反转一个单链表 3. 找到链表的中间节点 4.输入一个链表,输出该链表中倒数第k个结点。 5.合并两个有序链表 6.链表分割 7. 判定链表的回文结构 8.输入两个链表,找…

栈与队列练习题(2024/5/31)

1有效的括号 给定一个只包括 (,),{,},[,] 的字符串 s ,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。每个右括号都有一个对应的…

云服务和云备份的区别是什么?

随着云计算的兴起,云备份与云服务被越来越多的企业和个人所关注,在云计算中云服务与云备份之间还是有一定的区别的,本文就来介绍一下云服务和云备份之间的区别。 云服务和云备份主要的区别在备份对象、推荐场景和数据一致性等方面。 备份对象…

打印机的ip不同且连不上

打印机的ip不同且连不上 1.问题分析2.修改网段3.验证网络 1.问题分析 主要是打印机的网段和电脑不在同一个网段 2.修改网段 3.验证网络

Web前端三大主流框:React、Vue 和 Angular

在当今快速发展的 Web 开发领域,选择合适的前端框架对于项目的成功至关重要。React、Vue 和 Angular 作为三大主流前端框架,凭借其强大的功能和灵活的特性,赢得了众多开发者的青睐。本文将对这三大框架进行解析,帮助开发者了解它们…

dubbo复习:(12)服务器端的异步和客户端的异步调用

一、服务器端接口的定义和实现&#xff1a; package cn.edu.tju.service;import java.util.concurrent.CompletableFuture;public interface AsyncService {/*** 同步调用方法*/String invoke(String param);/*** 异步调用方法*/CompletableFuture<String> asyncInvoke(…

C/C++学习笔记 C读取文本文件

1、简述 要读取文本文件&#xff0c;需要按照以下步骤操作&#xff1a; 首先&#xff0c;使用该函数打开文本文件fopen()。其次&#xff0c;使用fgets()或fgetc()函数从文件中读取文本。第三&#xff0c;使用函数关闭文件fclose()。 2、每次从文件中读取一个字符 要从文本文…

整理一下win7系统java、python等各个可安装版本

最近使用win7系统&#xff0c;遇到了很多版本不兼容的问题&#xff0c;把我现在安装好的可使用的分享给大家 jdk 1.8 maven-3.9.6 centos 7 python 3.7.4 docker DockerToolbox-18.01.0-ce win10是直接一个docker软件&#xff0c;win7要安装这三个 datagrip-2020.2.3 d…

2.1Docker安装MySQL8.0

2.1 Docker安装MySQL8.0 1.拉取MySQL docker pull mysql:latest如&#xff1a;拉取MySQL8.0.33版本 docker pull mysql:8.0.332. 启动镜像 docker run -p 3307:3306 --name mysql8 -e MYSQL_ROOT_PASSWORDHgh75667% -d mysql:8.0.33-p 3307:3306 把mysql默认的3306端口映射…