汇编大小写转换
原文链接: 汇编大小写转换
上一篇: 汇编 循环
下一篇: 汇编 双重循环累加求和
汇编中可以使用and和or进行逻辑运算
and al,11111110B
将al第0位设为0or al,00000001B
将al第0位设置为1
ASCII编码中,大写+20H=小写,小写-20H = 大写
在转换过程中需要提前判断才能决定是否进行加减操作
先将各个编码进行对比
使用Python输出各个编码的二进制表示
for i in range(26):n1 = i + ord('a')n2 = i + ord('A')c1 = chr(n1)c2 = chr(n2)print(c1, bin(n1))print(c2, bin(n2))
a 0b1100001
A 0b1000001
b 0b1100010
B 0b1000010
c 0b1100011
C 0b1000011
d 0b1100100
D 0b1000100
e 0b1100101
E 0b1000101
f 0b1100110
F 0b1000110
g 0b1100111
G 0b1000111
h 0b1101000
H 0b1001000
i 0b1101001
I 0b1001001
j 0b1101010
J 0b1001010
k 0b1101011
K 0b1001011
l 0b1101100
L 0b1001100
m 0b1101101
M 0b1001101
n 0b1101110
N 0b1001110
o 0b1101111
O 0b1001111
p 0b1110000
P 0b1010000
q 0b1110001
Q 0b1010001
r 0b1110010
R 0b1010010
s 0b1110011
S 0b1010011
t 0b1110100
T 0b1010100
u 0b1110101
U 0b1010101
v 0b1110110
V 0b1010110
w 0b1110111
W 0b1010111
x 0b1111000
X 0b1011000
y 0b1111001
Y 0b1011001
z 0b1111010
Z 0b1011010 对比发现,其大小写只与第五位相关,1为小写,0为大写
在汇编中使用逻辑运算只改变第五位就能进行大小写转换操作
先取出字母,然后进行操作,最后重新写入

DATAS SEGMENT;此处输入数据段代码 s db 'hEllo world',13,10,'$'len dw 11
DATAS ENDSSTACKS SEGMENT;此处输入堆栈段代码
STACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKS
START:MOV AX,DATASMOV DS,AX;此处输入代码段代码LEA DX,sMOV AH,9INT 21H; 转大写mov cx,lenmov bx,0lop:mov al,[bx]and al,11011111Bmov [bx],alinc bxloop lopLEA DX,sMOV AH,9INT 21HMOV AH,4CHINT 21H
CODES ENDSEND START
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
