В заданной строке маленькие латинские
…
Mov esi, [f1]
Mov edi, [f2]
Mov ecx, [len]
Shr ecx, 2
Jecxz m1
cld
cmp esi, edi
ja short m2
je break
mov esi, eax
dec esi
add edi, [len]
dec edi
std
m2:
rep movsd
break:
cld
Пример 2. В заданной строке маленькие латинские буквы заменить большими.
Str1 db ‘This is string’,0
…
cld
mov esi, offset str1
mov edi, offset str1
for1:
lodsb
test al, al
je short break
cmp al, ‘a’
jb notl
cmp al, ‘z’
ja notl
add al, ‘A’ – ‘a’
notl:
stosb
jmp for1
break:
cld
Пример 3. Составить программу для сравнения двух длинных чисел одинаковой длины. Программа должна формировать результат >0, если первое число больше второго, равно 0, если числа равны и <0, если первое число меньше второго. Пусть число состоит из n 32-битных «цифр» и записывается, начиная с младших цифр.
X dd …, …., ….
Y dd …, …, …
N dd (Y – X)/4
Res dd ?
…
sub eax, eax
mov ecx, [N]
lea esi , [X+ecx*4-4]
lea edi , [Y+ecx*4-4]
std
repe cmpsd
jecxz m1
jb letter
mov eax, 1
jmp short m1
letter: mov eax, -1
m1:
cld
Пример 4.
В заданном массиве чисел все нулевые значения заменить –1
While (){
If (есть нулевое значение)
Заменить;
Else
Break;
}
mov ecx, [n]
cld
sub eax, eax
mov edi, offset x
for1:
repne scasd
jecxz break
mov [dword ptr edi-4], -1
jmp for1
Содержание Назад Вперед
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий