以下是文字提取部分,阅读完毕的同学可以离开了
and和or指令我们都不陌生
在汇编中;依然存在;
and又称;逻辑与;
通常用法是将操作对象;相应位置置0;
or又称;逻辑或;
通常用法是将操作对象;相应位置置1;
其实我们可以如下定义段
‘…’代表的意思是转换成对应的;ASCII数值;
比如;db ‘unIX’;当于
db ;66H,6FH,52H,4BH;
db代表;字节型;
dw为;字型;
应用上面的知识来;解决一个问题;
将下面datasg中第一个字符串;转化为大写;
将第二个字符串;转换为小写;
我知道你很想用;if;
可惜我就是;不让你用;
这里你一定要;自己思考;一下
才能看下面的答案
没有思路的,我带你走一走
涉及到;大小写问题;
你第一步想到的一定是;ASCII表;
从下面的表中能明显看到
;二进制下;
小写在第五位上比大写;多个1;
这么一说,问题就变得;很简单了;
一个;循环+and/or;操作就能解决问题
如果用;C语言;写上面的程序
会是下面这个样子
你会发现:;数组;是多么的好用
;别急;
;汇编也有数组!;
我们的偏移地址可以写成:;[bx+idata];
于是就可以丢掉;mov bx,5;
从而让上面两个循环;合并为一个;
上面的[bx+200];也可以;写成下面的样子
对比C语言你会发现
C语言:;a[i],b[i];
汇编:;0[bx],5[bx];
说不上;谁便利,谁复杂;
只能说汇编的;idata[bx];
为高级语言;提供了便利;
最后
;欢迎光临小站:yuruotong.com;