0 / 0 / 0
Регистрация: 13.04.2018
Сообщений: 3
1
TASM

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

13.04.2018, 13:40. Показов 1810. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите, пожалуйста, с ассемблером проблемы, не могу никак понять, как все работает. С высоким уровнем более менее все понятно, а тут гг, помогите, буду очень признателен, заранее спасибо большое.

Составить внешнюю подпрограмму. Подпрограмму оформить в отдельном модуле. Для проведения отладки подпрограммы необходимо так же составить две основные программы: на языке ассемблера и на языке высокого уровня, вызывающие составленную подпрограмму как внешнюю. Тип вызова выбирается самостоятельно.
function TrimTrail(S: string): string. Возвращает строку, в конце которой удалены все цифры 0 и символы с кодом меньше пробела.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.04.2018, 13:40
Ответы с готовыми решениями:

Перевод строки в число типа longint (раздельная компиляция Turbo Pascal и TASM)
Составить внешнюю подпрограмму для варианта задания, соответствующего порядковому номеру студента в...

Вставка подстроки в строку (раздельная компиляция Turbo Pascal и TASM)
В общем, было вот задание написать код в ассемблере и паскале, который будет выполнять следующую...

Дано целое число K и текстовый файл. Удалить из каждой строки файла первые K символов (если длина строки меньше K, то удалить из нее все символы)
Помогите Пожалуйста написать программу! Дано целое число K и текстовый файл. Удалить из каждой...

Переставить в начало строки все буквы в порядке их следования, затем цифры, и в конце – остальные символы
Переставить в начало строки все буквы в порядке их следования, затем цифры, и в конце – остальные...

1
Модератор
Эксперт по электронике
8340 / 4234 / 1605
Регистрация: 01.02.2015
Сообщений: 13,185
Записей в блоге: 5
13.04.2018, 19:47 2
Тестовый код на ассемблере для вызова TrimTrail выполните самостоятельно.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
program test;
 
uses
  crt;
 
  function TrimTrail(S: string): string; far; external;
  {$L Trim.obj}
 
var
  S: string;
 
begin
  clrscr;
  S := '123400000'#1#5;
  writeln(S);
  writeln(TrimTrail(S));
  writeln(S);
end.
Trim.asm
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
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
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.04.2018, 19:47
Помогаю со студенческими работами здесь

Удаление цифры 0, в конце строки TASM
Задание:написать программу, которая возвращает строку, в конце которой удалены все цифры 0 и...

Удалить из строки все цифры и повторить дважды каждый символ, кроме пробела, не являющийся цифрой
Строка содержит произвольные символы таблицы ASCII. Удалить из строки все цифры и повторить дважды...

Удалить из строки все цифры и повторить дважды каждый символ, кроме пробела, не являющийся цифрой
Строка содержит произвольные символы таблицы ASCII. Удалить из строки все цифры и повторить дважды...

Удалить из строки все символы-цифры
Удалить из строки все символы-цифры.

Удалить из строки все символы-цифры
Удалить из строки все символы-цифры.

Удалить все символы "*", сдвигая конец последовательности на освободившиеся места, а освободившиеся в конце строки символы заменить пробелами
Вот мой код: const n=10; var i,j:integer; m:array of char; begin writeln('Заполните...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru