[bx]是什么

[bx]这个表达方式和[0]很像,他们俩的功能也很像。之前就提到了,[0]表示一个内存单元,他的偏移地址是0。从这边我们可以引出内存单元的定义:要有内存单元的地址,要有内存单元的长度(类型,例如字单元和字节单元)

那么[bx]其实也和[0]差不多,其中0代表偏移地址是0,那么[dx]中的dx就是代表他的偏移地址在dx中,所以按照内存单元的定义来说,[dx]也表示一个内存单元,这个内存单元的偏移地址在bx中。

 这边要区分开bx和[bx],bx是类似寄存器的东西,他是有地址的,这个地址可以放数据的,[bx]则表示一个内存单元,有地址有长度

如果还是不太理解可以看一下书里面97页的实验。 

loop是什么

从字面上看loop就是循环的意思,执行loop指令的时候会执行两步操作,先会把cx中存放的内容减一,再判断cx的值,如果不为零则继续执行标号处的指令,如果为零则跳出循环继续执行标号处下一条的指令。
从这两步操作我们可以知道,cx中存放的内容是loop循环的次数,所以在使用loop循环之前,我们要先给cx赋值需要的循环次数。 
至于标号,我们之前也没碰到过,其实就是在指令前面加一个字符:用来表示标号,类似这样子

这边就给cx放入内容11,标号s,之后执行loop s就会重复11次标号s的指令。

储存循环次数的寄存器有三个从小到大依次是c1,cx,ecx,分别是二进制的8、16、32位。

debug和masm汇编编译器对指令的不同处理

之前我们大多实在debug的环境下也就是dosbox提供的dos环境去调试汇编语言,但并不是所有的调试器编译器对汇编语言的解释都是一样的,就像这个小标题一样。

这边就写一点点:书本中举例的是 mov ax,[0] 这条指令。对于debug调试器来说就不多说了,和前面说到的都一样,但是对于masm编译器来说这条指令中的[0]就会被解释成0,我们知道[0]代表的是内存单元,但是对于0masm就会有独特的逻辑去执行。

这边只是那这两个去举个例子;到这边可能会想,那怎么让汇编语言具有较好的兼容性?可以去搜看看,这边不多写。

对于循环的定义方式

上面我们利用标号s来作为循环的名称,s:后面的指令则是要循环的指令。这边要去查循环的指令不止是单单s:后面那句,也可能是一段,循环语句结束的标识是loop+标号。例如

想这种的就说明一整段都是循环语句

像这种的就是只有标号后面那一句。

关于类似c1,cx,ecx三个寄存器的关系

这三个寄存器是类似包含的关系,首先这三个寄存器依次可以存放8,16,32位二进制数,对应的十进制分别是255,65535,4294967295,其中c1同时是cx和ecx的低八位,cx是ecx的低八位,我们可以通过给这三个赋值去控制循环的次数。因为他们有类似包含的关系,所有当他们三个寄存器肯定是同时有数据或者无数据的,所有也不存在冲突的现象。

当然其他的寄存器类似ax,bx也同样是这种包含的结构。

使用指令对于操作数据长度和寄存器大小的要求

类似这段指令

粗看一边可能会有疑问为什么不直接把ds:bx的数据放入ax,而是放入a1。

这是因为操作的数据长度和寄存器的大小要一致,首先我们是依次把ffff:0~ffff:b地址内的数据给放入寄存器中,x86 架构的内存基本单位是以八位二进制数为最小内存和访问单元的,所以ffff:1内的数据大小最大也是一个字节也就是八位二进制数,所以要用也是1个字节的寄存器a1来接收这个数据。

段前缀

段前缀是用于强制指定内存访问所用段寄存器的指令前缀,其核心功能是打破 CPU 对段寄存器的默认选择,灵活访问不同段中的内存数据,是 x86 分段内存模型中实现灵活内存访问的重要机制。

其代码结构类似

mov ax, cs:[si]

其中cs就是段前缀。

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

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

相关文章

域格YM310 X09移芯CAT1模组HTTPS连接服务器

