WMmail.ru - сервис почтовых рассылок

пятница, 7 октября 2011 г.

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

 
Если выпуск не отображается, вы можете прочесть его на сайте Отказаться от рекламы
  
  
Большой выбор палаток, спальников, мебели и посуды для кемпинга
  
  
  

  Мои подписки      Мои группы      Мои новости     
        Автор 
Калашников О.А.
      
  
Компьютеры и интернет   →   Софт   →   Программирование   →   RFpro.ru: Ассемблер? Это просто! Учимся программировать
  
RFpro.ru: Ассемблер? Это просто! Учимся программировать
 
 

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

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

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

Коцюрбенко Алексей aka Жерар
Статус: Профессор
Рейтинг: 2758
• повысить рейтинг »
Boriss
Статус: Академик
Рейтинг: 2624
• повысить рейтинг »
Абаянцев Юрий Леонидович aka Ayl
Статус: Профессионал
Рейтинг: 2150
• повысить рейтинг »

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

Номер выпуска:1479
Дата выхода:07.10.2011, 21:30
Администратор рассылки:Лысков Игорь Витальевич (Старший модератор)
Подписчиков / экспертов:198 / 61
Вопросов / ответов:2 / 2

Консультация # 184129: Здравствуйте! У меня возникли сложности с таким вопросом: Необходимо написать программу которая будет заменять в конце слов 2 последние буквы на строчные. Кое-что у меня получается а кое-что нет) помогите пожалуйста. вот исходник. Программа написана на TASM.)

Код :
Консультация # 184130: Уважаемые эксперты! Помогите. Необходимо,используя TASM, модель памяти tiny , написать программу выполняющая следующие действие: Заменить в исходном файле предлоги "от" предлогами "до" и наоборот, последовательно заменяя частицы "не" союзами "но" и наоборот. переменные двойное слово (dw). ...

Консультация # 184129:

Здравствуйте! У меня возникли сложности с таким вопросом:
Необходимо написать программу которая будет заменять в конце слов 2 последние буквы на строчные.
Кое-что у меня получается а кое-что нет)
помогите пожалуйста.
вот исходник.
Программа написана на TASM.)

Код :
 data segment      handle dw ?       path db 'primer.txt' cx_ db ?          dx_ db ?          i dw 0 oError db "Cant open file for read",0dh,0ah sError db "Cant to read of the end file ",0dh,0ah wError db "Cant to write to file",0dh,0ah rError db "Cant Read file",0dh,0ah text db 0         text_size = $ - offset text buf db 0        data ends         sseg segment stack        db 200 dup(?) sseg ends             code segment           assume cs:code, ds:data, ss:sseg start:                 mov ax,data    mov ds,ax     ;открываем файл для чтения и записи  mov ah,3dh     mov al,2       lea dx,path    int 21h         jc PrevError  mov handle,ax  ;читаем файл           read:                 inc i         mov ah,3fh    mov bx,handle  lea dx,buf    mov cx,1      int 21h       jc PrevRError  cmp buf,' '   je read       cmp buf,13    je ToBack  ; переходим если конец, иначе читаем дальше   jmp read     PrevError:         jmp OpenError PrevRError:         jmp ReadError ToBack:                mov ah,42h  mov al,0  xor dx,dx  xor cx,cx  int 21h  jc ReadError  sub i,4  xor si,si wRead:  inc si  mov ah,3fh  mov bx,handle  mov cx,1  lea dx,buf  int 21h  jc ReadError  cmp si,i  jg mLit  jmp wRead mLit:        mov ah,3fh     mov bx,handle     mov cx,1     lea dx,buf     int 21h     jc ReadError  cmp buf,41h  jb mLitN      cmp buf,5Ah  ja mLit  cmp buf,13h  je close  mLitN:             cmp buf,5Ah  ja mLit    add buf,20h  mov ah,40h  mov bx,handle  lea dx,buf  mov cx,1  int 21h  jc WriteError  jmp mLit ReadError:  lea dx,rError  mov ah,9  int 21h  jmp close OpenError:  lea dx,oError  mov ah,9  int 21h  mov ah,0  int 16h  jmp close WriteError:  lea dx,wError  mov ah,9  int 21h  mov ah,0  int 16h  jmp close close:  mov ah,3eh  int 21h exit:  mov ah,0  int 16h  mov ax,4ch  int 21h code ends end start  

Дата отправки: 02.10.2011, 18:49
Вопрос задал: Посетитель - 382089 (Посетитель)
Всего ответов: 1
Страница онлайн-консультации »


Консультирует Лысков Игорь Витальевич (Старший модератор):

Здравствуйте, Посетитель - 382089!
Посмотрите, как я сделал.
Предполагается, что файл не больше 32к, иначе обработается только первые 32к
Особо не комментировал, думаю, разберетесь...

