out of memory
大写变小写 小写变大写assume cs:code
data segment
db 'WSsb'
db 'SKks'
data ends
code segment
start:
mov ax,data
mov ds,ax
mov cx,4
mov bx,0
p:
mov al,
and al,11011111b //不能直接 【bx】
mov ,al
inc bx
loop p
mov cx,4
l:
mov al,
oral,00100000b //第五位变1
mov ,al
inc bx
loop l
mov ax,4c00h
int 21h
code ends
end start
为啥会 out of memary{:5_104:}
还有 为什么不能直接 对【bx】按位运算呢 本帖最后由 jackz007 于 2021-3-13 01:09 编辑
把第 20 、29 行的注释符由 // 改为 ; 就可以消除 "out of memory" 的问题
关于位操作的疑问,答案是肯定的,试试我修改过的代码
assume cs:code , ds:data
,
data segment
db 'WSsb'
db 'SKks'
data ends
code segment
start:
mov ax,data
mov ds,ax
xor bx,bx
mov cx,4
p: and byte ptr,11011111b ; 不能直接 【bx】
inc bx
loop p
mov cx,4
l: orbyte ptr,00100000b ; 第五位变1
inc bx
loop l
mov ax,4c00h
int 21h
code ends
end start
这个代码二进制操作的目的如果是字母的大小写转换,那就很有必要在转换前进行字符判断,这道手续不可以省略,否则,会乱套的。 1:8086 cpu的注释应该是用 ; 符号
2:应该是可以的,应该是你没指明用啥类型的数据 cpu不认得
例如
and byte ptr,11011111b
eol75999 发表于 2021-3-13 09:26
1:8086 cpu的注释应该是用 ; 符号
2:应该是可以的,应该是你没指明用啥类型的数据 cpu不认得
例如
谢谢 jackz007 发表于 2021-3-13 00:55
把第 20 、29 行的注释符由 // 改为 ; 就可以消除 "out of memory" 的问题
关于位操作的 ...
哦哦 谢谢{:5_92:}
页:
[1]