【汇编语言】直接定址表

【汇编语言】直接定址表


文章目录

  • 【汇编语言】直接定址表
  • 前言
  • 一、移位指令
    • 移位指令过程
    • 逻辑移位指令shl 和 shr
  • 二、操作显存数据
    • 显示的原理
    • 显示缓冲区的结构
    • 显示信息的一种“直接”方式
  • 三、描述内存单元的标号
    • 关于标号
    • 去了冒号的数据标号
    • 数据标号同时描述内存地址和单元长度
    • 更常见的方式:数据段中的数据标号
  • 四、数据的直接定址表
    • 直接定址表:用查表的方法解决问题
    • 最简解决方案
    • 直接定址表
    • 应用示例:为加快运算速度而采用查表方法
  • 五、代码的直接定址表
    • 使用代码的直接定址表解决问题
    • 各种功能的实现
    • 直接定址表的优势
  • 总结


前言

在本篇文章中我们将讲到,移位指令,操作显存数据,操作内存单元的称号,数据的直接定址表,代码的直接定址表。


一、移位指令

移位指令过程

在这里插入图片描述
在这里插入图片描述

逻辑移位指令shl 和 shr

SHL OPR, CNT,将OPR逻辑左移CNT位
1)将寄存器或内存单元中的数据向左移位
2)将最后移出的一位写入CF中
3)最低位用0补充
shl指令操作示例
在这里插入图片描述
在这里插入图片描述

注意:移位一位的时候可以用立即数1,大于一位必须用cl来储存所需移位

惯常用法:将X逻辑左移一位,相当于执行X=X*2;右移一位,相当于执行X=X/2
在这里插入图片描述


二、操作显存数据

显示的原理

【汇编语言】初始汇编-中的内存地址空间
我们在之前的文章中有谈到
在这里插入图片描述
屏慕上的内容=显存中的数据
在这里插入图片描述

显示缓冲区的结构

在这里插入图片描述
在这里插入图片描述
例:在这里插入图片描述

显示信息的一种“直接”方式

显示信息的一种“直接”方式:直接在显示缓冲区输入要显示的数据
例:编程序,在屏幕的中间,白底蓝字,显示‘Welcome to masm!’
在这里插入图片描述

在这里插入图片描述


三、描述内存单元的标号

关于标号

代码段中的标号可以用来标记指令、段的起始地址。
代码段中的数据也可以用标号
在这里插入图片描述
在这里插入图片描述
我们在想:offset .cs:…能简单点吗?我们引入去了冒号的数据标号。

去了冒号的数据标号

在这里插入图片描述
在这里插入图片描述
我们在code 段中使用的标号a、b后面没有“:” ,它们同时描述内存地址和单元长度的标号。
标号a
地址code:0
以后的内存单元都是字节
标号b
地址code:8
以后的内存单元都是字

数据标号同时描述内存地址和单元长度

在这里插入图片描述

更常见的方式:数据段中的数据标号

对比:地址标号只能在代码段中使用
数据段中的数据标号
在这里插入图片描述
在这里插入图片描述
扩展用法:将标号当作数据来定义
在这里插入图片描述


四、数据的直接定址表

直接定址表:用查表的方法解决问题

问题:以十六进制的形式在屏幕中间显示给定的byte 型数据。
分析:先将一个byte的高4位和低4 位分开,显示对应的数码字符
在这里插入图片描述
方案一:
在这里插入图片描述
这种方法显然不好。
方案二:
在这里插入图片描述
能不能一次解决这种问题不用分成两种呢?
方案三:
在这里插入图片描述
这种方法相对来说最简单。

最简解决方案

最简方案:建立一张表,表中依次存储字符’0’~ ‘F’,通过数值0~15直接查找到对应的字符。

这里是引用
在这里插入图片描述
在这里插入图片描述

直接定址表

问题求解思路:
利用表,在两个数据集合之间建立一种映射关系,用查表的方法根据给出的数据得到其在另一集合中的对应数据。
优点:
算法清晰和简洁
加快运算速度,以空间换时间
使程序易于扩充
例如:
三角函数表我们需要的值可以通过映射方法找到
在这里插入图片描述

应用示例:为加快运算速度而采用查表方法

问题:
编写程序,计算sin(x),x∈{0°,30°,60°,90°,120°,150°,180°},并在屏幕中间显示计算结果。
方法一:
在这里插入图片描述
这种方法显然不好。
方法二:
在这里插入图片描述

解决方案:在这里插入图片描述


五、代码的直接定址表

使用代码的直接定址表解决问题

直接定址表法:
用查表的方式,通过依据数据,直接计算出所要找的元素的位置
直接定址表分类:
1)数据的直接定址表
2)代码的直接定址表

要解决的问题
实现一个子程序setscreen ,为显示输出提供如下功能
1)清屏。
2)设置前景色。
3)设置背景色。
4)向上滚动一行
在这里插入图片描述

各种功能的实现

这里是引用
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

直接定址表的优势