Код :
data segment      path db 'primer.txt',0 oError db "Open file error",0dh,0ah,'$' wError db "Write file error",0dh,0ah,'$' rError db "Read file error",0dh,0ah,'$' zError db "File lenght is 0",0dh,0ah,'$' sOk db "Ok",0dh,0ah,'$' sSep db ",.:;!?()" lenSep equ $-sSep buf db 8000h dup (?)        data ends          sseg segment stack  dw 200 dup (?) sseg ends              code segment           assume cs:code, ds:data, ss:sseg start:                 mov ax, data    mov ds, ax      ;открываем файл для чтения и записи  mov ax, 3d02h     lea dx, path    int 21h  jc OpenError  mov bx, ax    mov cx, 8000h  lea dx, buf  mov si, dx  mov ah, 3fh  int 21h  jc ReadError   mov cx, ax   jcxz ZeroError ;длина файла 0   push cx  xor dx, dx main:  lodsb  ;Проверим на разделитель  cmp al, ' '  jbe SepFound  push cx  lea di, sSep  mov cx, lenSep  repne scasb  pop cx   jz SepFound ;разделитель   inc dx  ;не разделитель считаем  jmp next  SepFound:  call ChangeWord ;меняем слово (для первого разделителя за словом)  next:   loop main     ;учтем последнее слово  inc si  ;для единообразия  call ChangeWord    xor cx, cx  ;указатель файла в начало  xor dx, dx  mov ax, 4200h  int 21h   pop cx  ;длина файла  lea dx, buf  mov ah, 40h  int 21h   lea dx, sOk Print:  mov ah, 9  int 21h   mov ah, 3eh  int 21h WaitKey:  mov ah, 0  int 16h   mov ax, 4c00h  int 21h  ReadError:  lea dx,rError  jmp Print WriteError:  lea dx,wError  jmp Print ZeroError:  lea dx,zError  jmp Print OpenError:  lea dx,oError  mov ah,9  int 21h  jmp WaitKey  ChangeWord proc  test dx, dx  jz CW_ret  cmp byte ptr [si-2], 'A'  jb CW_NextLetter  cmp byte ptr [si-2], 'Z'  ja CW_NextLetter  add byte ptr [si-2], 20h CW_NextLetter:  dec dx  jz CW_ret  cmp byte ptr [si-3], 'A'  jb CW_ret  cmp byte ptr [si-3], 'Z'  ja CW_ret  add byte ptr [si-3], 20h CW_ret:  xor dx, dx  ret ChangeWord endp  code ends  end start 

Консультировал: Лысков Игорь Витальевич (Старший модератор)
Дата отправки: 03.10.2011, 17:56
Рейтинг ответа:

НЕ одобряю 0 одобряю!

Консультация # 184130:

Уважаемые эксперты! Помогите.
Необходимо,используя TASM, модель памяти tiny , написать программу выполняющая следующие действие:
Заменить в исходном файле предлоги "от" предлогами "до" и наоборот, последовательно заменяя частицы "не" союзами "но" и наоборот.
переменные двойное слово (dw).

Дата отправки: 02.10.2011, 19:37
Вопрос задал: Посетитель - 382086 (Посетитель)
Всего ответов: 1
Страница онлайн-консультации »


Консультирует Лысков Игорь Витальевич (Старший модератор):

Здравствуйте, Посетитель - 382086!
Вот такая программа:

