主题:将小写的字符串转为大写的字符串
zhangtie
[专家分:0] 发布于 2006-01-05 13:03:00
从键盘上输入一个小写的字符串,存放在BUFX为首地址的存储区;将输入的小写的字符串转换为大写的字符串,存放在BUFD为首地址的存储区中,并在屏幕上显示
回复列表 (共3个回复)
沙发
cz5430 [专家分:0] 发布于 2006-01-05 21:06:00
可以运行
cr equ 0dh
lf equ 0ah
data segment
prompt db 'Input a string: $'
bufx db 80,?,80 dup(0)
bufz db 80 dup(0)
data ends
code segment
assume ds:data,cs:code
start:
mov ax,data
mov ds,ax
lea dx,prompt
mov ah,9
int 21h
lea dx,bufx
mov ah,0ah
int 21h
mov dl,lf
mov ah,2
int 21h
mov dl,cr
mov ah,2
int 21h
mov si,2
mov di,0
mov cl,bufx[1]
mov ch,0
s1: cmp si,cx
je exit
sub bufx[si],20h
mov al,bufx[si]
mov bufz[di],al
mov dl,bufx[si]
mov ah,2
int 21h
inc si
inc di
jmp s1
exit: mov ah,4ch
int 21h
code ends
板凳
out606 [专家分:120] 发布于 2006-01-06 10:46:00
哦,好强啊
3 楼
1271157 [专家分:0] 发布于 2006-01-11 13:54:00
ode segment ;代码段
assume cs:code,ds:code
org 100h ;从100h开始
start:jmp begin ;跳到begin
p1 db 100
p2 db 0
array db 100h dup(?) ;置100个字节的缓冲区存放数据
begin:
lea bx,array ;将array的首地址给bx
mov ax,cs ;置cs-->ds
mov ds,ax
mov dx,offset p1 ;将p1的偏移量给dx
mov ah,0ah ;调用中断21的0a号功能从键盘接收字符
int 21h
xor bx,bx ;将bx清零
mov bl,p2 ;p2-->bl
mov array[bx],'$' ;送'$'至字符串尾
mov di,0ffffh ;-1-->di
next: inc di ;di自加
cmp array[di],'$' ;比较
je exit ;相等,则跳到exit执行
cmp array[di],41h ;(A~Z-->41h-5ah a~z-->61h-7ah)与a比较
jl exit ;小于,则跳
cmp array[di],5ah ;与z比较
jg next1 ;大于,则跳
add array[di],20h
jmp next ;加20h,大写转小写
next1:
cmp array[di],'$' ;比较
je exit ;相等,则跳到exit执行
cmp array[di],61h ;(A~Z-->41h-5ah a~z-->61h-7ah)与A比较
jl exit ;小于,则跳
cmp array[di],7ah ;与Z比较
jg exit ;大于,则跳
sub array[di],20h
jmp next ;减20h,小写转大写
disp:
loop next
exit: mov p1,0dh ;回车换行
mov p2,0ah
mov ah,09h
int 21h
mov ah,4ch ;程序结束
int 21h
code ends
end begin
我来回复