汇编基础一

     第一个问题         数据存在哪里 ?
1.  绝大部分机器指令都是进行数据处理的指令,处理大致可分为3类:读取、写入、运算。在机器指令这一层来讲,并不关心数据的值的多少,而关心指令执行前的一刻,它将要处理的数据所在的位置。指令在执行前,所要处理的数据可以在3个地方:CPU内部、内存、端口
  在汇编语言中如何表达数据的位置?汇编语言中用3个概念来表达数据的位置
1)  立即数

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

2)   寄存器

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

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

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

二 :如何描述一个内存单元

要完整地描述一个内存单元,需要两种信息

1)        内存单元的地址:  由段寄存器和偏移量给出

2)        内存单元的长度(类型)

单元的长度(类型)可以由具体指令中的其他操作对象(比如说寄存器)指出

“[X]”所表示的数据有两种类型:字节或字。是哪种类型由寄存器名或具体的运算决定

1) :  (al)、(bl)、(cl)等得到的数据为字节型;(ds)、(ax)、(bx)等得到的数据为字型。

2)  :(al)=(20000H),则(20000H)得到的数据为字节型;(ax)=(20000H),则(20000H)得到的数据为字型。

三 :如何才能找到要处理的数据

  一般通过寻址才能找到需要的数据

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

四  指令要处理的数据有多长

1.         8086CPU的指令,可以处理两种尺寸的数据,byte和word。所以在机器指令中要指明,指令进行的是字操作还是字节操作。对于这个问题,汇编语言中用以下方法处理。

1)        通过寄存器名指明要处理的数据的尺寸:mov ax,1     inc al

2)        在没有寄存器名存在的情况下,用操作符X ptr指明内存单元的长度,X在汇编指令中可以为word或byte。add word ptr [bx],2   inc byte ptr ds:[0]

3)        其他方法   有些指令默认了访问的是字单元还是字节单元,如 push  [1000H]


3.数制的概念   
   16进制表示的数据后面加H,2进制的后面加B
   一个X进制的数据左移1位,相当于乘于X
4.16位机的意思:
    (1)运算器一次最多处理16位的数据
    (2)寄存器最大宽度为16位
    (3)寄存器和运算器之间通路为16位,即数据总线16条

5.8086传送物理地址方法是:段地址*16+偏移地址=物理地址
   段地址*16必然是16的倍数,所以一个段的起始地址也一定是16的倍数
   偏移地址为16位,16位地址寻址能力为64KB,所以一个段最大长度为64KB



  


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Farmwang

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

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

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

打赏作者

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

抵扣说明:

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

余额充值