(十三)and 和 or指令 与 大小写转换--汇编笔记

汇编语言

Posted by YiMiTuMi on March 24, 2020

and 和 or指令

and指令:逻辑指令,按位进行与运算。(全1出1)

mov al, 01100011B
and al, 00111011B

结果:al = 00111011B

通过该指令可将操作对象的相应位设为0,其他位不变。

or指令:逻辑指令,按位进行或运算。(有1出1)

mov al, 01100011B
or al, 00111011B

结果:al = 01111011B

通过该指令可将操作对象的相应位设为1,其他位不变。

以字符形式给出的数据

在汇编程序中,用‘…..’的方式指明数据是以字符的形式给出的,编辑器将把它们转化为相对应的ASCII码。

例:

assume cs:code, ds:data

data segment

	db 'unIX'  //unIX 换转化为ASCII码
	db 'foRK'

data ends

code segment

	start:  mov al, 'a'
			mov bl, 'b'

			mov ax, 4c00H
			int 21H

code ends

end start

db ‘unIX’ 相当于 db 75H, 6EH, 49H, 58H即unIX的ASCII码。

mov al, ‘a’ 相当于 mov al, 61H即a的ASCII码。

大小写转换的问题(or和and判断,不用判断语句)

通过对比ASCII码可以看出,小写字母的ASCII码值比大写字母的ASCII码值大20H。 即将“a”的ASCII码值减去20H,就可以得到“A”。

一个字母,不管它原来是大写还是小写,将它的第5位为0,它就必将变为大写字母,将它的第5位为1,它就必将变为小写字母。

大小写转换:

assume cs:code, ds:datasg

datasg segment
	
	db 'BaSiC'
	db 'iNfOrMaTiOn'

datasg ends

code segment

	start:  mov ax, datasg
			mov ds, ax
			
			mov bx, 0
			mov cx, 5
         //大写
		s:  mov al, [bx] //写出
			and al, 11011111H  //转换
			mov [bx], al //存会
			inc bx
			loop s
		//小写
			mov cx, 11
		s0: mov al, [bx]
			or al, 00100000H
			mov [bx], al
			inc bx
			loop s0

			mov ax, 4c00H
			int 21H
code ends

end start

海芋 – 希望