汇编 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 展开
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 展开
1个回答
展开全部
and [bx],11011111B
and [bx],00100000B
这两句把[bx]改为word ptr [bx]就可以了,[bx]代表一个地址,但没有说明这个单元的类型,你需要指定类型为字类型
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
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询