计组雨课堂(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等等这些指令是什么,还需要对书上勾画的代码题好好看一下

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

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

相关文章

直方图滤波、粒子滤波、卡尔曼滤波

三者都是基于贝叶斯滤波。 粒子滤波和直方图滤波不要求高斯分布,可解决非线性 卡尔曼滤波要求高斯分布且线性。扩展卡尔曼滤波为了解决非线性问题,利用泰勒展开进行一阶近似。 直方图滤波就是贝叶斯滤波的直观实现。自动驾驶定位算法-直方图滤波(Hist…

【Linux终端探险】:从入门到熟练,玩转基础命令的秘密(二)

文章目录 🚀Linux基础命令(二)🌈1. 寻找目录/文件命令⭐2. 创建文件命令👊3. 网络接口查询命令❤️4. 打包命令💥5. 解压命令 上期回顾: 🔥🔥🔥【Linux终端探…

19、matlab信号预处理中的中值滤波(medfilt1()函数)和萨维茨基-戈雷滤波滤(sgolayfilt()函数)

1、中值滤波:medfilt1()函数 说明:一维中值滤波 1)语法 语法1:y medfilt1(x) 将输入向量x应用3阶一维中值滤波器。 语法2:y medfilt1(x,n) 将一个n阶一维中值滤波器应用于x。 语法3:y medfilt1(x,n…

2024年项目任务管理软件大盘点:12款值得一试的主流工具

12款优秀的项目任务管理软件:PingCode、Worktile、AIrTable、ClickUp、Teambition、Asana、Todoist、TAPD、Monday.com、Notion、Microsoft Project、Trello。 任务管理软件对于生活繁忙的人来说极为重要。它帮助用户有效跟踪他们需要完成的各项任务,包括…

牛客热题:没有重复数字的全排列

📟作者主页:慢热的陕西人 🌴专栏链接:力扣刷题日记 📣欢迎各位大佬👍点赞🔥关注🚓收藏,🍉留言 文章目录 牛客热题:没有重复数字的全排列题目链接方…

LeetCode - 二分查找(Binary Search)算法集合(Python)[左右边界|旋转数组|双列表]

欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://spike.blog.csdn.net/article/details/139419653 二分查找,也称为折半查找,是一种在有序数组中查找特定元素的高效算法。其基本原理是将待搜索的区间分成两半&am…

小猪APP分发:如何轻松进行在线封装APP

你是否曾经因为需要封装一个新版本的APP而感到头疼?传统的封装过程往往繁琐且耗时。但是,别担心,现在有了“小猪APP分发”,一切变得如此简单。 小猪APP分发www.appzhu.net是一个专门提供在线APP封装服务的平台。无论你是开发者还…

Thingsboard物联网网关接入ThingsBoard物联网平台的操作说明

本文包含关于如何配置ThingsBoard 平台和连接钡铼技术R40设备的说明。ThingsBoard平台是一个用于数据收集、处理、可视化和设备管理的开源物联网平台。它通过行业标准MQTT协议实现设备连接。ThingsBoard结合了可扩展性、容错性和性能,因此您永远不会丢失数据。 4G L…

因为侵权只能重装系统后的必备软件List

前因:自从上次被adobe警告了后,又被source insight警告了… 正好得升级系统,不如直接清清爽爽的重装系统吧,一切回到解放前,重新配置电脑, 该文记载了我办公必备的宝贝软件们 1、Firefox-火狐浏览器&#x…

18、matlab信号生成与预处理--剔除异常值:hampel()函数

1、语法 说明:对输入向量x应用Hampel滤波器来检测和去除异常值。 1)y hampel(x) 参数:x:输入信号 y:预处理的输出信号 对于x的每个样本,函数计算由样本及其周围的六个样本组成的窗口的中位数,每边三…

PHPStudy(xp 小皮)V8.1.1 通过cmd进入MySQL命令行模式

PHPStudy是一个PHP开发环境集成包,可用在本地电脑或者服务器上,该程序包集成最新的PHP/MySql/Apache/Nginx/Redis/FTP/Composer,一次性安装,无须配置即可使用。MySQL MySQL是一个关系型数据库管理系统,由瑞典 MySQL A…

元宇宙NFG结合IPO线上营销模型合理降税

在当今快速演进的互联网和区块链技术背景下,我们见证了从移动端购物到区块链热潮,再到如今市场竞争日趋激烈的变革。尤其是在2024年这个关键节点,许多平台为了吸引用户,推出了各种创新的商业模式。然而,如何在这样的环…

ssh远程转发22端口,使用shell工具进行连接|使用服务器地址ssh连接本地ubuntu|端口映射

☆ 问题描述 我在内网主机中,使用docker创建了多个虚拟机,我希望能通过我的公网ip服务器端口进行shell访问 ★ 解决方案 我创建一个新的虚拟机为例 1. 创建并打开容器 docker run -itd --name test ubuntu2. 进入容器 docker exec -it test /bin/b…

react 中使用 swiper

最近项目中需要用到轮播图,我立马想起了 swiper ,那么本文就来带大家体验一下如何在 React 中使用这个插件,使用的是 函数组 hooks 的形式。 需求非常简单,就是一个可以自动播放、点击切换的轮播图(跑马灯&#xff0…

心理咨询系统|心理咨询系统成品开发功能

心理咨询系统开发后端设计是一个复杂且精细的过程,涉及多个关键领域的专业知识和技术。本文将详细探讨心理咨询系统开发后端设计的各个方面,包括系统架构、数据库设计、接口开发、安全性保障以及性能优化等。 首先,我们来谈谈系统架构。在心理…

小白跟做江科大32单片机之光敏传感器控制蜂鸣器

代码部分 1.思路 通过光敏电阻,控制蜂鸣器的发声 2.butter.h代码 #ifndef _BUTTER__H #define _BUTTER__H void butter_Init(void); void butter_on(void); void butter_off(void); #endif 3.butter.c代码 #include "stm32f10x.h" void butter…

【vue】@、@/、../和./的区别

:表示vue语法中v-on的简写;绑定事件的专用格式。当事件触发的时候,函数才会来调用; /:在build文件夹下webpack.base.conf.js找到,便能知道代表什么了; 这里指向src文件夹 . /:表示当前目录下&…

水位雨量监测站解析

水位雨量监测站是一种集水位和雨量监测功能于一体的重要气象和水文监测设备。其设计和功能旨在实时、准确地监测和记录河流水位、降雨量等关键数据,为气象、水文、环保等领域提供重要的信息支持。以下是关于水位雨量监测站的详细扩写: 系统组成 水位雨…

SpringBoot快速部署(1)—docker不使用nginx

方法一:使用 link docker run -d --restartalways -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD123456 -e MYSQL_DATABASEqr_code_test -v /mnt/docker/files/qr_board_system/qr_code_test.sql:/docker-entrypoint-initdb.d/database.sql mysql:5.6 docker r…

MyBatis快速入门教程

文章目录 一、介绍什么是持久层为什么要学MyBatis? 二、如何获得MyBatis?三、第一个Mybatis程序数据库导入maven依赖bean 实体类dao持久层resources编写对应的映射文件 mybatis主配置文件测试类运行遇到报错Could not find resource com/qibu/dao/IUserD…