(八)汇编语言——数据处理的两个基本问题

news2024/12/23 5:36:15

 

目录

用于内存寻址的寄存器

bp

组合

两个基本问题

数据位置

立即数

寄存器

内存

数据长度

除法指令

dup指令

总结


        接下来,我们要处理的是有关数据处理的两个基本问题,那么这两个基本问题是什么呢?我们先告诉大家这两个问题,到时候再来慢慢解决:第一个就是我们要处理的数据在什么地方?第二个就是要处理的数据有多长?好啦,就让我们开始吧!

用于内存寻址的寄存器

        我们之前介绍过,8086一共有14个寄存器:

通用寄存器:AX、BX、CX、DX;
变址寄存器:SI、DI;
指针寄存器:SP、BP;
指令指针寄存器:IP;
段寄存器:CS、SS、DS、ES;
标志寄存器:PSW 
        之前介绍的是通用寄存器,但是我们用来寻址的寄存器有哪些呢?答案是只有bx、bp、si、di可以用在[...]对内存单元寻址,但是他们也不能乱用,我们接下来就来详细的介绍一下用法。

bp

        bp寄存器和bx寄存器是类似的,但是两者也有区别:bx默认指ds段;bp默认指ss段。但是呢,只需要在前面加上段地址即可改变。

组合

        这些寄存器的用法也不是可以乱用的,我们来看看,bx和bp只能搭配si和di来用,bx和bp,si和di不能组合,具体关系如下图所示:

两个基本问题

        好啦,我们接下来就来介绍一下这两个基本问题:要处理的数据在什么地方?要处理的数据有多长?

数据位置

        我们在程序中,数据位置一般是由三个:立即数,寄存器,内存。

立即数

        对于直接包含在机器指令中的数据,称为立即数(idata),数据包含在指令中。

寄存器

        指令要处理的数据在寄存器中,在汇编指令中给出相应的寄存器名。

内存

       主要包括段地址(SA)和偏移地址(EA),指令要处理的数据在内存中,由SA:EA确定内存单元。

数据长度

        数据长度主要包括了字和字节。我们一般是用word ptr或byte ptr指明,在没有寄存器参与的内存单元访问指令中,用word ptr或byte ptr显性地指明所要访问的内存单元的长度是很必要的,否则,CPU无法得知所要访问的单元是字单元,还是字节单元。

除法指令

        div是除法指令,使用div作除法的时候,被除数:(默认)放在AX或DX和AX中,除数:8位或16位,在寄存器或内存单元中。总而言之,就是高位放余数,低位放商。

被除数AXDX和AX
除数8位内存或寄存器16位内存或寄存器
ALAX
余数AHDX

        我们来看一个例子,用div计算data段中第一个数据除以第二个数据后的结果,商存放在第3个数据的存储单元中。

// 数据段
data segment
dd 100001
dw 100
dw 0
data ends
// 代码段
mov ax,data
mov ds,ax
mov ax,ds:[0]
mov dx,ds:[2]
div word ptr ds:[4]
mov ds:[6],ax

dup指令

        其实dup指令的话,不难理解,但是却非常重要,dup和db、dw、dd等数据定义伪指令配合使用,用来进行数据的重复。我们举个例子就好了,比如你想定义一个容量为200字节的栈段,我们可能会这样去做:

// 不使用dup
stack segment
dw 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
dw 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
dw 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
dw 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
dw 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
stack ends

        但是我们如果使用dup指令的话,代码就会变成下面这样。怎么样,是不是特别简介明了。好啦,关于dup指令我们就介绍这么多。

// 使用dup
stack segment
db 200 dup(0)
stack ends

总结

        状态恢复,继续学习,加油!!!!

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

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

相关文章

《操作系统-真象还原》15. 系统交互

文章目录fork 的原理与实现简介什么是 forkfork 的实现思路代码get_a_page_without_opvaddrbitmapcopy_pcb_vaddrbitmap_stack0copy_body_stack3build_child_stackupdate_inode_open_cntscopy_processsys_fork添加 fork 系统调用与实现 init 进程添加 fork 系统调用实现 init 进…

计算机网络复习之DL层(数据链路层)与LAN(Local Area Network局域网)

文章目录封装成帧透明传输字符计数法字符填充法零比特填充法违规编码法差错控制透明网桥网桥自学习转发表网桥的自学习和转发帧的步骤透明网桥工作原理交换机/路由器的广播域、冲突域冲突域广播域交换机/路由器的两域区别CSMA/CD协议PPP协议HDLC协议PPP和HDLC的对比简述IEEE802…

2. 数据类型、向量、向量索引、向量修改、向量运算

课程视频链接:https://www.bilibili.com/video/BV19x411X7C6?p1 本笔记参照该视频,笔记顺序做了些调整【个人感觉逻辑顺畅】,并删掉一些不重要的内容 系列笔记目录【持续更新】:https://blog.csdn.net/weixin_42214698/category_…

【学习】Q learning、Q-learning for continuous actions、关于深度学习的猜想

文章目录一、Q learning评估状态值函数Vπ(s)MCTDdouble DQNdueling DQNprioritized replymulti-stepnoisy netdistributionalrainbow二、Q-learning for continuous actions三、关于深度学习的猜想一、Q learning value-based的方法,评论家不会直接决定行动。给定…

低度酒“百家争鸣”,谁能俘获年轻人的芳心?

