Курсовая работа: Конкатенація строк Assembler

fdiv st(0), st(1)

fstp y

jmp theend

Мітка отримує управління, якщо a < b. У цій мітці у першу чергу пишеться у консоль, що операнд а таки менший за b. Потім від aвіднімається b, загружається знову а, тому ще попереднє значення а находиться вже дальше по стеку. Та ділиться результат віднімання на а. Усе це розтащовуєть у змінній y.

theend:

invoke FloatToStr, y, ADDR str3

xor eax, eax

invoke szLen, offset strArithm

invoke WriteConsole, hOutPut, offset strArithm, eax, NULL, NULL

xor eax, eax

invoke szLen, ADDR str3

mov nRead1, eax

invoke WriteConsole, hOutPut, ADDR str3, nRead1, NULL, NULL

ret

Це остання мітка, є логічним кінцем програми. Треба тільки пояснити invoke FloatToStr, y, ADDR str3 ця функція преобразує число у строку, яка потім буде виведена на консоль.

Тепер перейдемо до наступної функції string. Допоміжна части якої, така ж як і у попередньої функції. Особої уваги вимогає invoke strCat, offset buff, offset str1. Ця функція викликає функцію конкатенації, яка буде приведена нижче.

strCat proc lpszSource:DWORD, lpszAdd:DWORD

push edi

invoke szLen, lpszSource

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 [edi-2], byte ptr 20h

mov [edi-1], byte ptr 20h

@@:

mov al, [ecx+edx] ; write append string to end of source

mov [edi+edx], al

К-во Просмотров: 425
Бесплатно скачать Курсовая работа: Конкатенація строк Assembler