当前位置: 首页 > news >正文

计组雨课堂(5)知识点总结——备考期末复习(xju)

  1. 在汇编语言源程序中,“微指令语句"不是常见的组成部分,因为微指令通常是在硬件层面进行处理的,而不是在汇编语言层面。因此,不属于汇编语言源程序的是"微指令语句”。
  2. 在汇编语言中,组成指令语句和伪指令语句的4个字段分别是:名字字段、操作符字段、操作数字段和注释字段。
  3. 在汇编语言中,用来定义字节、字和双字数据的数据定义伪指令有以下三个:
    DB:定义字节(Byte)数据。
    DW:定义字(Word)数据。
    DD:定义双字(Doubleword)数据。
    因此,"DQ"不是用来定义字节、字和双字数据的数据定义伪指令之一。"DQ"通常用于定义四字(Quadword)数据。
  4. 假设 DA_B2 是一个标签,那么在这条语句中,DB 10H DUP(ABCDE) 将会分配一段连续的存储单元,并将字符串 “ABCDE” 重复 10H(16 次)放入这段存储单元。每个字符占用一个字节,因此:
    5 字节/串×16 次=80字节转换成十六进制表示:80 字节 = 50H
    所以,如果 DA_B2 是一个标签,那么这段程序将需要分配 50H 个字节的存储单元

在这里插入图片描述

  1. 累加器通常用来存储中间结果,特别是在执行一系列的算术或逻辑操作时

  2. MACRO伪指令的作用是定义一个包含一系列汇编指令或其他宏指令的指令序列。可以理解为函数定义的标志

  3. 假设 CS 寄存器包含代码段的地址,DS 寄存器包含数据段的地址,那么可以使用 ASSUME 伪指令来建立这种关联关系:

ASSUME CS:CODE, DS:DATA

这样,在代码中引用 CODE 段时,汇编器会将其转换为 CS,指示汇编器使用 CS 寄存器中的值作为代码段的地址。同样,引用 DATA 段时,汇编器会将其转换为 DS,指示汇编器使用 DS 寄存器中的值作为数据段的地址。

  1. DB:单字节
    DW:单字,双字节
    DD:双字,四字节
    DQ:四字,八字节

  2. MACRO:定义可重用的汇编指令序列,类似于函数调用,在预处理阶段被展开成汇编指令。

  3. EQU:定义符号常量,给常量赋予一个特定的值,在程序中代表其对应的值。

  4. STRUCT:定义数据结构,允许定义复合类型的数据结构,由多个成员组成,每个成员可以有不同的数据类型。

  5. PROC:定义子程序或过程,将程序结构化成模块化形式,提高代码的可读性和可维护性,并能在程序中多次调用。

  6. OFFSET:计算变量或标签相对于段的偏移量。

  7. TYPE:指定变量的数据类型。

  8. SEGMENT:定义一个段,用于组织和管理程序中的数据和指令。

  9. GROUP:定义一个组,用于将多个段组合在一起,方便进行分段程序设计。

  10. 在这里插入图片描述

  11. 在这里插入图片描述

  12. 当一个标号已经使用隐含方式设置了类型属性时,例如,通过段寄存器来隐含地确定了标号的类型属性(如CS),那么这个标号就已经确定了其所属的段,因此就不可能再设置FAR属性了。这是因为在已经明确了标号所属段的情况下,再设置FAR属性就没有意义了,而且也不符合语义上的规范。

  13. 虽然伪指令在汇编程序中起到重要的作用,但它们并不会被编译成机器指令

  14. 存储器的地址编址方式(从低地址向高地址递增还是从高地址向低地址递增)取决于计算机的体系结构和设计,而将一个段定位在所有其他段的最高地址,可以使得该段的地址范围不会与其他段的地址范围发生重叠,从而更好地管理和利用存储器空间。


  15. mov指令错误总结

  16. 下面的原因解释可以帮助理解: 这些限制都是基于x86架构处理器指令集的设计原则和硬件实现方式。以下是详细解释:

  17. CS、IP的值不可以作为目标操作数

    • 原因:CS(代码段寄存器)和IP(指令指针寄存器)直接控制着程序的执行流程。CS:IP组合确定了当前正在执行的指令的地址。如果允许对CS或IP进行直接写操作,可能会导致程序执行流程混乱或不可预测。因此,这些寄存器的修改通常只能通过特定的控制转移指令(如CALL、JMP、RET等)来进行。
  18. dest、src不可以同时作为存储器操作数出现

    • 原因:x86架构中的大多数指令在执行时只能操作一个存储器地址,而不能同时涉及两个存储器地址。这样设计可以简化指令的硬件实现和提高执行速度。指令的操作数必须至少有一个是寄存器或立即数,以减少复杂的内存访问。
  19. 段寄存器不能相互转送

    • 原因:段寄存器(如CS、DS、ES、SS等)用于分段内存管理,每个段寄存器有特定的用途,负责不同类型的内存访问。这些段可以是代码段(存放代码)、数据段(存放数据)、**堆栈段(存放函数调用时的参数和返回地址)**设计段寄存器不能相互转送的限制可以避免段寄存器的误用,从而保证程序的稳定性和安全性。改变段寄存器的值会直接影响内存访问,所以这种操作被严格限制。如果允许把CS的内容转送到DS,程序会把代码当成数据处理,这会导致混乱。
  20. 不能把立即数送入段寄存器
    立即数是什么?
    立即数是程序中直接写在指令里的数值。例如,在指令MOV AX, 10中,10就是一个立即数。

