Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.05.2009, 11:28   #1
stscolt
Пользователь
 
Регистрация: 21.04.2008
Сообщений: 50
По умолчанию Задача на Ассемблере

Надо реализовать две процедуры. Первая должна сливать два слова, а вторая - обрезает слово до заданной длины.
stscolt вне форума Ответить с цитированием
Старый 12.05.2009, 12:38   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
сливать два слова
Ну например так, выдрано из MASMLib:
Код:
	.386
	.model flat,stdcall
	option casemap:none

.data
r				db "String1",0
t	db "String2",0;
y	db 0 dup(100)
;_______________
.code
szLen proc src:DWORD

    mov eax, [esp+4]
    sub eax, 4

  @@:
    add eax, 4
    cmp BYTE PTR [eax], 0
    je lb1
    cmp BYTE PTR [eax+1], 0
    je lb2
    cmp BYTE PTR [eax+2], 0
    je lb3
    cmp BYTE PTR [eax+3], 0
    jne @B

    sub eax, [esp+4]
    add eax, 3
    ret 4
  lb3:
    sub eax, [esp+4]
    add eax, 2
    ret 4
  lb2:
    sub eax, [esp+4]
    add eax, 1
    ret 4
  lb1:
    sub eax, [esp+4]
    ret 4

szLen endp

szCatStr proc lpszSource:DWORD, lpszAdd:DWORD

    push edi

    invoke szLen,lpszSource ; get source length
    mov edi, lpszSource
    mov ecx, lpszAdd
    add edi, eax            ; set write starting position
    xor edx, edx            ; zero index
    xor eax, eax            ; avoid stall with following AL reads and writes

  @@:
    mov al, [ecx+edx]       ; write append string to end of source
    mov [edi+edx], al
    add edx, 1
    test al, al             ; exit when terminator is written
    jne @B

    pop edi
    mov eax, lpszSource     ; return start address of source

    ret

szCatStr endp
start:
 invoke szCatStr, addr r, addr t
 ret
end start
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача на ассемблере. Использование команд сдвига. SoundMan Помощь студентам 2 25.09.2008 21:17
задача на ассемблере 666lynx666 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 24.06.2007 12:27