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

本文主要介绍了8086CPU的内存寻址方式。包括处理字符问题时大小写字母ASCII码转换,[bx+idata]、[bx+si]、[bx+di]、[bx+si+idata]及[bx+di+idata]等寻址方式的含义、指令含义及数字化描述,还介绍了SI和DI寄存器,以及用dup设置内存空间的功能和使用格式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

内存寻址方式

一,处理字符问题

  • ‘ ’方式指明数据字符形式,转换成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(重复双字数据)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值