8 数据处理的两个基本问题

【微机复习】第三章----汇编指令集 第一节 概念 指令:指在某种计算机结构中定义的单个CPU操作。 指令集:CPU支持的所有指令构成的集合。 机器指令:将指令编码成二进制格式的序列。通常CPU只能识别和执行机器指令。 CPU的指令集体系结构(ISA):指令集和指令集编码的合称。最常见的指令集体系结构包括精简指令集(RISC)和复杂指令集(CISC)。 符号指令:便于记忆,书写。用字符表示。 符号指令举例: NEXT: MOV CH,... 阅读详情

1、本章对前面的所有内容是具有总结性的,计算机是进行数据处理、运算的机器,那么有两个基本问题就包含在其中:

(1)处理的数据在什么地方

(2)要处理的数据有多长

这两个问题,在机器指令中必须给以明确或隐含的说明,否则计算机就无法工作。本章我们就要针对8086CPU对这两个基本问题进行讨论。虽然讨论是在8086CPU的基础上进行的,但是这两个基本问题却是普遍的,对任何一个处理机都存在

我们定义的描述性符号:reg和sreg

为了描述上的简洁:reg代表寄存器,sreg代表段寄存器

reg集合包括:ax,bx,cx,dx,sp,bp,si,di

sreg集合包括:ds,ss,cs,es

 

2、si、di、bx、bp

这四个寄存器有下面所述的特殊性

(1)在8086CPU中,只有这四个寄存器可以用在“[...]”中进行内存单元的寻址

正确:

mov ax,[bx]

mov ax,[bx+si]

错误:

mov ax,[cx]

mov ax,[ax]

(2)在[...]中,这四个寄存器可以单个出现1,或只能以四种组合出现:

bx和si、bx和di、bp和si、bp和di

正确:

mov ax,[bx+si]

mov ax,[bp+di+idata]

错误:

mov ax,[bx+bp]

mov ax,[si+di]

(3)只要在[...]中使用寄存器bp,而指令中没有显性的给出段地址,段地址就默认在ss中

mov ax,[bp]                 含义:(ax) = ((ss) * 16 + (bp))

mov ax,[bp+si+idata]  含义:(ax) = ((ss) * 16 + (bp) + (si)+ idata)

 

3、机器指令处理的数据在什么地方

绝大部分机器指令都是进行数据处理的指令,处理大致可分为3类:读取、写入、运算。在机器指令这一层来讲,并不关心数据的值是多少,而关心指令执行前一刻,他将要处理的数据所在的位置。指令在执行前,所要处理的数据可以在3个地方:CPU内部、内存、端口

 

4、汇编语言中数据位置的表达

(1)立即数(idata)

对于直接包含在机器指令中的数据(执行前在CPU的指令缓冲器中),在汇编语言中称为:立即数(idata)

(2)寄存器

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

(3)段地址(SA)和偏移地址(EA)

指令要处理的数据在内存中,在汇编指令中可用[X]的格式给出EA,SA在某个段寄存器中

 

5、寻址方式

当数据存放在内存中的时候,我们可以用多种方式来给定这个内存单元的偏移地址,这种定位内存单元的方法一般称为寻址方式

 

6、指令要处理的数据有多长

(1)通过寄存器指明要处理的数据的尺寸

(2)在没有寄存器名存在的情况下,用操作符X  ptr 知名内存单元的长度,X在汇编语言指令中可以为word或byte

例如:

mov word ptr ds:[0],1

inc word ptr ds:[0]

 

inc byte ptr [bx]

add byte ptr [bx],2

(3)其他方法

有些指令默认了访问的是字单元还是字节单元,比如,push [1000H]就不用指明访问的是字单元还是字节单元,因为push指令只进行字操作

 

7、div指令

div是除法指令,使用div做除法的时候应该注意以下问题

(1)除数:有8位和16位两种,在一个reg或内存单元中

(2)被除数:默认放在AX或DX和AX中,如果除数为8位,被除数则为16位,默认在AX中存放;如果除数为16位,被除数则为32位,在DX和AX中存放,DX存放高16位,AX存放低16位

