|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
大写变小写 小写变大写
- 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,[bx]
- and al,11011111b //不能直接 【bx】
- mov [bx],al
- inc bx
-
- loop p
- mov cx,4
- l:
- mov al,[bx]
- or al,00100000b //第五位变1
- mov [bx],al
- inc bx
-
- loop l
- mov ax,4c00h
- int 21h
- code ends
- end start
复制代码
为啥会 out of memary
还有 为什么不能直接 对【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[bx],11011111b ; 不能直接 【bx】
- inc bx
- loop p
- mov cx,4
- l: or byte ptr[bx],00100000b ; 第五位变1
- inc bx
- loop l
- mov ax,4c00h
- int 21h
- code ends
- end start
复制代码
这个代码二进制操作的目的如果是字母的大小写转换,那就很有必要在转换前进行字符判断,这道手续不可以省略,否则,会乱套的。
|
|