HTTPS连接服务器 本文档介绍了HTTPS连接服务器的大致流程&#xff0c;测试服务器为httpbin.org。 HTTPS连接服务器流程 创建证书文件 创建一个文件 ATFSCREATE<filename>参数&#xff1a;<filename> 文件名 写入CA证书 ATFSWRITE<filename>,<mode&…

【ManiSkill】常见envs学习笔记

1. StackCube-v1 用于模拟机器人在桌面场景中将红色立方体&#xff08;cubeA&#xff09;堆叠到绿色立方体&#xff08;cubeB&#xff09;上的操作。该任务强调精确抓取、放置和稳定性控制。成功条件包括红色立方体稳定堆叠在绿色立方体上且不被机器人抓取。 参数 (Arguments…

Java 网络编程全解析

前言&#xff1a;网络编程的意义与价值 前言&#xff1a;网络编程的意义与价值 在当今互联网时代&#xff0c;网络编程是软件开发的核心技能之一。无论是桌面应用、移动应用还是企业级系统&#xff0c;几乎都需要与网络交互。Java 作为一门跨平台的编程语言&#xff0c;提供了完…

HarmonyOS应用拉起系列(三):如何直接拉起腾讯/百度/高德地图进行导航

在鸿蒙应用开发中&#xff0c;经常需要跳转第三方地图应用&#xff08;如 腾讯地图、百度地图、高德地图&#xff09;进行导航。无论是出行类 App、物流类 App&#xff0c;还是线下活动类应用&#xff0c;都存在“跳转地图导航”的实际需求。写完HarmonyOS应用拉起系列一和二后…

PCGrad解决多任务冲突

论文解读&#xff1a;"Gradient Surgery for Multi-Task Learning" 1. 论文标题直译 Gradient Surgery: 梯度手术for Multi-Task Learning: 应用于多任务学习 合在一起就是&#xff1a;为多任务学习量身定制的梯度手术。这个名字非常形象地概括了它的核心思想。 …

Nvidia显卡架构解析与cuda应用生态浅析

文章目录 0. Nvidia显卡简介 一、主要显卡系列 二、主要GPU架构与代表产品 1.main 1.1 CUDA 13.0 的重大变化 1.2 V100 的硬件短板已显现 1.3 这意味着什么? 1.4 写在后面 彩蛋:V100 0. Nvidia显卡简介 一、主要显卡系列 GeForce 系列(消费级) 用途:游戏、创作、日常图形…

开发指南:使用 MQTTNet 库构建 .Net 物联网 MQTT 应用程序

一、背景介绍 随着物联网的兴起&#xff0c;.Net 框架在构建物联网应用程序方面变得越来越流行。微软的 .Net Core 和 .Net 框架为开发人员提供了一组工具和库&#xff0c;以构建可以在 Raspberry Pi、HummingBoard、BeagleBoard、Pine A64 等平台上运行的物联网应用程序。 MQT…

突破性能瓶颈:基于腾讯云EdgeOne的AI图片生成器全球加速实践

1. 项目背景与挑战 1.1 开发背景 随着AIGC技术爆发&#xff0c;我们团队决定开发一款多模型支持的AI图片生成器&#xff0c;主要解决以下痛点&#xff1a; 不同AI模型的参数规范不统一生成结果难以系统化管理缺乏企业级的安全水印方案全球用户访问延迟高&#xff0c;中国用户…

一、Java 基础入门:从 0 到 1 认识 Java(详细笔记)

1.1 Java 语言简介与发展历程 Java 是一门面向对象的高级编程语言&#xff0c;以“跨平台、安全、稳定”为核心特性&#xff0c;自诞生以来长期占据编程语言排行榜前列&#xff0c;广泛应用于后端开发、移动端开发、大数据等领域。 1.1.1 起源与核心人物 起源背景&#xff1…

uniapp:根据目的地经纬度,名称,唤起高德/百度地图来导航,兼容App,H5,小程序

1、需要自行申请高德地图的key,配置manifest.json 2、MapSelector选择组件封装 <template><view><u-action-sheet :list="mapList" v-model="show" @click="changeMap"></u-action-sheet></view> </template&…

