计组第六课

2023-05-16

汇编语言的组成
1、汇编指令:机器码的助记符,有对应机器码
2、伪指令:无对应机器码,由编译器执行,没有对应机器码。
3、其他符号:如+、-、*、/等,由编译器识别,没有对应的机器码
汇编语言的核心是汇编指令,它决定了汇编语言的特性

存储单元
一个地址有8个存储单元,一个地址一般是一个字节。

CPU对存储器的读写
CPU要想进行数据的读写,必须和外部器件(标准的说法是芯片)进行下面3中信息的交互:
1、存储单元的地址(地址信息)
2、器件的选择,读或写的命令(控制信息)
3、读或写的数据(数据信息)
读取数据的过程:
(1)CPU通过地址线将地址信息发出。
(2)CPU通过控制线发出内存读命令,选中存储器芯片,并通知它,将要从中读取数据。
(3)存储器将(1)中的地址信息(某个单元)的数据通过数据线送入CPU。
写数据的过程和读取数据的过程很相似,不一样的是第(2)步中CPU通过控制线发出的是内存写命令;第(3)步中是CPU传入数据给选中的内存单元。

如何命令计算机进行数据的读写?
机器码:10100001 00000011 00000000
对应的汇编指令:MOV AX,[3]
含义:传送3号单元的内容入AX

寄存器(以下都是8086的)
几条汇编指令:

汇编指令控制CPU完成的操作用高级语言的语法描述
MOV AX,18将18送入寄存器AXAX=18
MOV AH,78将78送入寄存器AHAH=78
ADD AX,8将寄存器AX中的数值加上8AX=AX+8
MOV AX,BX将寄存器BX中的数据送入寄存区AXAX=BX
ADD AX,BX将AX和BX中的数值相加,结果存在AX中AX=AX+BX

两条指令的执行情况:
1、AX=8226H BX=8226H,则执行ADD AX,BX后AX的值?
相加后所得的值是1044CH,但是AX是16位的寄存器,只能存放4位的16进制数,因此最高位的1不能在AX中保存,AX中的数据为:044CH
2、已知AX=00C5H,求执行ADD AL,93H后AX的值?
执行前,AL中的数据为C5H,相加后所得的值为158H,但是AL为8位的寄存器,只能存放2位的16进制数,因此最高位的1丢失,AX=0058H
(此时AL中的数据是作为一个独立的8位寄存器使用的,和AH没有关系,AL的最高位并不会给到AH的进位)

然后就是讲到了物理地址、段地址、偏移地址的一些转换,这就是微机的内容,如果不熟悉可以看下面的文章:
微机学习:第五课

例题
(1)给定段地址为0001H,仅通过变化偏移地址寻址,CPU的寻址范围为?
解析:寻址范围也就是段基址+偏移量,段基址很简单,就是段地址左移4位(2进制),对应16进制就是左移一位变成00010H,而偏移量的范围很明显就是0000H~FFFFH,因此两个式子相加就可以得到寻址范围了。
答案:00010H~1000FH
(2)有一组数据存放在内存20000H单元中,先给定段地址为SA,若想用偏移地址寻到此单元。则SA应满足的条件是:最小为?最大为?
解析: 这题是老师说的一个小难点,先使用用物理地址的计算公式的逆应用,物理地址=段基址+偏移地址,要使用偏移地址能够寻到此物理单元,很明显,要满足段基址在偏移地址的范围0000H~FFFFH中都能寻到此单元,那么我们就能确定段基址的最大值明显就是20000H-0000H=20000H,最小值明显就是20000H-FFFFH=10001H。那么现在问题来了,题目要求的是SA的最大最小值,已知段寄存器左移4位是段基址,呢么段基址右移4位不就回来了?20000H右移4位以后就是2000H,这是可以确定的SA的最大值。可是当我们对10001H右移4位以后就变成了1000H了,丢失了这个1,是有影响的,我们把1000H左移得到的段基址是10000H,把这个数据加上最大的偏移量FFFFH也仅仅只是1FFFFH,并不能寻到20000H单元,那么这个问题我们该如何解决?
首先我们不可能做到改变SA中的值使得左移后的段基址是10001H,因为左移后右边都是补0的,我们的最小值只能在原来的基础上加1,再左移,这时候再左移,得到的段基址肯定会比10001H大,但是这也是我们能满足题目条件的必须。
即SA的值为1001H时,左移得到段基址10010H,这时候加上偏移量(明显小于FFFFH)后,是可以寻址到20000H的。
答案:最小为1001H,最大为2000H

