数据处理的两个基本问题

 

目录

一、bx、si、di、和bp

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

三、寻址方式 

​编辑四、汇编语言中数据位置的表达  


计算机是进行数据处理、运算的机器。其中包括两个基本问题:
(1)处理的数据在什么地方?
(2)要处理的数据有多长?

reg表示一个寄存器、serg表示一段寄存器。

rag的集合包括:ax、bx、cx、dx、ah、al、bh、bl、ch、cl、dh、dl、sp、bpsidi;

serg的集合包括:ds、ss、se、cs。

一、bx、si、di、和bp

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

如下几种是正确:

mov ax ,[bx];

mov ax,[bx+si];

mov ax,[bx+di];

mov ax,[bp];

mov ax,[bp+si];

mov ax,[bp+di];

如下几种是错误的: 

mov ax,[cx];

mov ax,[dx];

mov ax,[ax];

mov ax,[ds]; 

2.在[...]中,这四个寄存器可以单个出现,或只能以四种组合出现:bx和si,bx和di,bp和si,bp和di。

3.只要在[...]中使用寄存器bp,而指令中没有显性地给出段地址,段地址就默认在ss中,例如下指令:
mov ax,[bp];       含义:(ax)=((ss)*16+(bp));

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

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

        绝大多数机器指令都是进行数据处理的指令,处理大致分为三种:读入、写入、运算。

指令在执行前,所要处理的数据可以在三个地方:CPU内部、内存、端口。

机器码汇编指令指令执行前数据的位置
8E1E0000mov bx,[0]内存,ds:0单元
89C3mov bx,ax

CPU内部,ax寄存器

BB0100mov bx,1CPU内部,指令缓冲器

三、寻址方式 

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

        8086CPU有多种寻址方式,如图所示:



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

汇编语言中的三种表达数据位置的方式:
1、立即数(idata)

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

例如:mov ax,1

           add bx,20000h

           or bx,00010000b

           mov al,'a'

2.寄存器

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

例如:mov ax,bx

           mov ds,ax

           push,bx

           mov ds:[0],bx

           push ds

           mov ss,ax

            mov sp,ax

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

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

存放段地址的寄存器可以是默认的,比如:

mov ax,[0]

mov ax,[di]

mov ax,[bx+8]

mov ax,[bx+si]

mov ax,[bx+si+8]

等指令,段地址默认在ds中;

mov ax,[bp]

mov ax,[bp+8]

mov ax,[bp+si]

mov ax,[bp+si+8]

等指令,段地址默认在ss中。

 

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

*ppsuc*

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值