(3)结果:如果除数为8位,则AL存储除法操作的商,AH存储触发操作的余数;如果除数为16位,则AX存储除法操作的商,DX存储除法操作的余数

 

8、伪指令dd

前面我们用db和dw定义字节型数据和字型数据。dd是用来定义dword(double word,双字)型数据的。比如:

data segment

   db 1

   dw 1

   dd 1

data ends

在data段中定义了3个数据:

第一个数据为01H,在data:0处,占一个字节;

第二个数据为0001H,在data:1处,占一个字;

第三个数据为00000001H,在data:3处,占两个字;

 

9、dup

dup是一个操作符,在汇编语言中同db,dw,dd等一样,也是由编译器识别处理的符号。他是和db,dw,dd等数据定义伪指令配合使用的,用来进行数据的重复

db 3 dup(0)

定义了3个字节,他们的值都是0,相当于 db 0,0,0

db 3 dup(0,1,2) 

相当于db 0,1,2,0,1,2,0,1,2

db 3 dup ('abc','ABC')

定义了18个字节,相当于 db 'abcABCabcABCabcABC'

他可以快速开辟大块栈空间.......

 

ROS 2 Jazzy与Gazebo Harmonic仿真实战:从零搭建机器人仿真环境与高级应用 本文详细介绍了如何使用ROS 2 Jazzy和Gazebo Harmonic从零搭建机器人仿真环境,涵盖环境配置、传感器集成、多机器人协同和GPU加速优化等高级应用。通过实战案例和性能调优技巧,帮助开发者高效构建可靠的机器人仿真系统,提升开发效率。 阅读详情

相关推荐

PPO(Proximal Policy Optimization)算法原理及实现,详解近端策略优化

接着上面的讲,PG方法一个很大的缺点就是参数更新慢,因为我们每更新一次参数都需要进行重新的采样,这其实是中on-policy的策略,即我们想要训练的agent和与环境进行交互的agent是同一个agent;与之对应的就是off-policy的策略,即想要训练的agent和与环境进行交互的agent不是同一个agent,简单来说,就是拿别人的经验来训练自己。举个下棋的例子,如果你是通过自己下棋来不断提升自己的棋艺,那么就是on-policy的,如果是通过看别人下棋来提升自己,那么就是off-policy的。

weixin_41106546的博客 9万+

汇编语言——算术运算类指令

算术运算类指令 知识回顾——几个重要标志位的含意 CF(进位标志) =1 算术操作最高位产生了进位或借位 =0 最高位无进位或借位 ; PF(奇偶标志) =1 数据最低8位中1的个数为偶数 =0 数据最低8位中1的个数为奇数; AF(辅助进位标志) =1 D3→D4位产生了进位或借位 =0 D3→D4位无进位或借位; ZF(零标志) =1 操作结果为0 =0 结果不为0; SF(符号标志) =1 ...

olivia12344321的博客 8491

百度无人车ApolloAuto使用入门

1.安装原版ubuntu 14.04 http://www.ubuntu.org.cn/download/alternative-downloads 2.安装对应ubuntu 14.04的indigo版ROS http://wiki.ros.org/indigo/Installation/Ubuntu 3.安装Apollo Kernel https://github.co

ss910的博客 3万+

汇编语言数据处理长度(X ptr指令解析)

