PDA

View Full Version : مقایسه بین 3 رشته ورودی



saba_92
چهارشنبه 07 دی 1390, 21:03 عصر
سلام.این برنامه 3 نام خانوادگی از کاربر می گیره.بر اساس الفبا مرتبشون میکنه و در خروجی نشون میده..مشکلش اینجاست که بین حروف کوچک و بزرگ فرق میزاره..میخواستم اگه میتونید این مشکل رو برطرف کنید.



data segment 'data'
maxlen db 10
actlen db ?
srt1 db 10 dup('$')
msg1 db 'please enter your names(max 3 names):',0dh,0ah,'$'
msg2 db 0dh,0ah,'result is:',0dh,0ah,'$'
names db 10 dup(25 dup(''),0dh,0ah),'$'
crlf db 0dh,0ah,'$'
countrn db 5
data ends
code segment 'code'
main proc far
assume ds:data,cs:code
mov ax,data
mov ds,ax
mov es,ax
lea dx,msg1
call print_string
call read_names
call sort
lea dx,msg2
call print_string
lea dx,names
call print_string
mov ah,4ch
int 21h
main endp
read_string proc
mov ah,0ah
lea dx,maxlen
int 21h
ret
read_string endp
print_string proc
mov ah,09h
int 21h
ret
print_string endp
read names proc
lea bp,names
mov cx,4
l1:
lea dx,crlf
call print_string
call read_string
push cx
mov di,bp
lea si,str1
mov cl.actlen
jz end_read
mov ch,0
rep movsb
pop cx
add bp,27
loo l1
jmp end_pro
end_read:
pop cx
sub countrn,cl
end_pro:
ret
read_names endp
sort proc
lea si,nemes
mov cl,countrn
jz end_sort
dec countrn
mov ch,0
jz end_sort
l2:
mov di,si
add di,27
loop l3
pop cx
add si,27
loop l2
end_sort:
ret
sort endp
compare proc
push cx
push di
push si
mov cx,4
repe cmpsb
jcxz end_cmp
jb end_cmp
pop si
push si
lea di,str1
mov cx,4
rep movsb
pop di
pop si
push si
push di
mov cx,4
rep movsb
pop si
pop di
push di
push si
lea si,str1
mov cx,4
rep movsb
end_cmp:
pop si
pop di
pop cx
ret
compare endp
code ends
end main

IamOverlord
جمعه 23 دی 1390, 13:10 عصر
خوب باید یه دستکاری رو رشته های ورودی انجام بدی طوری که اگر کد ASCII اوّلین حرف هر رشته کم تر از 97 = 'a' بود به علاوه ی 28 بشه.

xman_1365_x
دوشنبه 26 دی 1390, 05:39 صبح
نحوه تبديل حروف بزرگ به كوچك و بلعكس رو قبلا توضيح دادم جستجو كنيد
موفق باشي