• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
仓式茜
博客园    首页    新随笔    联系   管理    订阅  订阅
七--更灵活的定位内存地址的方法

1.and和or指令

  (1)and逻辑与,按位执行与运算

    例:mov al,01100011B

      and al,00111011B

    得:al=00100011B

    用此指令可将对象的相应位设为0,其他位不变

  (2)or逻辑或,按位执行或运算

    例:mov al,01100011B

      or al,00111011B

    得:al = 01111011B

    用此指令可将对象的相应位设为1,其他位不变

2.关于ascii码

3.以字符形式给出的数据

  在汇编程序中,用‘......’的方式指明数据是以字符的形式给出的,编译器将把他们转化为对应的ascii码

  

   

 

   db ‘unIX’相当于db 75H,6EH,49H,58H  , u、n、I、X的ascii码分别为75H、6EH、49H、58H

  mov al,'a'相当于mov al,61H,a的ascii码为61H

  可以用debug的d命令查看data段的内容

4.大小写转换问题

  小写字母的ascii码比大写字母的大20H

  

 

   

 

   就ascii码的二进制形式来看,除第五位,大写字母和小写字母的其他位都一样

  大写第五位为0,小写为1

  将1改成0,就从小写改成了大写

  

 

 5.[bx+idata]

  之前用[bx]指明一个内存单元

  还可以用[bx+idata]表示内存单元,他的偏移地址为(bx)+idata(bx中的数值加上idata)

  mov ax,[bx+200]的含义:送一个字,偏移地址为bx的数值加上200

  也可以写成

    mov ax,[200+bx]

    mov ax,200[bx]

    mov ax,[bx].200

6.用[bx+idata]的方式进行数组的处理

  

 

 

 

 

 

 

 

 7.SI和DI

  si和di与bx功能相近,但不能分为两个8位寄存器

8.[bx+si]和[bx+di]

  [bx+si]表示一个内存单元,其偏移地址为(bx)+(si)(即bx中的数值加上si中的数值)

  mov ax,[bx+si]

  也可写成mov ax,[bx][si]

9.[bx+si+idata]和[bx+di+idata]

  [bx+si+idata]偏移地址为(bx)+(si)+idata

  mov ax,[bx+si+idata]也可写成:

    mov ax,[bx+idata+si]

    mov ax,[idata+bx+si]

    mov ax,idata[bx][si]

    mov ax,[bx].idata[si]

    mov ax,[bx][si].idata

10不同寻址方式的灵活应用

  

posted on 2022-09-02 09:41  仓式茜  阅读(82)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3