⼩⽩的汇编之路(七)----and和or指令
1,前⾔
学习王爽⽼师的汇编语⾔⼀书所做的笔记
2,and指令
and指令:逻辑与指令,按位进⾏与运算
mov al,01100011B
and al,00111011B
# 执⾏结果:al=00100011B
al00111011B&00100011 00&0
10&0
11&1
01&0
01&0
00&0
11&1
11&1
通过该指令可将操作对象的相应为设为0,其他位不变
例如将al的第6位设为0的指令是:mov al,1011111B
3,or指令
or指令:逻辑或指令,按位进⾏或运算
mov al,01100011B
or al,00111011B
汇编判断指令# 执⾏结果:al=01111011B
al00111011B|01111011B 00|0
10|1
11|1
01|1
01|1
00|0
11|1
11|1
通过该指令可将操作对象的相应位设为1,其他位不变
将al的第6位设为1:or al,01000000B
4,⼤⼩写转换问题
4.1,关于ASCII码
在⽂本编辑过程中,当我们按下a键,这个字符的信息会被送⼊计算机中,计算机⽤ASCII码的规则对其进⾏编码 ,将其转换为61H存储在内存的制定空间中;⽂本编辑软件将其从内存中取出61H,将其送到显卡上的显存。
4.2,⼤⼩写规律
⼤写⼗六进制⼆进制⼩写⼗六进制⼆进制
A41H01000001a61H01100001
B42H01000010b62H01100010
C43H01000011c63H01100011
D44H01000100d64H01100100
E45H01000101e65H01100101
F46H01000110f66H01100110
………………………………
⼩写字母与⼤写字母的⼗六进制只相差20H,也就是说区别在于第5位
依靠这个规律,我们可以编写这样⼀个程序,进⾏字母⼤⼩写转换
# 其实可以通过逐个判断字母是不是⼩写/⼤写,进⾏相应的⼤⼩写转换
# 这个程序是将第⼀个字符串转为⼤写
# 将第⼆个字符串转为⼩写
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: mov al,[bx]
and al,11011111B
mov [bx],al
inc bx
loop s
mov bx,5
mov cx,11
s0: mov al,[bx]
or al,00100000B
mov [bx],al
inc bx
loop s0
mov ax,4c00h
int 21h
codesg ends
end start
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论