为什么不能直接把立即数送入段寄存器?
段寄存器需要特别处理:段寄存器不仅仅是存储一个数值,它们指向内存的特定区域。把一个立即数直接送入段寄存器可能会指向一个无效的内存区域。
安全性:通过禁止直接使用立即数,可以强制程序员使用间接的方式设置段寄存器的值。例如,首先把值放入一个普通寄存器(如AX),然后通过MOV DS, AX把这个值设置到段寄存器。这种方式可以在设置段寄存器值之前进行必要的校验和处理,确保段寄存器始终指向一个有效的内存区域。

  1. 在实模式下,物理地址由段基值(SEG)和段内偏移地址(OFFSET)组成,其计算方式是将段基值左移4位(即乘以16)后与段内偏移地址相加。20位,可以表示1MB的物理内存空间。
  2. 在这里插入图片描述
  3. JBE,JS等指令

这一章节还需要补一补。比如,哪些操作码会影响标志位。还有js,jns,jne等等这些指令是什么,还需要对书上勾画的代码题好好看一下

相关文章:

计组雨课堂(5)知识点总结——备考期末复习(xju)

在汇编语言源程序中,“微指令语句"不是常见的组成部分,因为微指令通常是在硬件层面进行处理的,而不是在汇编语言层面。因此,不属于汇编语言源程序的是"微指令语句”。在汇编语言中,组成指令语句和伪指令语句…...

springboot基本使用十一(自定义全局异常处理器)

例如:我们都知道在java中被除数不能为0,为0就会报by zero错误 RestController public class TestController {GetMapping("/ex")public Integer ex(){int a 10 / 0;return a;}} 打印结果: 如何将这个异常进行处理? 创…...

SpringSecurity6从入门到实战之SpringSecurity整合自动装配详解(源码级讲解,耐心看完)

SpringSecurity6从入门到实战之SpringSecurity整合自动装配详解 这里我先引出问题然后再来一步步进行剖析,SpringSecurity到底是如何实现引入依赖后所有请求都需要进行认证并且会弹出login登录表单页面. 接下来会对SpringBoot的自动装配进行详解,SpringSecurity也是通过自动装配…...

Java Web是前端吗:深入解析Java Web技术的定位与边界

Java Web是前端吗:深入解析Java Web技术的定位与边界 在探讨Java Web是否属于前端领域时,我们首先需要明确Java Web技术的定位和它所涉及的范畴。本文将从四个方面、五个方面、六个方面和七个方面来深入解析这一问题,带您领略Java Web技术的…...

The minCompileSdk (34) specified in adependency‘s AAR metadata

新版AS新增Activity的时候,数据结构是:import androidx.activity.EdgeToEdge; import androidx.appcompat.app.AppCompatActivity; import androidx.core.graphics.Insets; import androidx.core.view.ViewCompat; import androidx.core.view.WindowInse…...

MySQl基础入门⑬.5

