В конце строки удалить все цифры 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
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д