Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RFpro.ru: Ассемблер? Это просто! Учимся программировать


Хостинг портала RFpro.ru:
Московский хостер
Профессиональный ХОСТИНГ на базе Linux x64 и Windows x64

РАССЫЛКИ ПОРТАЛА RFPRO.RU

Лучшие эксперты данной рассылки

Boriss
Статус: Академик
Рейтинг: 2670
∙ повысить рейтинг »
Жерар
Статус: Профессор
Рейтинг: 2416
∙ повысить рейтинг »
Абаянцев Юрий Леонидович aka Ayl
Статус: Профессионал
Рейтинг: 2248
∙ повысить рейтинг »

/ КОМПЬЮТЕРЫ И СОФТ / Программирование / Assembler (Ассемблер)

Номер выпуска:1457
Дата выхода:02.06.2011, 17:00
Администратор рассылки:Лысков Игорь Витальевич (Старший модератор)
Подписчиков / экспертов:215 / 63
Вопросов / ответов:1 / 1

Вопрос № 183385: Здравствуйте! Прошу помощи в следующем вопросе: требуется составить программу, которая удаляет пробелы справа. Ассемблер-TASM. EXE. Надеюсь, что Вы мне поможете. ...



Вопрос № 183385:

Здравствуйте! Прошу помощи в следующем вопросе:
требуется составить программу, которая удаляет пробелы справа. Ассемблер-TASM. EXE. Надеюсь, что Вы мне поможете.

Отправлен: 28.05.2011, 16:31
Вопрос задал: Тюрин Сергей Григорьевич (Посетитель)
Всего ответов: 1
Страница вопроса »


Отвечает Зенченко Константин Николаевич (Модератор) :
Здравствуйте, Тюрин Сергей Григорьевич!

Смотрите приложение.
Код :
model small
code
szMax  equ 255
;начало настраиваем сегментыные регистры
begin:  mov ax,@data
  mov ds,ax
;выводим сообщение
  mov ah,9
  lea dx,dbEnter
  int 21h
;вводим строку
  mov ah,0Ah
  lea dx,dbMax
  int 21h
;настраиваем на цикл регистры
  mov cl,dbSize;длина введенной строки
  xor ch,ch;сбросим старщий байт
  lea si,dbStr;начало строки
  mov dx,si;дублируем начало строки
  add si,cx;указатеь в конец строки
  mov byte ptr[si],'$';признак конец строки
 @01:  mov al,[si];читаем символ
  cmp al,' ';пробел?
  jnz @@03;нет переходим
  push si;запоминаем указатель на строку
 @02:  mov al,[si+1];считываем следующий символ
  mov [si],al;записываем вместо пробела
  inc si;переходим на следующий символ
  cmp al,'$'проверяем признак конца строки
  jnz @@02;нет переходим
  pop si;востанавливаем указатель на строку
 @03:  dec si;следующий проверяемый символ
  cmp si,dx;проверяем начало строки
  jae @@01;нет переходим
;выводим сообщение и строку
  mov ah,9
  lea dx,dbResult
  int 21h
  mov ah,9
  lea dx,dbStr
  int 21h
;ждем любую клавишу и выходим
  xor ax,ax
  int 16h
  mov ax,4c00h
  int 21h
data
dbEnter  db 10,13,'Enter string:$'
dbResult db 10,13,'Result:$'
dbMax  db szMax
dbSize  db ?
dbStr  db szMax dup(?)
stack  200h
end  begin

вопросы по программе задавайте минифорум
Удачи!
-----
Итерация от человека. Рекурсия — от Бога. — Л. Питер Дойч

Ответ отправил: Зенченко Константин Николаевич (Модератор)
Ответ отправлен: 01.06.2011, 19:34
Номер ответа: 267525
Украина, Киев
Тел.: +38-097-238-60-03
Адрес: Украина, Киев

Вам помог ответ? Пожалуйста, поблагодарите эксперта за это!
Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 267525 на номер 1151 (Россия) | Еще номера »
  • Отправить WebMoney:


  • Оценить выпуск »
    Нам очень важно Ваше мнение об этом выпуске рассылки!

    Задать вопрос экспертам этой рассылки »

    Скажите "спасибо" эксперту, который помог Вам!

    Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТА
    на короткий номер 1151 (Россия)

    Номер ответа и конкретный текст СМС указан внизу каждого ответа.

    Полный список номеров »

    * Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи. (полный список тарифов)
    ** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
    *** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.



    В избранное