王爽汇编语言学习笔记(七) --数据处理中的两个问题



寄存器bp bx si di

1)8086CPU中,只有4个寄存器可以用来进行内存单元的寻址:bx bp si di

mov ax,[bx]

mov ax,[bx+si]

mov ax,[bx+di]

mov ax,[bp]

mov ax.[bp+si]

mov ax,[bp+di]

但不可以mov ax,[bx+bp]或者 mov ax,[si+di]

2) 使用bp寄存器时指令中没有显性地指出段地址段地址默认存储在ss

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

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

    CPU指令在执行前一刻关心将要处理的数据所在的位置。指令在执行前,所要处理的数据在:CPU内部寄存器、内存、端口。

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

汇编语言中用3个概念来表达数据位置:立即数,寄存器,段地址+偏移地址

1)对于直接包含在机器指令中的数据执行前在CPU的指令缓冲器中),称为立即数

例如mov ax,1  add bx,2000h

2)指令要处理的数据在寄存器中

例如mov ax,bx

3)指令要处理的数据在内存中在汇编指令中可用[X]的格式给出偏移地址,段地址在某个段地址寄存器中,可显式给出或隐式给出。

mov ax,[bp+si+8]

mov ax,es:[bx]

 

寻址方式

当数据存放在内存中的时候给定内存单元地址的方式成为寻址方式。

寻址方式

寻址方式

含义

名称

常用格式举例

[idata]

EA=(idata) SA=(ds)

直接寻址

[idata]

[bx]

EA=(bx) SA=(ds)

寄存器寻址

[bx]

[bp]

EA=(bp) SA=(ds)

[si]

EA=(si) SA=(ds)

[di]

EA=(di) SA=(ds)

[bx+idata]

EA=(bx+idata),SA=(ds)

寄存器相对寻址

 

用于结构体[bx].idata

用于数组 idata[si] idata[bx]

 用于二位数组[bp][idata]

[bp+idata]

EA=(bp+idata),SA=(ss)

[si+idata]

EA=(si+idata),SA=(ds)

[di+idata]

EA=(di+idata),SA=(ds)

[bx+si]

EA=(bx+si),SA=(ds)

基址变址寻址

用于二位数组[bx][si]

[bx+di]

EA=(bx+di),SA=(ds)

[bp+si]

EA=(bp+si),SA=(ss)

[bp+di]

EA=(bp+di),SA=(ss)

[bx+si+idata]

EA=(bx+si+idata),SA=(ds)

相对基址变址寻址

用于表格结构中的数组

[bx+di+idata]

EA=(bx+di+idata),SA=(ds)

[bx].idata[si]

[bp+si+data]

EA=(bp+si+idata),SA=(ss)

用于二位数组

[bp+di+data]

EA=(bp+di+idata),SA=(ss)

Idata[bx][si]

注意寄存器bp的默认段地址寄存器ss

指令要处理的数据有多长

8086可以处理两张尺寸数据:byteword

在机器指令中要致命进行的是字操作还是字节操作

1) 通过寄存器名指明要处理的数据的尺寸。 mov ax,.bx 字操作 mov al,1 字节操作

2) 在没有寄存器名存在的情况下用操作符word ptr或者byte ptr 指明是字操作还是字节操作。

mov word ptr ds:[0],1 字操作 

mov byte ptr ds:[bx],4  字节操作

6 div指令

-除数:8/16位,存放在寄存器或内存中;

被除数ax或者dx:ax16位或32位) 

若除数8位,AL=商,AH=余数 被除数=16

若除数16位,AX=DX=余数 被输出=32

格式div reg/内存单元

例如div byte ptr es:[0] 含义al =(ax)/(es*16+0) 的商 ah =(ax)/(es*16+0)的余数

      div word ptr ds:[0] 含义ax=(dx*10000h+ax)/(ds*16+0)的商

                            dx=(dx*10000h+ax)/(ds*16+0)的余数

伪指令 dd

dd 用于定义dworddouble word双字

内存中是以字节空间编号起始编号0参见第三章寄存器(内存访问)学习笔记。

操作符dup

db 重复的次数 dup (重复的字节型数据

dw 重复的次数 dup (重复的字型数据

dd 重复的次数 dup (重复的双字型数据

stack segment

   db 200 dup (0)

stack ends

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值