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

понедельник, 30 мая 2011 г.

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

 
Если выпуск не отображается, вы можете прочесть его на сайте Отказаться от рекламы
  
  
Эксклюзивные бренды по клубным ценам!
  
  
Все дело в размере! Все дело в размере!
Easy Curves - первый тренажер для женской груди!

  Худеть не напрягаясь - легко! Худеть не напрягаясь - легко!
Теряйте лишние килограммы с поясом для похудения Vibra Tone.

  Здоровая пища: миф или реальность? Здоровая пища: миф или реальность?
Аэрогриль Flavorwave Turbo Oven - новое слово в кухонном досуге!

 
  

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

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

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

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

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

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

Номер выпуска:1455
Дата выхода:31.05.2011, 03:30
Администратор рассылки:Лысков Игорь Витальевич (Старший модератор)
Подписчиков / экспертов:215 / 64
Вопросов / ответов:4 / 4

Вопрос № 183340: Здравствуйте! Прошу помощи в следующем вопросе: создать и переименовать файл. С созданием файла справился, а вот с переименованием не получается. Условия: DOS, TASM, COM-программа. В чем ошибся? Текст программы прилагаю.

Вопрос № 183347: Здравствуйте, уважаемые эксперты! Прошу вас ответить на следующий вопрос: помогите ,пожалуйста , написать программу, считающую количество запятых в файле. Имя файла ввести с клавиатуры или передать как параметр командной строки. Чтение из файла орга...
Вопрос № 183348: Здравствуйте, уважаемые эксперты! Прошу вас ответить на следующий вопрос: требуется написать 3 варианта заданной подпрограммы ( на встроенном ассемблере, с использованием модели памяти PASCAL (листинг) и без использования директивы MODEL (листинг...
Вопрос № 183357: Уважаемые эксперты! У меня приближается сессия . Из-за своего курсовика по тоэ, который я решил делать сам, у меня появились проблемы с другими предметами, в том числе предмет "Органи...

Вопрос № 183340:

Здравствуйте! Прошу помощи в следующем вопросе: создать и переименовать файл.

С созданием файла справился, а вот с переименованием не получается. Условия: DOS, TASM, COM-программа. В чем ошибся?
Текст программы прилагаю.

Код :
CSEG segment ASSUME CS:CSEG,DS:CSEG,ES:CSEG,SS:CSEG org 100h  begin:  mov ah,3Ch    ;функция создания файла  mov cx,00000000b  ;указываем аттрибуты создаваемого файла: обычный файл  mov dx,offset filename  int 21h  ;jc Error_create   ;если файл не создан - сразу завершение программы  ;call Ok_msg_create  ;mov handle,ax    xor ax,ax    ;пауза  int 16h    mov ah,56h  mov dx,offset filename  mov ax,offset new_filename  mov di,ax  int 21h  jc Error_rename  call Ok_msg_rename  jmp Quit_prog   Error_rename:  mov ah,09h  mov dx,offset msg_error_rename  int 21h  jmp Quit_prog  Ok_msg_rename proc  mov ah,09h  mov dx,offset msg_ok_rename  int 21h  ret Ok_msg_rename endp  Quit_prog:  ;mov al,32  mov ah,04ch  int 21h  ;int 20h  filename db '_file.txt',0 new_filename db '_file1.txt',0 handle dw 0 msg_error_rename db 'Error! File not renamed.',0ah,0dh,'$' msg_error_create db 'Error! File not created.',0ah,0dh,'$' msg_ok_create db 'File created.',0ah,0dh,'$' msg_ok_rename db 'File renamed.',0ah,0dh,'$'   CSEG ends end begin

Отправлен: 25.05.2011, 10:32
Вопрос задал: Ханинёв Пётр Валерьевич (1-й класс)
Всего ответов: 1
Страница вопроса »


Отвечает Павел Юрьевич (10-й класс) :
Здравствуйте, Ханинёв Пётр Валерьевич!

В коде переименования файла Вы затираете AH. Вот так должно быть:

Код :
mov dx,offset filename mov ax,offset new_filename mov di,ax mov ah,56h int 21h


Хоть автор ответа и дал ответ на непосредственный вопрос,
но он не указал на существенную ошибку в программе, а именно,
файл после создания/открытия необходимо закрывать.
Привожу фрагмент кода, предоставленный в мини-форуме экспертом
Зенченко Константином Николаевичем

Код :
mov ah,3Ch;функция создания файла  xor cx,cx;указываем аттрибуты создаваемого файла: обычный файл  mov dx,offset filename  int 21h  mov handle,ax mov dx,offset msg_error_create   jc Error_create;если файл не создан - сразу завершение программы  mov dx,offset msg_ok_create Error_Create: call msg  mov bx,handle mov ah,3eh int 21h  xor ax,ax;пауза  int 16h 

Редактирование ответа
-----
• Отредактировал: Лысков Игорь Витальевич (Старший модератор)
• Дата редактирования: 25.05.2011, 12:10 (время московское)

Ответ отправил: Павел Юрьевич (10-й класс)
Ответ отправлен: 25.05.2011, 10:40
Номер ответа: 267361
Россия, Челябинск
ICQ # 197232777

Оценка ответа: 4

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


  • Вопрос № 183347:

    Здравствуйте, уважаемые эксперты! Прошу вас ответить на следующий вопрос: помогите ,пожалуйста , написать программу, считающую количество запятых в файле. Имя файла ввести с клавиатуры или передать как параметр командной строки. Чтение из файла организовать блоком. Размер блока- по усмотрению. Желательны подробные комментарии. АСС-TASM. Заранее спасибо, с уважением Canijke.

    Отправлен: 25.05.2011, 14:22
    Вопрос задал: Canijke
    Всего ответов: 1
    Страница вопроса »


    Отвечает Зенченко Константин Николаевич (Модератор) :
    Здравствуйте, Canijke!

    Смотрите приложение.
    Имя файла можно ввести как в командной строке, так и в самой программе.
    вопросы задавайте в мини-форум.
    Удачи!

    Приложение:

    -----
    Итерация от человека. Рекурсия — от Бога. — Л. Питер Дойч

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

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


  • Вопрос № 183348:

    Здравствуйте, уважаемые эксперты! Прошу вас ответить на следующий вопрос: требуется написать 3 варианта заданной подпрограммы ( на встроенном ассемблере, с использованием модели памяти PASCAL
    (листинг) и без использования директивы MODEL (листинг)). Программу, вызывающую эти подпрограммы с указанием автора и варианта задания (5-ый). Задание- копирование строк. АСС- TASM. Очень рассчитываю на Вашу помощь ...

    Отправлен: 25.05.2011, 14:31
    Вопрос задал: Canijke
    Всего ответов: 1
    Страница вопроса »


    Отвечает Зенченко Константин Николаевич (Модератор) :
    Здравствуйте, Canijke!

    Программа на паскале(ТР7):
    Код :
    var   a,b,c,d:string; procedure CopyStrA(var x,y:string);external; {$L q183348a} procedure CopyStrB(var x,y:string);external; {$L q183348b} procedure CopyStrC(var x,y:string);   begin     asm       cld       lds  si,dword ptr x       les  di,dword ptr y       lodsb       stosb       mov  cl,al       xor  ch,ch       rep  movsb     end   end; begin   Writeln('Canijke');   repeat     write('Enter string:');     readln(d)   until length(d)>0;   CopyStrA(d,a);   writeln('Result A:',a);   CopyStrB(d,b);   Writeln('Result B:',b);   CopyStrC(d,c);   writeln('Result C:',c);   readln; end.


    С директивой MODEL и упрощенным описанием сегментов:
    Код :
    model small,pascal code public CopyStrA proc CopyStrA  push bp  mov bp,sp  cld  mov di,[bp+04]  mov es,[bp+06]  mov si,[bp+08]  mov ds,[bp+10]  lodsb  stosb  mov cl,al  xor ch,ch  rep movsb  pop bp  ret 8 endp end


    Полное описание сегмента:
    Код :
    _TEXT segment word public 'CODE' public CopyStrB assume cs:_TEXT proc CopyStrB  push bp  mov bp,sp  cld  mov di,[bp+04]  mov es,[bp+06]  mov si,[bp+08]  mov ds,[bp+10]  lodsb  stosb  mov cl,al  xor ch,ch  rep movsb  pop bp  ret 8 endp _TEXT ends end


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

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

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


  • Вопрос № 183357:

    Уважаемые эксперты!
    У меня приближается сессия . Из-за своего курсовика по тоэ, который я решил делать сам, у меня появились проблемы с другими предметами, в том числе предмет "Организация ЭВМ" . Поэтому очень прошу вас помочь с программой...
    Задание такое:
    Нужно написать собственное прерывание.
    05h - прерывание, генерируемое при нажатии клавиш Shift+PrintScr;

    действия, реализуемые программой обработки
    прерываний:
    Выдача звукового сигнала(печать символа с кодом 07h);
    Заранее огромное спасибо!

    Отправлен: 26.05.2011, 02:17
    Вопрос задал: Митиоглов Борис (Посетитель)
    Всего ответов: 1
    Страница вопроса »


    Отвечает Лысков Игорь Витальевич (Старший модератор) :
    Здравствуйте, Митиоглов Борис !
    Вот Вам программа, которая устанавливает на время своей работы свой обработчик вектора 5

    Обратите внимание, что если ее просто так запустить под ХР, то программа не будет работать, как надо!!!
    Это связано с тем, что система некоторые комбинации клавиш и просто клавиши, в том числе PrintScreen,
    считает служебными и не желает отдавать их программам.
    Но клавишу PrintScreen можно попросить у системы, если создать PIF-файл для EXE-программы.
    И там, в свойствах, на вкладке "Разное" выключить checkbox "PrtSc".
    Запускать программу надо будет с помощью PIF-файла.

    Код :
      .model small  assume cs:code, ds:data, ss:AStack  AStack segment stack  dw 1024 dup (?) AStack ends  data segment sPress db 0dh,0ah,'Press ESC for exit...$' Off_05 dw ?  ;указатель на старый обработчик вектора 1ch Seg_05 dw ? data ends  code segment main proc  mov ax, data  mov ds, ax  ;ds = data   mov ax, 3505h  int 21h  ;узнаем вектор 05h в es:bx   mov Off_05, bx ;сохраним старый адрес в сегменте данных  mov Seg_05, es   push ds  lea dx, new_05 ;установим новый адрес  push cs  ;обработчика прерывания 05h  pop ds  ;ds:dx  mov ax, 2505h  int 21h  pop ds   lea dx, sPress ;выведем приглашение нажать ESC  mov ah, 9  int 21h  wait_ESC:  mov ah, 0  ;ждем  int 16h  cmp al, 1bh  ;выходим по ESC  jne wait_ESC      ;воcстановим старый обработчик вектора 05h  push ds  ;ds  lds dx, dword ptr Off_05 ;ds:dx - адрес старого вектора  mov ax, 2505h  int 21h  ;восстановим!  pop ds   ;ds = data  sti   mov ax, 4c00h  int 21h  ;выход в ДОС main endp  new_05 proc far  ;подпрограмма отработки 05h  push ax  push dx  mov dl, 7  ;код 7 "пищит" на спикере"  mov ah, 2  int 21h  pop dx  pop ax  ;восстановим регистры  iret   ;возврат из прерывания new_05 endp  code ends   end main

    -----
    Люби своего ближнего, как самого себя

    Ответ отправил: Лысков Игорь Витальевич (Старший модератор)
    Ответ отправлен: 26.05.2011, 10:30
    Номер ответа: 267388
    Украина, Кировоград
    Тел.: +380957525051
    ICQ # 234137952
    Mail.ru-агент: igorlyskov@mail.ru

    Оценка ответа: 5

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


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

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

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

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

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

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

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


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

    Прошлые выпуски
    RFpro.ru: Ассемблер? Это просто! Учимся программировать    30 мая 2011, 03:03
    RFpro.ru: Ассемблер? Это просто! Учимся программировать    29 мая 2011, 02:34
    RFpro.ru: Ассемблер? Это просто! Учимся программировать    26 мая 2011, 20:13

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

    Subscribe рекомендует
     
    Компьютеры и интернет  →   рассылки   и   группы
      
    Игры Алавар
    Новые игры Фабрики игр Алавар
    Подписчиков: 45
      Самые лучшие, интересные и полезные веб-сайты в Интернете
    Ненадоедливая рассылка самых интересных и полезных веб-ресурсов (сайтов) Интернета. Кроме ссылки на сайт Вы получите информацию о нем и краткое описание его возможностей. Также здесь Вы узнаете о малоизвестных, но интересных, ярких и полезных сайтах.
    Подписчиков: 546
      Железный хлам
    Старое железо и компьютерный хлам, ставшие частью нашей истории.
    Подписчиков: 159
     
     
     
    Подписан адрес: admin10383.deep@blogger.com
    Код этой рассылки: comp.prog.assembler
    Архив рассылки
    Отписаться:  На сайте  Почтой
    Поддержка подписчиков
    Убрать рекламу
    Другие рассылки этой тематики
    Другие рассылки этого автора
     
    Рассылка производится: Subscribe.Ru / ЗАО «Интернет-Проекты» / О компании / Политика конфиденциальности

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

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