and or 字符型数据 灵活定位内存地址

and用来抠0 or用来填1

al第6位设为0的方法是 and al,10111111B 

al第7位设为0的方法是 and al,01111111B 

用单引号写的字符型数据 'unIX' 在编译的时候 会被转化为相应的ASCII码

字母A的ascii码是 41H 也就是65        01000001

小写字母的ascii码是61H                    01100001

观察发现 第5位(左数第三位) 是0 就是大写 是1就是小写

例题 将 BaSiC 5个字母全变成大写

assume cs:codesg,ds:datasg

datasg segment

       db 'BaSiC'

datasg ends

codesg segment

   start:          mov ax,datasg

                     mov ds,ax

                     mov bx,0

                     mov cx,5                 一共5个字母

          s:         mov al,[bx]

                     and al,11011111B

                     mov [bx],al

                     inc bx

                     loop s

                     mov ax,4c00h

                     int 21h

codesg ends

end start

=================================================

[5+bx]       5[bx]        [bx].5          都是一个意思

=================================================

例题  已知2000:1000 处数据是 BE 00 06 58 6A 22 .....

分析每一行代码的效果

mov ax,2000h

mov ds,ax                             DS=2000h

mov bx,1000h                       bx=1000h

mov si,0                                si=0

mov ax,[bx+2+si]                   偏移段为 1000+2+0=1002   对应的是06的位置 ax=5806

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值