美孚润滑油的牌号:汇编语言程序设计之大小写字母转换设计思路

来源:百度文库 编辑:中科新闻网 时间:2024/04/26 12:07:03

假设我们接收到的都是字母且存放在al中,那么
转换为小写的方式为
or al,00100000B ;即 or al,20h
转换为大写
and al,11011111B ;即 and al,dfh

大写字母是从41h开始,小写字母是从61h开始,这样比较一下它们的ASCII码就知道了。
;假设输入的字符不是小写字母就是大写字母,如果是小写字母就将其转化为大写字母,反之不变
data segment
t1 db 10 dup(?)
data ends
stack segment
t2 db 10 dup(?)
stack ends
code segment
assume cs:code,ds:data,ss:stack
main proc
start:
mov ax,data
mov ds,ax
mov ax,stack
mov ss,ax
mov ah,01h
int 21h ;读入字符至al中
cmp al,61h
jae change ;如果是小写字母就转化
print:
mov dl,al
mov ah,2
int 21h
mov ah,4ch
int 21h
main endp
change:
sub al,20h
jmp print
code ends
end start

因为字母在电脑中是以asall的形式保存的,大小写间的转换只要在他们之间加或者减20h
如大写换小写 mov a,* ;*为你保存字母的地方
add a.#20h
int dl,a
mov al,9
int 21h

他们的ASCII码值是不同的,比如a是96[比如哈,具体我忘记了]A是56。那你可以判断字母是不是在a和z之间,在就不做转换,不在就把它转换成ASCII码减去40再转换回来。