CS和IP
CS和IP共用,指向下一条待执行的指令。

小提示:其实感觉这节课内容是很简单的,因为我的微机基础打得还是挺牢的,如果看这篇文章你有些吃力,很明显你的基础不扎实,建议把我之前在微机里面讲到的寄存器及其寻址的内容吃透。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

计组第六课 的相关文章

  • python-切割字符串成为列表(split函数)

    split函数切割字符串成为列表 在python的input时 xff0c 我们接收都是string类型 information span class token operator 61 span span class token buil
  • MyBatis实现分页查询

    目录 一 基于注解的简单分页查询 1 定义对象 2 Mapper接口 3 Controller类 4 功能实现 二 基于注解的较复杂分页查询 1 定义shop实体类和page分页类 2 Mapper接口 3 Controller类 4 功能
  • python 读取word表格中的表格

    解决方案 xff1a 在网上没有找到可行的嵌套表格内容读取方法 查看python docx包源代码找到以下两种解决方案 xff1a 方案一 xff1a 按行列读到单元格后再取tables xff0c 此处table cell tables值
  • sublime配置C/C++并调试

    文章目录 前言1 工具准备1 1 sublime的安装1 2 MinGw的安装和配置 2 开始配置2 1 MinGw路径放进环境变量2 2 sublime的配置 3 开始使用3 1 运行代码3 2 调试代码 前言 本文主要讲关于sublim
  • 洛谷P1025 [NOIP2001 提高组] 数的划分(DP)

    题目描述 将整数 n n n 分成 k k k 份 xff0c 且每份不能为空 xff0c 任意两个方案不相同 xff08 不考虑顺序 xff09 例如 xff1a
  • 【Rust深入浅出-5】拓展数据类型

    Rust深入浅出 5 拓展数据类型 第一章Hello World 第二章 变量和基本数据类型 第三章 运算符 第四章 类型转换 第五章 拓展数据类型 文章目录 Rust深入浅出 5 拓展数据类型前言slice切片tuple元组索引match
  • sort 函数排序之cmp浅析

    1 一般来说 xff0c sort可对整型和浮点型数据进行排序 xff0c 排序从小到大 xff0c 如果需要变为从大到小 xff0c 那么我们可以定义一个cmp函数 xff0c 定义如下 xff1a bool cmp int x int
  • 魔导师晨拥

    链接 xff1a 登录 专业IT笔试面试备考平台 牛客网 来源 xff1a 牛客网 魔导师晨拥是 炉石传说 中的一张传说卡牌 魔导师晨拥的英雄技能为初始造成 222 点伤害 xff0c 如果恰好消灭某个随从 xff0c 则伤害永久增加 11
  • Royal TSX常见问题:解决远程桌面(RDP)连接错误

    Royal TSX mac破解版是一款帮助用户管理桌面的Mac桌面管理软件 xff0c Royal TSX for mac为你提供方便安全的访问远程系统 Royal TSX专为服务器管理员 系统工程师 开发人员和IT信息工作者开发设计 xf
  • 解决jupyter notebook :No module named ‘tensorflow‘ 及python.exe无法找到入口问题及500 : Internal Server Error

    目录 jupyter notebook ModuleNotFoundError No module named 39 tensorflow 39 问题 可能性1 xff1a tensorflow版本与python版本不匹配 可能性2 xff
  • Ceph安装步骤1——基础Ceph集群安装

    一 基础环境 本文所搭建环境为Centos 7 内核4 17版本 xff0c 安装Ceph版本为luminous 一共配置三台机器 xff0c 每台机器的IP地址和主机名称分别为 xff1a 192 168 1 131 ceph admin
  • 远程桌面--某些设置由你的组织管理

    解决某些设置由你的组织管理 在cmd的运行里输入 gpedit msc 选择 计算机配置 gt 选择 管理模块 gt 选择 Windows组件 gt 选择 远程桌面服务 gt 选择 远程 桌面会话主机 gt 选择 连接 gt 右击 允许用户
  • 数据结构--第三章--栈和队列--知识点回顾

    第三章 栈和队列 一 基本知识点 1 栈 队列和线性表的异同 2 顺序栈的基本运算算法设计 3 链栈的基本运算算法设计 4 顺序队的基本运算算法设计 5 环形队列和非环形队列的特点 6 链队的基本运算算法设计 7 利用栈 队列求解复杂的应用
  • 实验四 SQL连接查询

    一 实验目的 xff1a 掌握SQL连接查询语句 二 实验内容和主要步骤 xff1a 查询每个学生及其选修成绩的情况 select sno cno Grade from sc 分别用左外连接和右外连接实现查询所有学生信息及其选修成绩的情况
  • wsl+opencv——清除旧版并安装新版,实测有效

    写在前面 我用的是cmake方式编译安装的opencv xff0c 但一直弄不好contrib这个东西 xff0c 索性先不用老版本的opencv我把源文件都删掉了 xff0c 没法用网上的一些方法make uninstall 卸载清除旧版
  • JAVA编程——父子类

    编程需求 需求如下 xff1a 编写父类People xff0c 子类Student继承自People类 父类People具有姓名 xff0c 性别 xff0c 年龄等性质 xff0c 还具有吃和说的行为 子类Student继承父类Peop
  • 部署zabbix6.2

    zabbix6 2安装步骤 配置阿里云源 注意本机的操作系统的centos8 span class token punctuation span root 64 localhost span class token operator spa
  • zabbix功能介绍

    1 zabbix介绍 zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案 zabbix能监视各种网络参数 xff0c 保证服务器系统的安全运营 xff1b 并提供灵活的通知机制以让系统管理员快速定位
  • haproxy部署安装

    haproxy简介 HAProxy是一个使用C语言编写的自由及开放源代码软件 xff0c 其提供高可用性 负载均衡 xff0c 以及基于TCP和HTTP的应用程序代理 HAProxy特别适用于那些负载特大的web站点 xff0c 这些站点通

