В конце строки удалить все цифры 0 и символы с кодом меньше пробела (раздельная компиляция Turbo Pascal и TASM) - Assembler/TASM

Узнай цену своей работы

Формулировка задачи:

Помогите, пожалуйста, с ассемблером проблемы, не могу никак понять, как все работает. С высоким уровнем более менее все понятно, а тут гг, помогите, буду очень признателен, заранее спасибо большое. Составить внешнюю подпрограмму. Подпрограмму оформить в отдельном модуле. Для проведения отладки подпрограммы необходимо так же составить две основные программы: на языке ассемблера и на языке высокого уровня, вызывающие составленную подпрограмму как внешнюю. Тип вызова выбирается самостоятельно. function TrimTrail(S: string): string. Возвращает строку, в конце которой удалены все цифры 0 и символы с кодом меньше пробела.

Решение задачи: «В конце строки удалить все цифры 0 и символы с кодом меньше пробела (раздельная компиляция Turbo Pascal и TASM)»

textual
Листинг программы
code    segment byte public
        assume  cs:code
        public  TrimTrail
 
;function TrimTrail(S: string): string;
;при сопряжении с Turbo Pascal фактически имеет
;два параметра:
;@Result - адрес результирующей строки
;S       - адрес исходной строки
;но параметр @Result - не учитывается в списке при очистке стека
TrimTrail       proc    far
 
        push    bp
        mov     bp,     sp
        push    ds
        lds     si,     [bp+6]  ;адрес строки источника
        les     di,     [bp+10] ;адрес строки результата
        xor     cx,     cx
        or      cl,     [si]
        jz      @@Copy
 
        mov     bx,     cx
        mov     dx,     si
        ;вычисление длины усечённой строки
        add     si,     cx
        std
        @@StrLen:
                lodsb
                cmp     al,     ' '
                jb      @@Next
                cmp     al,     '0'
                jnz     @@Break
        @@Next:
        loop    @@StrLen
@@Break:
@@Copy:
        ;копирование усечённой строки
        mov     al,     cl
        cld
        stosb
        jcxz    @@Exit
        mov     si,     dx
        inc     si
        rep     movsb
@@Exit:
        pop     ds
        pop     bp
        ret     4       ;т.к. @Result не входит в список параметров
TrimTrail       endp
code    ends
        end

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4 из 5
Похожие ответы