汇编大小写转换

原文链接: 汇编大小写转换

上一篇: 汇编 循环

下一篇: 汇编 双重循环累加求和

汇编中可以使用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为大写

在汇编中使用逻辑运算只改变第五位就能进行大小写转换操作

先取出字母,然后进行操作,最后重新写入

134227_S4Sz_2856757.png

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


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部