ورود

View Full Version : آموزش: با استفاده از دستورات Lods و Stos حروف کوچک یک رشته به حروف بزرگ تبدیل شود



mohsen_55
چهارشنبه 03 خرداد 1391, 19:14 عصر
سلام خسته نباشید
من یک سوال درسی داشتم خودم خیلی فکر کردم ولی فقط نصفش رو تونستم حل کنم. لطفا سریع تر جوابم رو بدید چون پروژه درسی است.
عنوان سوال:
با استفاده از دستورات Lods و Stos در اسمبلی حروف کوچک یک رشته به حروف بزرگ تبدیل شود و حروف بزرگ در رشته تغییری حاصل نشود. حداکثر اندازه رشته 50 کارکتر می باشد.
( رشته از ورودی دریافت شود و در چند سطر پایین تر چاپ شود).


لطفا هر چی زودتر جواب من رو بدید. من منتظرم.
ممنون

MostafaMohammadi
چهارشنبه 03 خرداد 1391, 21:33 عصر
این کد حروف بزرگ رو به کوچیک تبدیل می‌کنه، خط 6 و 7 رو باید تغییر بدی.

mov( StringAddress, esi ); // Load string address into ESI.
mov( esi, edi ); // Also point EDI here.
mov( (type str.strrec [esi].length, ecx );
repeat
lodsb(); // Get the next character in the string.
if( al in ’A’..’Z’ ) then
or( $20, al ); // Convert upper case character to lower case.
endif;
stosb(); // Store converted character back into string.
dec( ecx );
until( ecx == 0 );

mohsen_55
پنج شنبه 04 خرداد 1391, 19:00 عصر
ممنون از کدی که نوشتی ولی من کد کاملش رو می خوام همراه باچیزهایی که در دیتا سگمنت باید بنویسم که دقیقا مشخص باشه هر خطی چه کاری می کنه.
ممنون از همکاریتون.
من منتظر هستم





این کد حروف بزرگ رو به کوچیک تبدیل می‌کنه، خط 6 و 7 رو باید تغییر بدی.

mov( StringAddress, esi ); // Load string address into ESI.
mov( esi, edi ); // Also point EDI here.
mov( (type str.strrec [esi].length, ecx );
repeat
lodsb(); // Get the next character in the string.
if( al in ’A’..’Z’ ) then
or( $20, al ); // Convert upper case character to lower case.
endif;
stosb(); // Store converted character back into string.
dec( ecx );
until( ecx == 0 );

mohsen_55
پنج شنبه 04 خرداد 1391, 19:02 عصر
ممنون از کدی که نوشتی ولی من کد کاملش رو می خوام همراه باچیزهایی که در دیتا سگمنت باید بنویسم که دقیقا مشخص باشه هر خطی چه کاری می کنه.
ممنون از همکاریتون.
من منتظر هستم

MostafaMohammadi
پنج شنبه 04 خرداد 1391, 22:45 عصر
من این کد رو از کتاب The Art of Assembly Language نوشتم. نمیدونم چطور باید برنامه کامل اش رو به زبان اسمبلی بنویسید.

xman_1365_x
یک شنبه 07 خرداد 1391, 14:40 عصر
کتاب زبان ماشین و برنامه سازی سیستم - داریوش نیکمهر رو دانلود کنید ، فصل کار با رشته ها همراه با مثاله، چند صفحه بیشتر نیست بخونید مشکلتون حل میشه.
موفق باشید.

2xx2xx
سه شنبه 12 اسفند 1393, 19:53 عصر
سلام خسته نباشید
من یک سوال درسی داشتم خودم خیلی فکر کردم ولی فقط نصفش رو تونستم حل کنم. لطفا سریع تر جوابم رو بدید چون پروژه درسی است.
عنوان سوال:
با استفاده از دستورات Lods و Stos در اسمبلی حروف کوچک یک رشته به حروف بزرگ تبدیل شود و حروف بزرگ در رشته تغییری حاصل نشود. حداکثر اندازه رشته 50 کارکتر می باشد.
( رشته از ورودی دریافت شود و در چند سطر پایین تر چاپ شود).


لطفا هر چی زودتر جواب من رو بدید. من منتظرم.
ممنون

section .text
global _start ;must be declared for using gcc
_start: ;tell linker entry point
mov ecx, len
mov esi, s1
mov edi, s2
loop_here:
lodsb
or al, 20h
stosb
loop loop_here
cld
rep movsb
mov edx,20 ;message length
mov ecx,s2 ;message to write
mov ebx,1 ;file descriptor (stdout)
mov eax,4 ;system call number (sys_write)
int 0x80 ;call kernel
mov eax,1 ;system call number (sys_exit)
int 0x80 ;call kernel
section .data
s1 db 'HELLO, WORLD', 0 ;source
len equ $-s1
section .bss
s2 resb 20 ;destination