汇编语言中运用的内存寻址方式

内存寻址方式

一,处理字符问题

  • ‘ ’方式指明数据字符形式,转换成ASCII码

  • 大写二进制小写二进制数
    A01000001a01100001
    B01000010b01100010
    C01000011c01100011
    D01000100d01100100
    • 可以看出小写字母比大写字母ASCII码大20H
    • 即 大写+20H->小写,小写-20H->大写

二,[bx+idata]含义:

表示一个内存单元,偏移地址为((bx)+idata)

  • (ax)=((ds)*16+200+(bx))

  • mov ax,[200+bx]<=>mov ax,200[bx]<=>mov ax,[bx]200

三,SI和DI常执行与地址有关的操作

SI和DI是8086CPU中和BX相近寄存器:

  • BX,通用寄存器,在计算存储器地址时,常用为基址寄存器用
  • SI,(source index),源变址寄存器
  • DI,(destiantion index)目标变址寄存器

SI,DI不能分成8位寄存器使用

四,[bx+si]和[bx+di]方式寻址

1,[bx+si]表示一个内存单元地址为(bx)+(si)

2,mov ax,[bx+si]含义

  • 将一个内存单元内容送入ax
  • 这内存长度为2字节(字单元),存放一个字
  • 偏移地址为bx中数值加上si中数值
  • 段地址在ds

3,指令mov ax,[bx+si]数字化描述

  • (ax)= ((ds)*16 +(bx)+(si))

mov ax,[bx+si]其他写法:

  • mov ax,[bx][si]

五,[bx+si+idata]及[bx+di+idata]方式指定地址

1,[bx+si+idata]表示一个内存单元:

  • 偏移地址为(bx)+(si)+idata,即bx中数值加上si中数值再加上idata

2,指令mov ax,[bx+si+idata]含义:

  • 将一个内存单元内容送入ax
  • 这个内存单元长度为2字节(字单元),存放一个字
  • 偏移地址为bx中数值加上si数值再加上idata,段地址在ds中

3,数字化的描述:

  • ax= ((ds)*16+(bx)+(si)+idata)

4,指令mov ax,[bx+si+idata]其他写法:

  • mov ax,[bx+200+si]

  • mov ax,[200+bx+si]

  • mov ax,200[bx] [si]

  • mov ax,[bx].200[si]

  • mov ax,[bx] [si].200

  • mov ax,[bx] [si] (默认idata为0)

六,用dup设置内存空间

1,功能:

dup和db,dw,dd等数据定义伪指令配合使用,用来数据的重复

2,示例:

指令功能相当于
db 3 dup(0)定义了3个字节,它们值都是0db 0 ,0,0
db 3 dup(0,1,2)定义了9个字节,由0,1,2重复3次构成db 0,1,2,0,1,2,0,1,2
db 3 dup(‘abc’,‘ABC’)定义了18个字节,构成了’abc ABCabc ABCabcABC’db ‘abcABCabcABCabcABC’

3,dup的使用格式

  • dup重复次数用dup(重复字节型数据)
  • dw重复次数dup(重复的字型数据)
  • dd重复的次数dup(重复双字数据)
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值