当前位置: 首页 > 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 如果您相…...

Objective-C常用命名规范总结

【OC】常用命名规范总结 文章目录 【OC】常用命名规范总结1.类名(Class Name)2.协议名(Protocol Name)3.方法名(Method Name)4.属性名(Property Name)5.局部变量/实例变量(Local / Instance Variables&…...

什么是库存周转?如何用进销存系统提高库存周转率?

你可能听说过这样一句话: “利润不是赚出来的,是管出来的。” 尤其是在制造业、批发零售、电商这类“货堆成山”的行业,很多企业看着销售不错,账上却没钱、利润也不见了,一翻库存才发现: 一堆卖不动的旧货…...

MODBUS TCP转CANopen 技术赋能高效协同作业

在现代工业自动化领域,MODBUS TCP和CANopen两种通讯协议因其稳定性和高效性被广泛应用于各种设备和系统中。而随着科技的不断进步,这两种通讯协议也正在被逐步融合,形成了一种新型的通讯方式——开疆智能MODBUS TCP转CANopen网关KJ-TCPC-CANP…...

DIY|Mac 搭建 ESP-IDF 开发环境及编译小智 AI

前一阵子在百度 AI 开发者大会上,看到基于小智 AI DIY 玩具的演示,感觉有点意思,想着自己也来试试。 如果只是想烧录现成的固件,乐鑫官方除了提供了 Windows 版本的 Flash 下载工具 之外,还提供了基于网页版的 ESP LA…...

python爬虫:Newspaper3k 的详细使用(好用的新闻网站文章抓取和解析的Python库)

更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、Newspaper3k 概述1.1 Newspaper3k 介绍1.2 主要功能1.3 典型应用场景1.4 安装二、基本用法2.2 提取单篇文章的内容2.2 处理多篇文档三、高级选项3.1 自定义配置3.2 分析文章情感四、实战案例4.1 构建新闻摘要聚合器…...

Axios请求超时重发机制

Axios 超时重新请求实现方案 在 Axios 中实现超时重新请求可以通过以下几种方式: 1. 使用拦截器实现自动重试 import axios from axios;// 创建axios实例 const instance axios.create();// 设置超时时间 instance.defaults.timeout 5000;// 最大重试次数 cons…...

docker 部署发现spring.profiles.active 问题

报错: org.springframework.boot.context.config.InvalidConfigDataPropertyException: Property spring.profiles.active imported from location class path resource [application-test.yml] is invalid in a profile specific resource [origin: class path re…...

高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数

高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数 在软件开发中,单例模式(Singleton Pattern)是一种常见的设计模式,确保一个类仅有一个实例,并提供一个全局访问点。在多线程环境下,实现单例模式时需要注意线程安全问题,以防止多个线程同时创建实例,导致…...

用机器学习破解新能源领域的“弃风”难题

音乐发烧友深有体会,玩音乐的本质就是玩电网。火电声音偏暖,水电偏冷,风电偏空旷。至于太阳能发的电,则略显朦胧和单薄。 不知你是否有感觉,近两年家里的音响声音越来越冷,听起来越来越单薄? —…...

2025年渗透测试面试题总结-腾讯[实习]科恩实验室-安全工程师(题目+回答)

安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。 目录 腾讯[实习]科恩实验室-安全工程师 一、网络与协议 1. TCP三次握手 2. SYN扫描原理 3. HTTPS证书机制 二…...