文章目录(1)通过寄存器名指明要处理的数据的尺寸。(2)在没有寄存器名存在的情况下,用操作符 X ptr 指明内存单元的长度,X在汇编指令中可以为byte、word或dword(3) 其他方法 8086CPU的指令,可以处理两种尺寸的数据,byte和word。所以在机器指令中要指明,指令进行的是字操作还是字节操作 对于这个问题,汇编语言中用一下方法处理。 (1)通过寄存器名指明要处理的数据的尺寸。 例如: 下面的指令中,寄存器ax、bx等指明了指令进行的是字操作: mov ax,1 mov bx,ds:[

Onlyone_1314的博客 2161

解密HDMI热插拔检测电路:从HPD引脚到EDID读取的全流程避坑

本文深入解析HDMI热插拔检测与EDID读取的全流程,从HPD引脚信号特性、DDC通道I2C协议到EDID数据结构,系统剖析了硬件电路设计、信号完整性和软件协议中的常见陷阱与解决方案,为消费电子设备开发者提供了一套完整的实战避坑指南。

weixin_29291069的博客 646

后仿真中《SDF反标必懂连载篇》之 Negative Delay (理论篇)

今天,学习一下SDF文件中的负数延时问题。比如下面的图片中的SETUPHOLD 中的hold time 为负数。

那么菜的博客 2572

小知识2

assume cs:code code segment start: mov ax,0a000H    mov cx 11 s: add ax,ax loop s segment ends end 上面的LOOP S时  ,首先是将(CX)减1,然后若(CX)!=0,则向前转至s:,所以使用CX来控制 add ax,ax的执行次数。 mov ax,0a000H   为什么要

www.i201314.net 726

PD3.0详解 协议的时序timer和counter计数

前面介绍了关于PD协议的交互,还有协议层数据各个字段的含义,但是一直没有系统的说关于协议的时序,还有部分counter,就是协议允许发送的次数,或者一些其他计数。 大师匈今天说一下关于这方面的东西,这些东西都是非常关键的东西,但是相对来说PD标准内对时序的要求还是比较宽泛,非常容易能够实现这样的要求。 Timer 1、CRCReceiveTimer 0.9~1.1ms 表示每次通信收到goodcrc的时间,必须在这个时间内收到goodcrc, 我们要注意不是在0.9~1.1ms内,而是第三方可以在这个范

大师匈的博客 5007

汇编语言(五):算术运算指令、BIOS中断服务

作为汇编语言的课程笔记,方便之后的复习与查阅 本篇为课程第六次课内容 目录算术运算指令加法指令ADD带进位加法指令ADC增量指令INC(increment)减法指令SUB(subtract)带借位减法指令SBB减量指令DEC(decrement)求补指令NEG(negative)比较指令CMP(compare)符号扩展指令乘法指令除法指令BIOS中断服务DOS系统调用BIOS中断:字符属性BIOS中断:设定显示模式BIOS中断:置光标位置BIOS中断:在光标位置显示字符BIOS中断:显示字符串 算术运算指令

连理o的博客 2113

【python股票价格预测】基于CNN-LSTM的股票价格预测(附python代码)

【python股票价格预测】基于CNN-LSTM的股票价格预测(附python代码)

k8291121的博客 2008

今日指数项目之实时流数据采集【六】

实时数据采集代码

Maynor的博客 2146

第8章 数据处理的两个基本问题

不过通过写这个程序,确实让我学会了结构化的访问数据,操作数据,对循环嵌套,加深了理解,以前简单的嵌套能写,复杂点的要搞半天才能解决,考虑问题没思路,现在感觉抓住结构化这点,至少让我有思路了。学了这一小节,我知道了,以前我写java程序时,数据都是瞎定义,只会根据是字符、布尔值,还是数字、数字长度、数字是不是浮点型,这些表面的东西来定义,或者说复杂的结构化的数据考虑,已经被水平更高的人规划好了,我只需要在别人框架下,写点增删改查。它是和db、dw、dd等数据定义伪指令配合使用的,用来进行数据的重复。

yyhshm520的博客 1792

duilib 实现截屏选取功能分析

本文关注点不再截屏而是截屏选取工具 1首先肯定是个透明窗口,且置顶并且是工具窗口(任务栏不显示窗口图标) 窗口样式 <?xml version="1.0" encoding="utf-8"?> <Window shadowattached="false"> <Box > <VBox name="track_box" margin="200,200,200,200" bkimage="file='screen_bord...

目前打算换一个工作,有招聘windows c++方向的也欢迎联系,北京、济南 最好 907

汇编语言——第8章 数据处理的两个基本问题

汇编语言——第8章 数据处理的两个基本问题

m0_65159351的博客 685

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

(8)数据处理的两个基本问题

1、要处理的数据有多长?       可以根据寄存器来确定,        可以根据word ptr,byte ptr等来确定, 2、寻址方式       直接寻址   [idata]        寄存器间接寻址  [reg]       寄存器相对寻址    [reg+idata]       基址变址寻址       [b    +si/di]       相对基址变

白话魔法师 594

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

《汇编语言》第8章 数据处理的两个基本问题

本章对前面的所有内容是具有总结,主要介绍对8086CPU的两个基本问题进行讨论:(1)处理的数据在什么地方?(2)要处理的数据有多长?

chenyijun的专栏 1692

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

8.数据处理的两个基本问题

1.两个基本问题: (1)处理的数据在什么地方? (2)处理的数据有多长? 2.寄存器集合(Reg):ax,bx,cx,dx,al,ah,bl,bh,cl,ch,dl,dh,sp,bp,di,si;   段寄存器集合(sReg):cs,ds,ss,es; 3.几种错误的指令: (1)mov ax,[cx] (2)mov ax,[dx] (3)mov ax,[dx] (4)mo...

weixin_34387284的博客 223

【笔记】【汇编语言】第8章 数据处理的两个基本问题

8.0 概述 数据处理的两个基本问题: (1) 处理的数据在什么地方? (2) 要处理的数据有多长? 为了描述上的简洁,后面使用reg表示一个寄存器,sreg表示一个段寄存器。 reg的集合包括:ax,bx,cx,dx,ah,al,bh,bl,ch,cl,dh,dl,sp,bp,si,di sreg的集合包括:ds,ss,cs,es 8.1 bx,bp,si,di (1)...

dengkenglu1416的博客 275

第8章 数据处理的两个基本问题

8.1  bx、si、di和bp ① ②只要在[...]中使用寄存器bp,而指令中没有显性地给出段地址,段地址就默认在ss中。 8.2  机器指令处理的数据在什么地方 8.3  汇编语言中数据位置的表达 立即数 寄存器 段地址和偏移地址: 也可以是显示

花花的博客 312

汇编语言-第8章-数据处理的两个基本问题

1、什么问题? (1)处理的数据在什么地方? (2)要处理的数据有多长? 2、reg,sreg什么意思? 为了描述上的简洁,在以后的课程中,我们将使用两个描述性的符号reg 来表示一个寄存器,用sreg表示一个段寄存器。 reg的集合包括:ax、bx、CX、、dx、ah、al、 bh、bl、ch、cl、 dh、dl、 sp、bp、si、di; sreg的集合包括: ds、 Ss、 CS、es。 3、段寄存器是什么意思? 段寄存器是因为对内存的分段管理而设置的。 在8086中设置4个16位的段寄存器,用于管理

qq_42788016的博客 902

第8章 数据处理的两个基本问题 笔记

P161 在8086CPU中,只有4个寄存器bx,si,di和bp可以用在“[……]”中进行内存单元的寻址。         在“[……]”中,这4个寄存器或者单个出现,或只能以4中组合出现:bx和si,bx和di,bp和si,bp和di。P162 只要在[……]中使用寄存器bp,而指令中没有显式地给出段地址,段地址就默认放在ss中。P169 div是除法指令。使用div做除法的时候应注意以下问题:(1) 除数:有8位和16位两种,在一个reg或内存单元中。(2) 被除数:有16位和32位两种,默认放在AX

canmeng50401的专栏 551

王爽《汇编语言》第8章 数据处理的两个基本问题

本章重点问题:处理的数据放在什么地方;要处理的数据有多长。     1.[bx]的基址是ds,[bp]的基址是ss。所以bx,bp不能在一起做偏移的寻址,si和di默认基址是ds,但若和bp一起使用则基址为ss。另外,si+-di不能在没有bx或bp的时候作运算。     2.指令执行前数据可以在3个地方:内存,寄存器,指令缓冲器。     3.数据位置表达方式:立即数,寄存器,段地址+

行者无疆的专栏 1283
上一篇: 7 更灵活的定位内存地址的方法
下一篇: 9 转移指令的原理
fa1lr4in
博客等级 码龄9年 64粉丝 79原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值