计组复习笔记
计组笔记
汇编部分
-
通用寄存器(General Registers):
- AX (Accumulator): 用于累加运算,也是乘法和除法的默认寄存器。
- BX (Base Register): 可以用作一个基址寄存器,通常用于存放数据的基地址。
- CX (Counter Register): 通常用于循环计数。
- DX (Data Register): 用于 I/O 操作和一些乘法与除法的高位。
-
指针和索引寄存器(Pointer and Index Registers):
- SI (Source Index): 用于源数据的地址偏移,通常在字符串操作中使用。
- DI (Destination Index): 用于目标数据的地址偏移,通常在字符串操作中使用.
- SP (Stack Pointer): 用于指向栈顶。
- BP (Base Pointer): 用于指向栈底。
-
段寄存器(Segment Registers):
- CS (Code Segment): 代码段寄存器,操作系统决定,不能作为目的操作数,只能作为源操作数。
- DS (Data Segment): 数据段寄存器,只能接受寄存器赋值,不接受内存或立即数直接赋值。
- ES (Extra Segment): 附加数据段寄存器。
- SS (Stack Segment): 栈段寄存器。
-
标志寄存器(Flag Register):
- FLAGS (Flags Register): 存储条件码和一些处理器状态标志,如零标志、进位标志等。
程序员可见的寄存器:13个通用寄存器
常用汇编指令


-
MOV (Move):
用于将数据从一个地方移动到另一个地方
eMOV AX, 5 # 将立即数5加载到寄存器AX MOV BX, AX # 将寄存器AX的值移动到寄存器BX MOV [DI], CX # 将寄存器CX的值存储到内存地址DI中 ##注意易错 MOV [AX], [BX] #不能两次访存 MOV CS,AX #不能修改CS,CS由操作系统分配 MOB DS,DATA #不能直接对段寄存器赋值,只能用寄存器赋值 如MOV AX,1000 MOV DS,AX -
ADD (Addition):
用于将两个数相加。
ADD AX, BX #将寄存器AX和BX的值相加,结果存储在AX中 ADD [SI], 10 # 将内存地址SI中的值与立即数10相加,结果存储回SI中 -
SUB (Subtraction):
用于将一个数减去另一个数。
SUB AX, BX ; 将寄存器AX减去BX的值,结果存储在AX中 SUB [DI], 5 ; 将内存地址DI中的值减去立即数5,结果存储回DI中 -
MUL(Multiply)
相乘
MOV AX, 10 #被乘数 MOV BX, multiplier#乘法因子 MUL BX #AX = AX * BX 此时 AX 中存储了结果,高位在 DX 中mul AX,BX #AX=AX*BX -
DIV(Divide)
相除
MOV AX, 10 #被除数 MOV BX, divisor #除数 DIV BX #AX = AX / BX, DX = AX % BX -
CMP (Compare):
用于比较两个数的大小,设置标志位以便后续的条件跳转指令。
CMP AX,BX; 比较AX和BX的值,设置相应的标志位 -
LOOP
MOV CX , 10 #用cx作为循环计数器 LOP: #待做操作 LOOP LOP #cx--,若cx!=0,跳转到LOP -
JMP (Jump):
用于无条件跳转到指定的地址。
JMP Label ; 无条件跳转到标签Label处 -
JE, JNE, JG, JL (Jump if Equal, Jump if Not Equal, Jump if Greater, Jump if Less):
用于根据先前的比较结果有条件地跳转到指定的地址。
JE Label ; 如果相等,则跳转到标签Label处 JNE Label ; 如果不相等,则跳转到标签Label处 JG Label ; 如果大于,则跳转到标签Label处 JL Label ; 如果小于,则跳转到标签Label处MOV AL, [variable] CMP AL, 5 ; 比较 AL 和 5 JE equal_label ; 如果相等,跳转到 equal_label ; 其他操作 JMP end_label ; 如果不相等,跳转到 end_label equal_label:; 相等时执行的操作 end_label:; 其他操作 -
INC, DEC (Increment, Decrement):
用于增加或减少寄存器或内存中的值。
INC AX ; 将寄存器AX的值加1 DEC [SI] ; 将内存地址SI中的值减1 -
移位操作
SHR LX,1 #逻辑右移一位,最高位补0(Shift Right)-->无符号数*2 SHL LX,1 #逻辑左移一位,最低位补0(Shift Left)-->无符号数/2 ROR LX,1 #循环右移一位,被移出的会重新出现在最高位(Rotate Right) ROL LX,1 #循环左移一位,被移出的会重新出现在最低位(Rotate Left) SAR LX,1 #算数右移一位,最高位用符号位填充(Shift Arithmetic Right)-->有符号数*2 SAL LX,1 #算数左移一位,最低位用0位填充和SHL一致(Shift Arithmetic Left)-->有符号数/2 -
OUT
MOV DX, 0x80 #将端口地址加载到 DX 寄存器 MOV AX, 0x42 #要发送的数据加载到 AX 寄存器 OUT DX, AX #将 AX 寄存器中的数据发送到端口 DX 只能使用两个寄存器作为端口 -
CALL, RET (Call, Return):
用于调用和返回子程序。
CALL Subroutine ; 调用子程序 RET ; 返回
示例:
1.选择结构

