求助:为什么使用了&&会报错?

notno 2004-11-12 04:22:15
求助:为什么使用了&&会报错?
发信站: BBS 水木清华站 (Fri Nov 12 14:48:48 2004), 站内

使用了一句:
.IF AL<='Z'&&AL>='A'
居然报错说:undefined symbol:al

os:dos 6.22
compiler:masm 6.11

附源文件:
例10.2 编写一个把字符串中的所有小写字符转换成大写字符的子程序Strupr,要
求字符串的首地址和结束符为其入口参数。

解:
.MODEL SMALL, C
.DATA
buff
DB "This is a example.", 0
.CODE
Strupr PROC USES AX BX, String:PTR BYTE, Tail:BYTE
MOV BX, String
.REPEAT
MOV
AL, [BX]
.IF AL>='a' && AL<='z'

SUB
AL, 20H
MOV
[BX], AL
.ENDIF

INC
BX
.UNTIL AL==Tail
RET
Strupr ENDP
.STARTUP
INVOKE Strupr, ADDR buff, 0
.EXIT 0
END
...全文
228 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
notno 2004-11-17
  • 打赏
  • 举报
回复
结题:问题出在.IF AL<='Z'&&AL>='A'这句话没有空格上,正确的形式应为:
.IF AL<='Z' && AL>='A'

notno 2004-11-15
  • 打赏
  • 举报
回复
错误依旧,真是奇了怪了。
notno 2004-11-15
  • 打赏
  • 举报
回复
所以就很奇怪。
那个例子本来就是抄的教材上的……
不过我原来是用的:masm test.asm
试一下ml
notno 2004-11-13
  • 打赏
  • 举报
回复
不是啊。这段代码是直接拷的教材上的,所以会有很多全角空格
我实际上是在dos下自己手敲的(想要全角都难要),一开始也怀疑会不会是&&的格式问题,有无空格的情况都试了,报错依旧。

环境:
os:dos 6.22,没装汉字的
compiler:masm 6.11
clumsy 2004-11-13
  • 打赏
  • 举报
回复
不会吧? 我直接将你的顶楼里面的代码复制到 UltraEdit 里面的, 就是有那些个全角空格符号的, 改为普通的空格字符后, 就可以了. 我上面贴出来的是已经替换了之后的, 用 Masm6.0 编译 ml /c 是可以通过的
zhangze 2004-11-12
  • 打赏
  • 举报
回复
汇编没有好的编写工具,注意一点标点符号,游戏时;号和空格
clumsy 2004-11-12
  • 打赏
  • 举报
回复
报错的原因不是因为 && 而是你的代码里面有好多的全角空格字符:

.MODEL SMALL, C ;* 这行有的
.DATA
buff DB "This is a example.", 0
.CODE
Strupr PROC USES AX BX, String:PTR BYTE, Tail:BYTE
MOV BX, String
.REPEAT
MOV AL, [BX]
.IF AL >= 'a' && AL <= 'z' ;* 这行有的

SUB AL, 20H
MOV [BX], AL
.ENDIF

INC BX
.UNTIL AL==Tail
RET
Strupr ENDP
.STARTUP
INVOKE Strupr, ADDR buff, 0 ;* 这行有的
.EXIT 0 ;* 这行有的
END

21,458

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