【潮汐商业评论/原创】随着消费升级和女性消费力量的崛起,“她经济”逐渐成为新零售消费环境下一道“靓丽风景线”。女性消费者的消费偏好和消费习惯,正在促使低度酒、食品、服装、护肤、美妆、家居、育儿等行业发生新的变革。特别是酒水市场&#xff0c…

Spring Boot学习篇(八)

Spring Boot学习篇(八) 1.thymeleaf模板引擎使用篇(二) 1.1 配置通过地址栏直接访问html页面 1.1.1 在zlz包下创建filter包,其目录结构如下所示 1.1.2 在filter包下创建HTMLFilter类,其内容如下所示 package com.zlz.filter;import javax.servlet.*; import javax.servlet.…

启用分页机制

前言 本博客记录《操作系统真象还原》第五章第2个实验的操作~ 实验环境:ubuntu18.04VMware , Bochs下载安装 实验内容:启动内存分页机制 实验原理:内存分页机制 前置知识 前置知识可食用内存分页机制 代码 include/boot.in…

UML类图入门实战

介绍 UML——Unified modeling language UML (统一建模语言),是一种用于软件系统分析和设计的语言工具,它用于帮助软件开发人员进行思考和记录思路的结果。 UML 本身是一套符号的规定,就像数学符号和化学符号一样,这些符号用于描述…

设计模式学习(二):Adapter适配器模式

一、什么是Adapter模式我们先举个例子:如果想让额定工作电压是直流12V的笔记本电脑在交流220V的电源下工作,应该怎么做呢?通常,我们会使用适配器,将家庭用的交流220V电压转换成我们所需要的直流12V电压。这就是适配器的工作&…

Hive数据仓库简介与安装

文章目录Hive数据仓库简介及安装配置一、数据仓库简介1. 什么是数据仓库2. 数据仓库的结构1)数据源2)数据存储与管理3)OLAP服务器4)前端工具3. 数据仓库的数据模型1)星状模型2)雪花模型二、Hive简介1. 什么…

【踩坑总结】解决pycharm下载依赖一直失败的问题

目录前言正文问题复现问题本质解决方案补充总结检查是否安装成功下载的依赖存在哪总结前言 pycharm下载依赖失败这个问题对于我来说已经是个老生常谈的问题,与之共交手三次。 首次交锋是在大二利用 树莓派 做图像采集传输时,在树莓派的ubantu上使用pyt…

docker 容器使用 loki 插件收集日志

相关资料: The log-opts in the /etc/docker/daemon.json is not relaoded - General Discussions - Docker Community ForumsRecently I want to use loki-log-driver to ship logs to the loki server. The docker-deamon is controlled by systemd. The /etc/docker/daemon…

Day2 Spring

1 BeanFactory 与ApplicationContext的关系BeanFactory与ApplicationContext的关系BeanFactory是Spring的早期接口,称为Spring的Bean工厂,ApplicationContext是后期更高级接口,称之为Spring 容器;ApplicationContext在BeanFactory基础上对功能…

Pytorch 多层感知机

一、什么是多层感知机 多层感知机由感知机推广而来,最主要的特点是有多个神经元层,因此也叫深度神经网络(DNN: Deep Neural Networks)。 二、如何实现多层感知机 1、导入所需库并加载fashion_mnist数据集 %matplotlib inline import torch import to…

java弹幕视频网站源码

简介 Java基于ssm的弹幕视频系统,用户注册后可以上传视频进行投稿,也可以浏览视频发送弹幕,在个人中心管理视频、管理弹幕、管理评论等。管理员可以管理视频弹幕评论,查看统计图。 演示视频: https://www.bilibili.c…

CVE-2020-0014 Toast组件点击事件截获漏洞

文章目录前言漏洞分析组件源码触摸属性漏洞利用POC分析漏洞复现漏洞修复总结前言 Toast 组件是 Android 系统一个消息提示组件,比如你可以通过以下代码弹出提示用户“该睡觉了…”: Toast.makeText(this, "该睡觉了…", Toast.LENGTH_SHORT)…

C语言文件操作-从知识到实践全程

目录 引入 文件的打开和关闭 文件如何使用程序来打开? 绝对路径需要转义字符 fopen函数 fclose函数 文件的打开方式(fopen第二参数const char* mode): 文件的顺序读写 fgetc和fputc的使用 fputc fgetc fgets和fputs的使用 fputs fgets perror的使用 fprint…

哪些程序员适合自由工作?(附平台推荐)

在早些时候进行远程办公,接私活或者跨国进行编程,赚点外快等也不是什么奇怪的事情。但是那时候没有人想到会把这些工作完全变成自己的主要业务——也就是我们说的自由工作。也不知道是哪一个第1个吃了螃蟹的人发现自由工作还不错,于是经过后面…

【JavaScript】DOM 学习总结-基础知识

获取元素方法: // 获取三个非常规的标签 console.log(document.documentElement) console.log(document.head) console.log(document.body)通过id/class获取:getElementById / getElementsByClassName // 获取常规的用id,class,tag var boxdocument.g…

Android 自定义Activity的主题

一. 前言 当在某个app中做一个新界面时, 我们要考虑一下主题风格相符合一致. 本篇文章讲解的是,如何新创建的Activity 与整个app主题符合, 特别是状态栏的颜色需要和这个app的状态栏颜色保持一致. 在读本篇文章之前, 可以移步一下笔者之前写的文章:Android style&#xf…