2.循环结构


必背大题
CPU与指令
问:比较组合逻辑控制和微程序控制的优缺点及应用场合。(5分)
答:组合逻辑控制和微程序控制是用来控制如何产生微命令的两种方式。
组合逻辑控制方式是直接通过逻辑门电路产生微命令的,因而它的主要优点是产生微命 令的速度很快。其主要缺点有两点:其一是设计不规整,因而难于实现设计自动化;其二是 采用硬连逻辑,不易修改和扩展指令系统的功能。组合逻辑控制方式主要用于高速计算机或 小规模计算机中。
微程序控制方式是通过执行微指令来产生微命令的,主要优点如下: ① 设计规整,设计效率高; ② 易于修改、扩展指令系统功能; ③ 结构规整、简洁,可靠性高; ④ 性价比高。 其主要缺点是:产生微命令的速度慢,因为要多次访问控存读取微指令,访存速度限制 了产生微命令的速度;另外,机器的执行效率不高,因为微指令格式较简单,没有充分发挥 数据通路本身所具有的并行能力。微程序控制方式主要用于速度要求不高、功能较复杂的机 器中,特别适合于系列机。
问:简述指令流水线的工作原理。(5分)
答:为提高处理器执行指令的效率,把一条指令的操作过程分成若干个子过程,且每个子过程都在专门功能电路上完成,这样指令的各子过程就能同时运行,指令的平均执行时间也能大大减少。
问:什么叫寻址方式?常用的寻址方式有哪些?(5分)
答:寻址方式是指寻找指令中操作数所在地址的方法。(1分) 常用的寻址方式有:立即寻址.直接寻址.寄存器寻址.寄存器间接寻址.变址寻址.基址加变 址.隐含寻址等。(每项1分,答对4项以上得4分)
问:什么是汇编的逻辑地址?它由哪两部分组成?8086 的物理地址是如何形成的? (5分)
答:逻辑地址是将存储器分成若干个段之后而出现的一种地址形式,它由段地址和偏移地址 组成。物理地址是将逻辑地址中的段地址左移 4 个二进制位,再加上偏移地址而形成的。
问:简述程序中指令和伪指令的区别。(5分)
答:指令是能被计算机识别并执行的二进制代码,它规定了计算机能完成的某一操作。伪指令是对汇编起某种控制作用的特殊命令,其格式与通常的操作指令一样,并可加在汇编程序的任何地方,但它们并不产生机器指令。
问:简化地址结构的基本途径是什么?
答:在指令中减少显地址的数量,即使用隐地址方式给出地址,指令中的地址(段)个数就可减少。
问:减少指令中一个地址信息的位数的方法是什么?
答:采用寄存器寻址、寄存器间址等以寄存器为基础的寻址方式可以大大减少指令中一个地址的信息位数
问:试比较超标量和超流水的异同点。
答:超标量流水线值在一个处理器中针对同一种功能,设置多条并存的流水线。在每个时钟周期中可向流水线发射多条同一类指令,也能从流水线中流出多个处理结果。超流水线以增加流水线级数的方法来缩短机器周期,使相同时间内超流水线能执行更多的机器指令。
存储
问:请简述计算机系统中的三级存储体系结构模式,并分析这种模式的优点和缺点。(5分)
**答:**三级存储体系包括缓存(cache)、内存和外存,这种模式的优点是层次体系清晰、便于设计实现,也利于系统调度管理,能提高存储系统性能;缺点是结构复杂,管理和控制都比较复杂,硬件成本高。
问:SRAM 和 DRAM 分别依靠什么原理存储信息?需要刷新吗?
答:SRAM 即静态半导体存储器,静态半导体存储器中的一位存储单元,实际上是一个双稳态触发器,靠交叉反馈存储信息。
DRAM 即动态半导体存储器则是靠电容电荷存储信息,如电容上有电荷代表存放的信号1,电容无电荷为存放的信号 0。
SRAM 不需要刷新,而 DRAM 则需要刷新。
问:主存和Cache之间的映射方式有哪几种?请简述每种方式的基本思想。(5分)
答:主要有直接映射、全相联映射和组相联系映射。
直接映射:CACHE不分组而主存分组,每组包含的数据块数量等于CACHE的数据块数。主存映射到CACHE时,组内序号为K的数据块可映射到CACHE中序号为K的数据块位。
全相联映射:CACHE和主存均不分组,主存的第K个数据块可自由映射到CACHE中的任意数据块位;
组相联映射:CACHE和主存均分组,且主存各组包含的数据块数等于CACHE分组后的组数,主存某组内第K个数据块可映射到CACHE第K组任意一个块位。
总线与输入输出
问:I/O接口的主要功能有哪些?(5分)
答:外设寄存器寻址;数据传输和缓冲;数据格式变换等;产生中断及代码请求等控制逻辑功能。
问:在DMA的初始化阶段中,主要应完成哪些任务?
答:(1)向接口送出I/O设备的寻址信息。例如,要从磁盘中读出一个文件,则需送出该文件所在磁盘的驱动器号、圆柱面号、磁头号(记录面号)、起始扇区号(或数据块号)。
(2)向DMA控制器送出控制字,主要是数据的传输方向,输入主存还是从主存输出。
(3)向DMA控制器送出主存缓冲区首地址。数据的输入或输出,往往需在主存储器中设置相应的缓冲区,这是一段连续的存储区,为此在初始化时送出其首地址。
(4)向DMA控制器送出交换量,即数据的传输量。视设备的需要,传输量可以是字节数、字数、数据块数。
问:对 I/O 设备的编址方法有哪几种?请简要解释。
答:对 I/O 设备的编址方法实际上就是对 I/O 接口中有关寄存器及相应部件的编址方法,有两大类型。
① 外围设备单独编址。早期是为每台 I/O 设备分别分配一个设备码,每个设备下属 n 个接口寄存器,在 I/O 指令中给出设备码,指明接口的哪个寄存器,从而实现 CPU 对外设的访问。现在普遍采用为各 I/O 接口的每个有关寄存器分别分配一种 I/O 端口地址,指令中给出端口地址,也就知道 CPU 访问哪一台设备及其接口寄存器。
② 外围设备与主存统一编址。将各 I/O 接口中的有关寄存器与主存的各编址单元统一编址,为它们分配统一的总线地址。在传送指令中给出这类总线地址,CPU 就可以访问相应的 I/O 设备及其接口寄存器。
问:I/O 指令的设置方法有哪几种?请简要解释。
答:通常有三类常见的 I/O 指令设置方法。
① 在指令系统中设置专门的 I/O 指令,可对外围设备单独分配设备码,或给 I/O 接口的有关寄存器分配专门的端口地址,这种 I/O 指令称为显式 I/O 指令。
② 采用通用的数据传送指令实现 I/O 操作,相应地将外围设备接口的有关寄存器与主存统一编址。这种 I/O 指令是隐含在传送指令中,所以又称为隐式 I/O 指令。
③ 通过 I/O 处理器(或 I/O 处理机)控制 I/O 操作。这种方式下,I/O 指令可分为两级:CPU 调用 IOP 的指令和 IOP 本身的指令。
问:I/O 指令的设置方法有哪几种?请简要解释。
答:通常有三类常见的 I/O 指令设置方法。
① 在指令系统中设置专门的 I/O 指令,可对外围设备单独分配设备码,或给 I/O 接口的有关寄存器分配专门的端口地址,这种 I/O 指令称为显式 I/O 指令。
② 采用通用的数据传送指令实现 I/O 操作,相应地将外围设备接口的有关寄存器与主存统一编址。这种 I/O 指令是隐含在传送指令中,所以又称为隐式 I/O 指令。
③ 通过 I/O 处理器(或 I/O 处理机)控制 I/O 操作。这种方式下,I/O 指令可分为两级:CPU 调用 IOP 的指令和 IOP 本身的指令。
相关文章:
计组复习笔记
计组笔记 汇编部分 通用寄存器(General Registers): AX (Accumulator): 用于累加运算,也是乘法和除法的默认寄存器。BX (Base Register): 可以用作一个基址寄存器,通常用于存放数据的基地址。CX (Counter Register): 通常用于循环…...
62. 环境贴图2
环境贴图作用测试 实际生活中光源照射到一个物体上,这个物体反射出去的光线也会影响其他的物体,环境贴图就是用一种简单方式,近似模拟一个物体周边环境对物体表面的影响。 测试:对于PBR材质,如果threejs三维场景不添…...
MATLAB中数据导入与导出的全面指南
在MATLAB中,数据的导入与导出是数据处理工作流中的两个基本步骤。导入是将外部数据加载到MATLAB工作区的过程,而导出则是将工作区中的数据保存到外部文件中。这两个步骤对于数据分析、可视化和结果共享至关重要。本文将详细介绍如何在MATLAB中进行数据的…...
Jenkins从入门到精通,构建高效自动化流程
目录 一、Jenkins简介1、Jenkins的历史与发展(1)Jenkins的起源(2)Jenkins的发展(3)Jenkins的社区与生态系统(4)Jenkins在我国的发展 2、Jenkins的核心功能3、Jenkins的应用场景 二、…...
【Android 13源码分析】Activity生命周期之onCreate,onStart,onResume-2
忽然有一天,我想要做一件事:去代码中去验证那些曾经被“灌输”的理论。 – 服装…...
如何在电脑上浏览手机界面
联想浏览器中,点击右键-》检查,进入开发者工具: 点击如上,红色框框选中的手机浏览模式即可。...
国产RISC-V案例分享,基于全志T113-i异构多核平台!
RISC-V核心优势 全志T113-i是一款双核Cortex-A7@1.2GHz国产工业级处理器平台,并内置玄铁C906 RISC-V和HiFi4 DSP双副核心,可流畅运行Linux系统与Qt界面,并已适配OpenWRT系统、Docker容器技术。 而其中的RISC-V属于超高能效副核心,主频高达1008MHz,标配内存管理单元,可运…...
Day(16)--File
File File对象就是表示一个路径,可以是文件路径,也可以是文件夹的路径 这个路径可以是存在的,也允许是不存在的 常见的方法 public File(String pathname);//根据文件路径创建文件对象 public File(String parent,String child);//根据父路…...
Axios入门使用
文章目录 Axios入门使用一、引言二、Axios的安装与配置1、安装Axios2、创建Axios实例 三、发送HTTP请求1、GET请求2、POST请求3、并发请求 四、配置和拦截器1、配置默认值2、拦截器 五、错误处理和取消请求1、错误处理2、取消请求 四、总结 Axios入门使用 一、引言 随着前端技…...
大数据实时数仓Hologres(四):基于Flink+Hologres搭建实时数仓
文章目录 基于Flink+Hologres搭建实时数仓 一、使用示例 二、方案架构 1、架构优势 2、Hologres核心优势 三、实践场景 四、项目准备 1、创建阿里云账号AccessKey 2、准备MySQL数据源 五、构建实时数仓编辑 1、管理元数据 2、构建ODS层 2.1、创建CDAS同步作业O…...
关于HTML 案例_个人简历展示02
展示效果 用table进行布局label 标签进行关联 例如:点姓名就可以到text中去填写内容 input的使用 text 文本框radio 单选框select与option 选择框checkbox 复选框 textareaul与li 无序列表文中图片是本地的 链接: 图片下载地址 代码 <!DOCTYPE html> <…...
Windows 11 24H2 v26100.1742 官方简体中文版
Windows 11 24H2是微软最新推出的操作系统更新,其在人工智能(AI)领域的创新为用户带来了显著的体验提升。该版本的一大亮点是AI Copilot,它能够智能地根据剪贴板内容调整操作上下文菜单,实现更智能化的交互。 此外&…...
【AIGC半月报】AIGC大模型启元:2024.10(上)
【AIGC半月报】AIGC大模型启元:2024.10(上) (1) YOLO11(Ultralytics新作) (1) YOLO11(Ultralytics新作) 2024.10.01 Ultralytics在 YOLO Vision 2024 活动上宣布发布其新的计算机视觉模型 YOLO…...
Codeforces Beta Round 14 (Div. 2) E. Camels (DP)
题目 Bob likes to draw camels: with a single hump, two humps, three humps, etc. He draws a camel by connecting points on a coordinate plane. Now he’s drawing camels with t humps, representing them as polylines in the plane. Each polyline consists of n ve…...
CSID-GAN:基于生成对抗网络的定制风格室内平面设计框架论文阅读
CSID-GAN: A Customized Style Interior Floor Plan Design Framework Based on Generative Adversarial Network 摘要前言II. CSID-GAN METHODA. Overall FrameworkB. Algorithm and Loss Function III. DATASETS AND EVALUATION METRICSA. DatasetsB. Evaluation Metrics IV.…...
02SQLite
文章目录 索引创建索引删除索引索引优点及缺点?避免使用索引 视图创建视图删除视图 事务事务控制命令通过事务方式对数据库进行访问优势: 索引 创建索引 索引(Index)是一种特殊查找表,数据库搜索引擎用来加速数据检索…...
学籍管理平台|在线学籍管理平台系统|基于Springboot+VUE的在线学籍管理平台系统设计与实现(源码+数据库+文档)
在线学籍管理平台系统 目录 基于SpringbootVUE的在线学籍管理平台系统设计与实现 一、前言 二、系统功能设计 三、系统实现 四、数据库设计 1、实体ER图 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取: 博主介绍:✌️大…...
JDBC编程
前言: 你是否见过用Java连接数据库的操作,对没错,今天我们要讲的就是这个“高级”操作,做好准备全程高速。 API: 什么是API?我喜欢先把它的全称说一下:Application Programming Interface。简…...
Python : 类变量、静态方法、类方法
文章目录 前言1 类变量(Java静态变量)2 Python中的静态方法(使用 @staticmethod 装饰器声明)3 类方法(使用 @classmethod 装饰器声明)4 静态方法和类方法的区别前言 学完Java过后,对python中有了一些疑惑。Java中有static修饰的静态变量和静态方法这两个很用用的知识点…...
大厂笔试现已经禁用本地IDE怎么看
如果我说本来面试做题这种事情就是反人类你相信吗? 这个罪恶的源头就是 Google,说是为了选择高素质的计算机编程水平的人才,然后把面试就变成了考试,最大的受益者当然是印度人了。 当把一个考察过程变成标准化的考试过程&#x…...
Docker 离线安装指南
参考文章 1、确认操作系统类型及内核版本 Docker依赖于Linux内核的一些特性,不同版本的Docker对内核版本有不同要求。例如,Docker 17.06及之后的版本通常需要Linux内核3.10及以上版本,Docker17.09及更高版本对应Linux内核4.9.x及更高版本。…...
QMC5883L的驱动
简介 本篇文章的代码已经上传到了github上面,开源代码 作为一个电子罗盘模块,我们可以通过I2C从中获取偏航角yaw,相对于六轴陀螺仪的yaw,qmc5883l几乎不会零飘并且成本较低。 参考资料 QMC5883L磁场传感器驱动 QMC5883L磁力计…...
Day131 | 灵神 | 回溯算法 | 子集型 子集
Day131 | 灵神 | 回溯算法 | 子集型 子集 78.子集 78. 子集 - 力扣(LeetCode) 思路: 笔者写过很多次这道题了,不想写题解了,大家看灵神讲解吧 回溯算法套路①子集型回溯【基础算法精讲 14】_哔哩哔哩_bilibili 完…...
【机器视觉】单目测距——运动结构恢复
ps:图是随便找的,为了凑个封面 前言 在前面对光流法进行进一步改进,希望将2D光流推广至3D场景流时,发现2D转3D过程中存在尺度歧义问题,需要补全摄像头拍摄图像中缺失的深度信息,否则解空间不收敛…...
CMake 从 GitHub 下载第三方库并使用
有时我们希望直接使用 GitHub 上的开源库,而不想手动下载、编译和安装。 可以利用 CMake 提供的 FetchContent 模块来实现自动下载、构建和链接第三方库。 FetchContent 命令官方文档✅ 示例代码 我们将以 fmt 这个流行的格式化库为例,演示如何: 使用 FetchContent 从 GitH…...
零基础在实践中学习网络安全-皮卡丘靶场(第九期-Unsafe Fileupload模块)(yakit方式)
本期内容并不是很难,相信大家会学的很愉快,当然对于有后端基础的朋友来说,本期内容更加容易了解,当然没有基础的也别担心,本期内容会详细解释有关内容 本期用到的软件:yakit(因为经过之前好多期…...
人机融合智能 | “人智交互”跨学科新领域
本文系统地提出基于“以人为中心AI(HCAI)”理念的人-人工智能交互(人智交互)这一跨学科新领域及框架,定义人智交互领域的理念、基本理论和关键问题、方法、开发流程和参与团队等,阐述提出人智交互新领域的意义。然后,提出人智交互研究的三种新范式取向以及它们的意义。最后,总结…...
什么是VR全景技术
VR全景技术,全称为虚拟现实全景技术,是通过计算机图像模拟生成三维空间中的虚拟世界,使用户能够在该虚拟世界中进行全方位、无死角的观察和交互的技术。VR全景技术模拟人在真实空间中的视觉体验,结合图文、3D、音视频等多媒体元素…...
数学建模-滑翔伞伞翼面积的设计,运动状态计算和优化 !
我们考虑滑翔伞的伞翼面积设计问题以及运动状态描述。滑翔伞的性能主要取决于伞翼面积、气动特性以及飞行员的重量。我们的目标是建立数学模型来描述滑翔伞的运动状态,并优化伞翼面积的设计。 一、问题分析 滑翔伞在飞行过程中受到重力、升力和阻力的作用。升力和阻力与伞翼面…...
tauri项目,如何在rust端读取电脑环境变量
如果想在前端通过调用来获取环境变量的值,可以通过标准的依赖: std::env::var(name).ok() 想在前端通过调用来获取,可以写一个command函数: #[tauri::command] pub fn get_env_var(name: String) -> Result<String, Stri…...