Код :
;Заменить в исходном файле предлоги "от" предлогами "до" и наоборот,  ;последовательно заменяя частицы "не" союзами "но" и наоборот.  data segment      path db 'primer.txt',0 oError db "Open file error",0dh,0ah,'$' wError db "Write file error",0dh,0ah,'$' rError db "Read file error",0dh,0ah,'$' zError db "File lenght is 0",0dh,0ah,'$' sOk db "Ok",0dh,0ah,'$' sSep db ",.:;!?()"  ;разделители слов, <= 20h проверяются сравнением lSep equ $-sSep   ;количество sWords dw 'то','од','ен','он' ;требуемые слова, в "перевернутом" виде! lWords equ ($-sWords)/2  ;количество sNew dw 'од','то','он','ен' ;на эти меняем buf db 8000h dup (?)        data ends          sseg segment stack  dw 200 dup (?) sseg ends              code segment           assume cs:code, ds:data, ss:sseg start:                 mov ax, data    mov ds, ax      mov es, ax      ;открываем файл для чтения и записи  mov ax, 3d02h     lea dx, path    int 21h  jc OpenError  mov bx, ax   ;читаем весь файл  mov cx, 8000h  lea dx, buf  mov si, dx  mov ah, 3fh  int 21h  jc ReadError   mov cx, ax  ;длина файла  jcxz ZeroError ;длина файла 0?   push cx  ;сохраним для записи  xor dx, dx  ;счнтчик букв слов main:  lodsb  ;Проверим на разделитель  cmp al, ' '  jbe SepFound ;все, которые ' ',9,0dh,0ah,...  push cx  lea di, sSep ;точка, запятая и другие  mov cx, lSep  repne scasb  pop cx   jz SepFound ;разделитель?   inc dx  ;не разделитель - считаем  jmp next  SepFound:  call ChangeWord ;проверяем и, если надо, меняем слово  next:   loop main     ;учтем последнее слово  inc si  ;для единообразия  call ChangeWord    xor cx, cx  ;указатель файла в начало  xor dx, dx  mov ax, 4200h  int 21h   pop cx  ;длина файла  lea dx, buf  mov ah, 40h  int 21h   lea dx, sOk Print:  mov ah, 9  int 21h   mov ah, 3eh  int 21h WaitKey:  mov ah, 0  int 16h   mov ax, 4c00h  int 21h  ReadError:  lea dx,rError  jmp Print WriteError:  lea dx,wError  jmp Print ZeroError:  lea dx,zError  jmp Print OpenError:  lea dx,oError  mov ah,9  int 21h  jmp WaitKey  ChangeWord proc  cmp dx, 2  ;проверяем только слова длины 2  jne CW_ret  push cx  mov ax, [si-3] ;проверяемое слово  lea di, sWords ;поищем среди требуемых  mov cx, lWords  repne scasw  pop cx  jne CW_ret  ;не равно - ничего не делаем  sub di, offset sWords ;смещение от начала массива (на 2 дальше)  mov ax, sNew[di-2] ;на это меняем  mov [si-3], ax ;меняем CW_ret:  xor dx, dx  ;сбрасываем длину слова  ret ChangeWord endp  code ends  end start 

Консультировал: Лысков Игорь Витальевич (Старший модератор)
Дата отправки: 03.10.2011, 19:46
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Оценить выпуск | Задать вопрос экспертам

главная страница  |  стать участником  |  получить консультацию
техническая поддержка  |  восстановить логин/пароль

Дорогой читатель!
Команда портала RFPRO.RU благодарит Вас за то, что Вы пользуетесь нашими услугами. Вы только что прочли очередной выпуск рассылки. Мы старались. Пожалуйста, оцените его. Если совет помог Вам, если Вам понравился ответ, Вы можете поблагодарить автора - для этого в каждом ответе есть специальные ссылки. Вы можете оставить отзыв о работе портале. Нам очень важно знать Ваше мнение. Вы можете поближе познакомиться с жизнью портала, посетив наш форум, почитав журнал, который издают наши эксперты. Если у Вас есть желание помочь людям, поделиться своими знаниями, Вы можете зарегистрироваться экспертом. Заходите - у нас интересно!
МЫ РАБОТАЕМ ДЛЯ ВАС!


 
 
Комментировать выпуск
     В избранное

Прошлые выпуски
RFpro.ru: Ассемблер? Это просто! Учимся программировать    06 октября 2011, 21:03
RFpro.ru: Ассемблер? Это просто! Учимся программировать    05 октября 2011, 20:33
RFpro.ru: Ассемблер? Это просто! Учимся программировать    26 сентября 2011, 08:33

Все выпуски рассылки

8 октября 2011 отмечают:
День командира надводного, подводного и&nbsp;воздушного корабля
Международный Фестиваль Фейерверков в&nbsp;Сеуле
День юриста Украины
Праздник переводчика&nbsp;&mdash; Таркманчац
День танкиста Армении
Преставление преподобного Сергия, игумена Радонежского, всея России чудотворца (1392)
Международный кинофестиваль &laquo;Золотой Апельсин&raquo; в&nbsp;Анталье

Именины: Герман, Евгений, Максим, Николай, Павел, Прохор, Роман, Сергей
 
 

Subscribe рекомендует
 
Компьютеры и интернет  →   рассылки   и   группы
  
Как быстро и легко создать шикарный сайт.
Публикуемые видеоурокиуроки и полезные материалы по созданию сайтов, по дизайну и о программировании, несомненно будут полезны начинающим сайтостроителям!
Подписчиков: 3
  Дневник странника
Регулярно обновляемые новости блога "Паломник": самые важные мировые события прошедшего дня, а также новости от редактора блога и сайта "Паломник".
Подписчиков: 126
  Фильмы, игры и программы от Бендера
Ежедневный блог новинок, фильмов, игр и других новостей интересной информации в сети интернет
Подписчиков: 131
 
 
 
Подписан адрес: admin10383.deep@blogger.com
Код этой рассылки: comp.prog.assembler
Архив рассылки
Отписаться:  На сайте  Почтой
Поддержка подписчиков
Убрать рекламу
Другие рассылки этой тематики
Другие рассылки этого автора
 
Рассылка производится: Subscribe.Ru / ЗАО «Интернет-Проекты» / О компании / Политика конфиденциальности

Комментариев нет:

Отправить комментарий