汇编 error a2070:invalid error A2070:invalid instruction operands 难道不可以直接对bx进行 与 运算吗?

assumecs:codesg,ds:datasgdatasgsegmentdb'BaSic'db'iNfOrMaTiOn'datasgendscodesgsegment... 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
mov cx,5

s: and [bx],11011111B

inc bx
loop s
mov bx,5
mov cx,11
s0: and [bx],00100000B

inc bx
loop s0

mov ax,4c00h
int 21h
codesg ends

end start
展开
 我来答
lyz810
2012-04-23 · 知道合伙人互联网行家
lyz810
知道合伙人互联网行家
采纳数:7531 获赞数:31777
前端开发工程师

向TA提问 私信TA
展开全部
and [bx],11011111B
and [bx],00100000B
这两句把[bx]改为word ptr [bx]就可以了,[bx]代表一个地址,但没有说明这个单元的类型,你需要指定类型为字类型
追问
不行啊 按你的方法 转换后内存都为0了……谢谢啊,有没有别的方法啊?就是能直接大小写转换,不用再引入第三方的。
追答
不好意思,不是word ptr是byte ptr,每个单元都是字节不是字
转换小写用OR,不用and
测试过的代码如下(basic全部大写information全部小写)
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
mov cx,5

s: and byte ptr[bx],11011111B

inc bx
loop s
mov bx,5
mov cx,11
s0: or byte ptr[bx],00100000B

inc bx
loop s0
mov ax,4c00h
int 21h
codesg ends

end start
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式