转换为大写出错,转换为小写又成功了,不知错在哪里?
本帖最后由 loop 于 2011-7-23 19:49 编辑看了第33讲,也就是第七章7.6内容,我想不能循环,用一个笨办法试试转换大小写字母,按讲应该是可以的,结果前面转换成大写字母不成功,而后面转为小写字母却又成功了,不知是什么原因?请鱼友们指点
附上代码如下:
assume cs:codesg,ds:datasg
datasg segment
db 'BaSiC'
db 'iNfOrMaTiOn'
datasg ends
codesg segment
start: mov ax,datasg
mov ds,ax
mov bx,0
and ,11011111B
and ,11011111B
and ,11011111B
and ,11011111B
and ,11011111B
or ,00100000B
or ,00100000B
or ,00100000B
or ,00100000B
or ,00100000B
or ,00100000B
or ,00100000B
or ,00100000B
or ,00100000B
or ,00100000B
or ,00100000B
mov ax,4c00h
int 21h
codesg ends
end start
请小甲鱼指点 and ,11011111B是不行的,如果这样计算机就不知道是进行8位还是16位的运算,所以要指明数据尺寸。 楼上说的对,我再补充一下:一定要把8位和16位区分开,比如按上面的程序。mov ax, 这样写的话,(ax)=6142H(a=61H,B=42H) ,而写成mov al,的话,(al)=42H(B),因为db 定义的是字节数据,两个字节为一个字(dw),所以要先,mov al,,再 and al,11011111b,最后再 mov ,al,才是正确的。 哦,明白了,谢谢了
页:
[1]