小白的汇编之路(七)----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
  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值