在这里插入图片描述
要在 setscreen 中再加入新功能,只需要在地址表中加入它的入口地址就可以了。结构清晰,便于扩充。

不用 直接定址表
在这里插入图片描述
要在 setscreen 中再加入新功能,则需要修改程序的逻辑,加入新的比较、转移指令,比较麻烦。


总结

到这里这篇文章的内容就结束了,谢谢大家的观看,如果有好的建议可以留言喔,谢谢大家啦!

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

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

相关文章

NX系统软件使用说明

注意:只有下列目录重启后不会还原,其它目录重启后自动还原,尽量不要往其它目录写入数据。 a) /home/novasky/app b) /home/novasky/app-backup c) /home/novasky/data d) /home/novasky/config 1.系统启动: 系统启动脚本调用…

算法模版自用(杂)

文章目录 算法库函数next_permutation(start,end) prev_permutation(start,end) (全排列函数)nth_element (求第k小值)next(it,num),prev(it,num)min_element(begin(),end()),max_element(begiin(),end()) (取最小值最大值) _int128的输入输出STLlist 数…

LCD液晶显示屏强光老化测试设备太阳光模拟器仪器

1. LCD液晶显示屏老化测试的意义 LCD液晶显示屏老化测试是评估显示屏寿命和性能的重要手段。随着科技的发展,LCD液晶显示屏已经成为我们日常生活中不可或缺的一部分。长期使用后,LCD液晶显示屏可能会出现亮度下降、颜色失真、响应速度变慢等问题。通过进…

DRF 查询(排序、过滤、分页)

查询(排序、过滤、分页) 【0】准备 (1)Q查询 详细内容可见:Django模型层-CSDN博客Django 的 Q 对象提供了一种在数据库查询中构造复杂查询的方法。当你想在单个查询中组合多个过滤条件,并且这些条件之间不仅仅是简单的 AND 关系…

博睿数据亮相GOPS全球运维大会,Bonree ONE 2024春季正式版发布!

2024年4月25日,博睿数据 Bonree ONE 2024 春季正式版焕新发布。同时,博睿数据AIOps首席专家兼产品总监贺安辉携核心产品新一代一体化智能可观测平台 Bonree ONE 亮相第二十二届 GOPS 全球运维大会深圳站。 Bonree ONE 2024 春季版产品重点升级数据采集、…

Linux实现Nginx的安装与部署并实现html静态资源访问

文章目录 一、安装过程二、常用命令三、查看状态并启动nginx四、放置静态资源五、访问 一、安装过程 1、安装依赖包 yum -y install gcc pcre-devel zlib-devel openssl openssl-devel 2、下载Nginx安装包wget https://nginx.org/download/nginx-1.16.1.tar.gz 3、解压 tar -z…

【学习笔记】Python 使用 matplotlib 画图

文章目录 安装中文显示折线图、点线图柱状图、堆积柱状图坐标轴断点参考资料 本文将介绍如何使用 Python 的 matplotlib 库画图,记录一些常用的画图 demo 代码 安装 # 建议先切换到虚拟环境中 pip install matplotlib中文显示 新版的 matplotlib 已经支持字体回退…

el-date-picker 禁用时分秒选择(包括禁用下拉框展示)

2024.04.26今天我学习了对el-date-picker进行禁用时分秒, 在使用el-date-picker组件的时候,我们有可能遇到需要把时分秒的时间固定,然后并且不能让他修改: 1714120999296 比如右上角的这个时间,我们要给它固定是‘08:…

“AI 程序员入职系列”第二弹:如何利用通义灵码光速改写项目编程语言?

通义灵码入职阿里云云原生团队后,已经展示过 Ta 生成单元测试和自动生成代码的强大实力。今天,阿里云后端工程师云徊将从项目开发的实际需求出发,演示通义灵码在开发工作中可提供的帮助。 通义灵码在 Git 开发项目中起到了哪些作用&#xff…

前端JS必用工具【js-tool-big-box】,防抖和节流的方法调用学习

这一小节,我们针对前端工具包(npm)js-tool-big-box的使用做一些讲解,主要是防抖和节流方面的。 目录 前言 1 安装和引入 2 防抖的调用学习 3 节流的调用学习 4 使用方法总结 前言 在前端项目中,经常涉及到防抖…

Rancher 应用商店离线环境使用

前言 Rancher (v2.5 ) 应用商店可以方便的安装 Helm3 构建的应用,并且支持私有 helm 应用仓库,方便了内网离线环境下的使用。本文以内网离线环境为前提、以 MySQL 5.7.43 版本为应用举例,从零开始手把手教你如何制作并应用。 1、环境准备 1.…

分布式密钥生成

可验证且无经销商 分布式密钥生成 (DKG) 是一种加密协议,使多方能够协作生成共享密钥,而无需任何一方完全了解密钥。 它通过在多个参与者之间分配信任来增强各种应用程序的安全性,从而降低密钥泄露的风险。 我们引入了一种可验证且无经销商的…