我对 WPF 动摇时的选择:.NET Framework 4.6.2+WPF+Islands+UWP+CompostionApi

目录 NET Framework 4.6.2的最大亮点 为什么固守462不升级 WPF-开发体验的巅峰 为什么对WPF动摇了 基于IslandsUWP的滤镜尝试 总结 NET Framework 4.6.2的最大亮点 安全性能大提升&#xff1a; 默认启用TLS1.2协议&#xff0c;更安全&#xff0c;它为后续的版本提供了重…

SpringBoot大文件下载失败解决方案

SpringBoot大文件下载失败解决方案 后端以文件流方式给前端接收下载文件,文件过大时出现下载失败的情况或者打开后提示文件损坏,实际是字节未完全读取写入。 针对大文件下载失败的情况,以下是详细的解决方案: 大文件下载失败的主要原因 内存溢出:一次性加载大文件到内存…

torch.gather

torch.gather 介绍 torch.gather(input, dim, index, *, sparse_gradFalse, outNone) → Tensor 沿由 dim 指定的轴收集值。 对于三维张量&#xff0c;输出按如下方式确定&#xff1a; out[i][j][k] input[index[i][j][k]][j][k] # 如果 dim 0 out[i][j][k] input[i][i…

Golang | http/server Gin框架简述

http/server http指的是Golang中的net/http包&#xff0c;这里用的是1.23.10。 概览 http包的作用文档里写的很简明&#xff1a;Package http provides HTTP client and server implementations. 主要是提供http的客户端和服务端&#xff0c;也就是能作为客户端发http请求&a…

Vision Transformer (ViT) :Transformer在computer vision领域的应用(三)

Experiment 上来的一段话就概括了整章的内容。 We evaluate the representation learning capabilities of ResNet, Vision Transformer (ViT), and the hybrid. 章节的一开头就说明了,对比的模型就是 ResNet,CNN领域中的代码模型。 ViT。 上一篇中提到的Hybrid模型,也就是…

5-12 WPS JS宏 Range数组规范性测试

Range()数组是JS宏中不缺少的组成部分,了解Range()数组的特性必不可少,下面我们一起测试一下各种Range()数组。 1.Range()数组特性 单元格区域:Range("a2:m2")与Range("a2","m2")的类型都是:Range/Object,功能都为单元格区域,功能…

uniapp微信小程序保存海报到手机相册canvas

在uniapp中实现微信小程序保存海报到手机相册&#xff0c;主要涉及Canvas绘制和图片保存。以下是关键步骤和代码示例&#xff1a; 一、关键代码展示&#xff1a; 1. 模板配置&#xff1a;页面展示该海报&#xff0c;可直接查看&#xff0c;也可下载保存到手机相册&#xff0c;h…

glib2-2.62.5-7.ky10.x86_64.rpm怎么安装?Kylin Linux RPM包安装详细步骤

一、准备工作 ​确认系统版本​ 这个包是 ky10的&#xff08;也就是 openEuler 20.03 LTS SP3 或类似版本&#xff09;&#xff0c;而且是 ​x86_64 架构&#xff08;就是常见的64位电脑&#xff09;​。 你要先确认你的系统是不是这个版本&#xff0c;不然可能装不上或者出问题…

webrtc之语音活动下——VAD人声判定原理以及源码详解

文章目录前言一、高斯混合模型介绍1.高斯模型举例1&#xff09;定义2&#xff09;举例说明2.高斯混合模型(GMM)1&#xff09;定义2&#xff09;举例说明3&#xff09;一维曲线二、VAD高斯混合模型1.模型训练介绍1&#xff09;训练方法2&#xff09;训练结果2.噪声高斯模型分布1…

【Redis】-- 主从复制

文章目录1. 主从复制1.1 主从复制是怎么个事&#x1f914;1.2 拓扑结构1.2.1 一主一从拓扑1.2.2 一主多从拓扑1.2.3 树形拓扑1.3 主从复制原理1.3.1 复制过程1.3.2 数据同步PSYNC1.3.2.1 replicationid/replid (复制id)1.3.2.2 复制偏移量维护1.3.3 psync运行流程1.3.4 全量复制…