[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看一下。
程序加载时,可以看到字符串的值。
程序运行完后,可以看到字符串变了。
参考资料:<<汇编语言>>王爽