随机推荐

  • KVM虚拟化介绍和安装使用方法

    一 KVM虚拟化介绍 虚拟化 xff1a 在一台计算机上虚拟出多个逻辑的计算机 xff0c 而且每个逻辑计算机 它可以是不同操作系统 虚拟化技术 xff1a 可以扩大硬件容量 xff0c 单个cpu模拟出多个cpu并行 xff0c 允许一个
  • nginx反向代理与负载均衡以及高可用

    nginx反向代理介绍 nginx通常被用作后端服务器的反向代理 xff0c 这样就可以很方便的实现动静分离以及负载均衡 xff0c 从而大大提高服务器的处理能力 nginx实现动静分离 xff0c 其实就是在反向代理的时候 xff0c 如
  • Ceph 配置URL访问s3 Bucket

    一 创建json文件 xff0c 用于编辑policy xff0c 文件内容如下 xff08 Version并不重要 xff09 xff0c Action存在多种选择 如步骤三所示 xff0c 并且允许同时选择多个 xff0c 本文只是通过
  • nginx做负载均衡服务器,配置动静分离

    nginx做负载均衡服务器 xff0c 配置动静分离 1 题目要求 xff1a 后端RS服务器 台部署LNMP nginx1 22 43 mysql8 0 43 php8 1 xff0c 台部署 httpd 要求nginx和php使 编译安
  • 常用自动化运维工具简介和Ansible安装

    自动化运维工具 Puppet Puppet是历史悠久的运维 具之 它是 种基础架构即代码 xff08 IaC xff09 具 xff0c 使 户可以定 义其 基础架构所需的状态 xff0c 并使系统 动化以实现相同状态 Puppet可监视
  • Python之变量、数据类型、类型转换、运算符

    Python学习笔记2022 1 10 pycharmSettingsFont 设置字体字形 大小 行距Keymap 设置快捷键project 变量 xff0c 容器 格式 xff1a 变量名 61 值变量名命名规范 xff1a 数据类型i
  • 强连通分量分解详解 超级详细

    xff08 写的有点小多 xff0c 慢慢看 xff0c 会有收获的 xff09 xff08 1 xff09 首先我们得了解 xff0c 什么是强连通 xff1f 如果在一个有向图顶点子集内 xff0c 任取两个点 u 和 v xff0c
  • c语言中%d %%d %%%d和\\%d的区别

    1 d xff0c 表示按整型输出后面给出的变量的值 2 d xff0c 这就会被拆成两部分看待 xff0c 一是 在C语言中就是输出一个 xff0c 而是 d 就是一个普通字符 xff0c 所以当 d 在一起时 xff0c 其含义就是输出
  • 无法找到模块“vue-json-viewer””的声明文件。

    报错信息 xff1a 无法找到模块 vue json viewer 的声明文件 Users pins Desktop 运营平台 joinpins infomation sysytem node modules vue json viewer
  • VIM-配置-.vimrc

    前言 在使用vim的时候我们可以输入 xff1a set nu 显示行号 xff0c 但每次都输一遍操作就显得冗余 将这段命令写入vimrc就可以避免重复操作 在linux环境下 xff0c 配置文件一般都叫 rc xff0c rc是 ru
  • mysql中关联json字段查询,将json存储的数组转换成一张临时表

    mysql中的json字段中存了一个数组 要将这个数组中符合条件的数据取出来 xff0c 数据库结构如下 xff1a CREATE TABLE 96 school 96 96 id 96 bigint NOT NULL AUTO INCRE
  • 树莓派入坑笔记

    一 安装树莓派官方操作系统Raspbian stretch步骤 xff1a 准备好SD卡 xff08 大小一般16GB及以上 xff09 准备SD卡的读卡器 准备树莓派的镜像 xff1a 链接 xff1a https pan baidu c
  • yolov5知识笔记

    1 在yolov的同等目录下创建一个自己的数据集文件夹 xff0c 存放自己的数据集 xff08 dataset xff09 xff1b 2 在dataset数据文件夹里 xff08 coco128 xff09 创建 train2017 存
  • Ceph安装步骤2——ceph存储池

    Ceph安装步骤1完成之后 xff0c 即可进行该步骤的操作 本文中以对sas池进行操作为例 一 创建Ceph Pool 1 计算每个池所需要的PG数目 在创建池之前 xff0c 首先需要计算PG数目 xff08 简单来说 xff0c PG
  • scrapy安装笔记并使用

    1 安装方法 xff1a Linux Mac xff1a pip install scrapy windows 简单使用直接pip install scrapy即可 1 pip install wheel 用于安装twisted 2 下载t
  • rosbag库的安装

    Output 1 python3 m pip install bagpy 2 python3 m pip install roslz4 extra index url https rospypi github io simple 1 安装a
  • 下载安装dingding

    百度搜索钉钉官网 xff1a https page dingtalk com wow z dingtalk simple ddhomedownlaod 下载安装包 xff1a com alibabainc dingtalk 1 4 0 20
  • su认证失败

    sudo passwd
  • 2021.12.30遇到的错误:No module named ‘paddle‘

    实际上已经安装了paddlepaddle xff0c 但不知为何又报这个错误 根据提示可知原因为未安装paddle 于是又去安装百度飞桨官网安装paddle 安装命令为 python span class token operator sp
  • 计组第六课

    汇编语言的组成 1 汇编指令 xff1a 机器码的助记符 xff0c 有对应机器码 2 伪指令 xff1a 无对应机器码 xff0c 由编译器执行 xff0c 没有对应机器码 3 其他符号 xff1a 如 43 等 xff0c 由编译器识别