汇编中类似数组的寻址方式

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/ma2595162349/article/details/90730675

          [bx]可以表示一个内存单元,段地址在ds寄存器中,偏移地址为bx。[bx+idata]也表示一个内存单元,其段地址在ds中,偏移地址为bx+idata(这里的bx表示寄存器bx中的值),这是不是C语言中数组寻址有点类似。下面通过一段代码来学习一下。

        

        上面代码用来将datasg中定义的第一个字符串转化为大写,第二个字符串转化为小写。第一字符的长度为5,程序在表示第二个字符串时直接用[bx+5],[bx]表示第一个字符串的第一个值,这个C语言的二维数组很类似。

      and al,11011111b是将al指向的字母变为大写,and是按位与;or al,00100000b是将al指向的字母变为小写,or是按位或。下面来debug看一下。

     

     程序加载时,可以看到字符串的值。

      

      程序运行完后,可以看到字符串变了。

参考资料:<<汇编语言>>王爽

扫描二维码关注公众号,回复: 6392547 查看本文章

猜你喜欢

转载自blog.csdn.net/ma2595162349/article/details/90730675