创建多表连接查询 表准备 CREATE TABLE 员工信息 (员工号 INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,姓名 VARCHAR(50) NOT NULL,性别 ENUM(男, 女) NOT NULL,出生日期 DATE NOT NULL,部门 VARCHAR(50) NOT NULL,手机号码 VARCHAR(20) NOT NULL,-- 根据数据库不同&#x…...

【遂愿赠书 - 1期】:安恒“网安三剑客”-大模型时代下的网络安全实战指南

文章目录 一、图书背景二、网安实战宝典2.1《内网渗透技术》2.2《渗透测试技术》2.3《Web应用安全》 三、校企合作,产学研结合四、大模型时代的数字安全五、 网络安全无小事 一、图书背景 大模型风潮已掀起,各大巨头争相入局,从ChatGPT到Sor…...

【C++入门到精通】C++ thread线程库 [ C++入门 ]

阅读导航 引言一、thread类的简单介绍二、thread类的用法1. 创建线程2. 使用 Lambda 表达式3. 传递参数给线程4. 线程的 join 和 detach5. 检查线程是否可 join6. 线程的 ID7. 线程的移动语义8. 线程的析构🚨 注意事项 三、线程函数参数温馨提示 引言 C thread线程…...

CMakeFile.txt通过sysroot方式后生成makefile报错

报错信息如下: -- The C compiler identification is unknown -- The CXX compiler identification is unknown -- Check for working C compiler: /home/xj/asm/host/bin/aarch64-buildroot-linux-gnu-gcc -- Check for working C compiler: /home/xj/asm/host/bi…...

Python 将Word、Excel、PDF、PPT文档转为OFD文档

OFD(Open Fixed-layout Document )是我国自主制定的一种开放版式文件格式标准。OFD文档具有不易被篡改、格式独立、版式固定等特点,目前常用于政府公文、金融、电子发票等领域。 如果想要通过Python将Office文档(如Word、Excel或…...

【java11】java11新特性之局部变量类型推断升级

局部变量类型推断是java10开始新增的新特性,java11中对局部变量推断进行了升级,var支持添加注解的语法格式,Java10中是无法实现的,在Java11中加入了这样的语法。 Lambda中使用var修饰符 Java11允许在lambda表达式中使用var&…...

遥感卫星影像处理流程

当空中的遥感卫星获取了地球数字影像,并传回地面,是否工作就结束了?答案显然是否定的,相反,这正是遥感数字图像处理工作的开始。 遥感数字图像(Digital image,后简称“遥感影像”)是…...

【AR开发-开源框架】使用Sceneform-EQR快速开发AR应用,当前接入了AREngine、ORB-SLAM,可快速地适配不同的安卓设备

Sceneform-EQR Sceneform 概览 Sceneform是一个3D框架,具有基于物理的渲染器,针对移动设备进行了优化,使您可以轻松构建增强现实应用程序,而无需OpenGL。 借助 Sceneform,您可以轻松地在 AR 应用和非 AR 应用中渲染…...

学生信息管理系统C++

设计目的 使学生进一步理解和掌握课堂上所学的面向对象C编程知识,巩固和加深学生对C面向对象课程的基本知识的理解和掌握。掌握C面向对象编程和程序调试的基本技能,学会利用C语言进行基本的软件设计,着重提高运用C面向对象语言解决实际问题的…...

前端开发三大主流框架解析

Web前端三大主流框架分别是Angular、React和Vue.js。以下是《优联前端》关于这三个框架解析介绍: Angular: 来源与开发者:Angular是由Google开发的前端框架。功能特点:Angular是一个完整的框架,包括了数据绑定、组件化…...

【2.文件和目录相关(下)】

一、查看文件内容命令 1、cat 文件名:用于显示文件内容,比如 cat test.c。 (1)cat -b test.c 表示加行号显示文件内容。 (2)cat -s test.c 表示多个空行合并成一个空行显示。 2、nl 文件名:…...

【C语言】结构体与内存对齐

前言 在本篇博客,我将介绍结构体类型,结构体变量的创建和初始化,重点介绍结构中存在的内存对齐。 结构变量 结构是一些值的集合,这些值被称为成员变量。结构的每个成员可以是不同类型的变量。 在理解结构的时候,我们…...

【机器学习】之 kmean算法原理及实现

基本概念 K-Means 聚类算法的目标是将数据集分成 ( K ) 个簇,使得每个簇内的数据点尽可能相似,而簇与簇之间尽可能不同。这种相似度是通过计算数据点与簇中心的距离来衡量的。 算法步骤 选择簇的数量 ( K ):随机选择 ( K ) 个数据点作为初…...

国产高边驱动HD70202Q替换英飞凌BTS7040-2

高边驱动也称之为高边开关,主要用于车内负载的驱动与开关,并对负载进行保护和诊断。高边驱动以高可靠性、灵活性、低功耗以及小型轻量等特点,正逐渐替代传统的保险丝、继电器等方案。 RAMSUN提供的HD70202Q车规级双通道智能高边驱动的输入控…...

2024年06月在线IDE流行度最新排名

点击查看最新在线IDE流行度最新排名(每月更新) 2024年06月在线IDE流行度最新排名 TOP 在线IDE排名是通过分析在线ide名称在谷歌上被搜索的频率而创建的 在线IDE被搜索的次数越多,人们就会认为它越受欢迎。原始数据来自谷歌Trends 如果您相…...

树莓派超全系列教程文档--(61)树莓派摄像头高级使用方法

树莓派摄像头高级使用方法 配置通过调谐文件来调整相机行为 使用多个摄像头安装 libcam 和 rpicam-apps依赖关系开发包 文章来源: http://raspberry.dns8844.cn/documentation 原文网址 配置 大多数用例自动工作,无需更改相机配置。但是,一…...

关于nvm与node.js

1 安装nvm 安装过程中手动修改 nvm的安装路径, 以及修改 通过nvm安装node后正在使用的node的存放目录【这句话可能难以理解,但接着往下看你就了然了】 2 修改nvm中settings.txt文件配置 nvm安装成功后,通常在该文件中会出现以下配置&…...

【机器视觉】单目测距——运动结构恢复

ps:图是随便找的,为了凑个封面 前言 在前面对光流法进行进一步改进,希望将2D光流推广至3D场景流时,发现2D转3D过程中存在尺度歧义问题,需要补全摄像头拍摄图像中缺失的深度信息,否则解空间不收敛&#xf…...

土地利用/土地覆盖遥感解译与基于CLUE模型未来变化情景预测;从基础到高级,涵盖ArcGIS数据处理、ENVI遥感解译与CLUE模型情景模拟等

🔍 土地利用/土地覆盖数据是生态、环境和气象等诸多领域模型的关键输入参数。通过遥感影像解译技术,可以精准获取历史或当前任何一个区域的土地利用/土地覆盖情况。这些数据不仅能够用于评估区域生态环境的变化趋势,还能有效评价重大生态工程…...

JS设计模式(4):观察者模式

JS设计模式(4):观察者模式 一、引入 在开发中,我们经常会遇到这样的场景:一个对象的状态变化需要自动通知其他对象,比如: 电商平台中,商品库存变化时需要通知所有订阅该商品的用户;新闻网站中&#xff0…...

PAN/FPN

import torch import torch.nn as nn import torch.nn.functional as F import mathclass LowResQueryHighResKVAttention(nn.Module):"""方案 1: 低分辨率特征 (Query) 查询高分辨率特征 (Key, Value).输出分辨率与低分辨率输入相同。"""def __…...

计算机基础知识解析:从应用到架构的全面拆解

目录 前言 1、 计算机的应用领域:无处不在的数字助手 2、 计算机的进化史:从算盘到量子计算 3、计算机的分类:不止 “台式机和笔记本” 4、计算机的组件:硬件与软件的协同 4.1 硬件:五大核心部件 4.2 软件&#…...

Chromium 136 编译指南 Windows篇:depot_tools 配置与源码获取(二)

引言 工欲善其事,必先利其器。在完成了 Visual Studio 2022 和 Windows SDK 的安装后,我们即将接触到 Chromium 开发生态中最核心的工具——depot_tools。这个由 Google 精心打造的工具集,就像是连接开发者与 Chromium 庞大代码库的智能桥梁…...

Python 高效图像帧提取与视频编码:实战指南

Python 高效图像帧提取与视频编码:实战指南 在音视频处理领域,图像帧提取与视频编码是基础但极具挑战性的任务。Python 结合强大的第三方库(如 OpenCV、FFmpeg、PyAV),可以高效处理视频流,实现快速帧提取、压缩编码等关键功能。本文将深入介绍如何优化这些流程,提高处理…...

React从基础入门到高级实战:React 实战项目 - 项目五:微前端与模块化架构

React 实战项目:微前端与模块化架构 欢迎来到 React 开发教程专栏 的第 30 篇!在前 29 篇文章中,我们从 React 的基础概念逐步深入到高级技巧,涵盖了组件设计、状态管理、路由配置、性能优化和企业级应用等核心内容。这一次&…...