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

среда, 25 мая 2011 г.

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

 
Если выпуск не отображается, вы можете прочесть его на сайте Отказаться от рекламы
  
  
Здоровая пища: миф или реальность? Здоровая пища: миф или реальность?
Аэрогриль Flavorwave Turbo Oven - новое слово в кухонном досуге!

  Надоела сутулая спина и обвислый живот? Надоела сутулая спина и обвислый живот?
Тренажер Ab Rocket - великолепный пресс всего за несколько недель!

  Вспомни детство! Вспомни детство!
Аппарат для приготовления сахарной ваты - отличное угощение!

 
  

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

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

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

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

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

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

Номер выпуска:1451
Дата выхода:25.05.2011, 17:00
Администратор рассылки:Лысков Игорь Витальевич (Старший модератор)
Подписчиков / экспертов:216 / 64
Вопросов / ответов:4 / 4

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


Вопрос № 183248: Здравствуйте! Прошу помощи в следующем вопросе: Помогите пожалуйста со следующим заданием. Задание на фото ниже ( Нужен один из 6 представленных вариантов) Вопрос № 183249: Здравствуйте! У меня возникли сложности с таким вопросом: Помогите пожалуйста со следующим заданием. Задание подробно описано в текстовом документе. Нужно выполнить 1 из 12 предложенных вариантов(на ваше усмотрение) Просьба писать комментари...
Вопрос № 183250: Здравствуйте, уважаемые эксперты! Прошу вас ответить на следующий вопрос: требуется составить подпрограмму решения задачи, использующую инструкции обработки цепочек. Составить программу, осуществляющую ввод необходимых данных, вызов подпрограммы и...

Вопрос № 183247:

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

Отправлен: 19.05.2011, 19:08
Вопрос задал: Посетитель - 349343 (Посетитель)
Всего ответов: 1
Страница вопроса »


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

№1
1) размер операндов не совпадает 123h - слово, а не байт
2,3)нормально
4)не правильный индексный регистр и нужно указывать тип операнда
5)нормально
6)не правильно: передача данных пернеменная-переменная
7)не правильно: одноверменное использование сегментных регистров
8)непосредственное указание сегментного адреса
9)не правильно: передача данных пернеменная-переменная
10)нормально

№2
+3/32=0.00011
-9/16=1.0111
-0 = не определено

№3
AX=20H

№4
0110'0010'1010'0000=AX
1001'1101'0101'0000=+
=
1111'1111'1111'0000=AX
устатновлен флаг SF, остальные сброшены.
Удачи!
-----
Итерация от человека. Рекурсия — от Бога. — Л. Питер Дойч

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

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


  • Вопрос № 183248:

    Здравствуйте! Прошу помощи в следующем вопросе:
    Помогите пожалуйста со следующим заданием.
    Задание на фото ниже ( Нужен один из 6 представленных вариантов)

    Отправлен: 19.05.2011, 19:15
    Вопрос задал: Посетитель - 349343 (Посетитель)
    Всего ответов: 1
    Страница вопроса »


    Отвечает Лысков Игорь Витальевич (Старший модератор) :
    Здравствуйте, Посетитель - 349343!

    Реализован поиск по правилу 2: быть числами < 7
    Те, которые < 7, переносятся в RES (с удалением из исходного), >=7 остаются в MAS
    После вызова ф-и OBRAB в AX адрес массива RES, в CX - число перенесенных чисел, в BX - число оставленных чисел

    main.asm

    Код :
    extrn OBRAB:near  ;чтобы было доступно из данного модуля  cseg segment para public 'code'  ;сегмент кода assume cs:cseg, ds:dseg, es:dseg  ;свяжем сегментные регистры с указанными сегментами start: mov ax, dseg ;загрузим сегментные регистры DS, ES  mov ds, ax  ; адресом сегмента данных  mov es, ax   call OBRAB  ;вызовем п/п анализа массива   mov ax, 4c00h ;выход в ДОС  int 21h cseg ends  public MAS, MASend  ;чтобы были доступны извне extrn RES:byte  ;чтобы было доступно из данного модуля  dseg segment public 'data' MAS db -6, -1, 7, 'n', 8, -3, 9, 0, 'N', 4 MASend label byte  ;зададим для подсчета длины строки в модуле SORT dseg ends   end start 


    sort.asm

    Код :
    cseg segment para public 'code'  ;сегмент кода assume cs:cseg, ds:dseg, es:dseg  ;свяжем сегментные регистры с указанными сегментами  public OBRAB   ;чтобы была доступна извне OBRAB proc near  ;п/п анализа массива из модуля MAIN  lea si, MAS  ;адрес массива  lea cx, MASend ;адрес конца  sub cx, si  ;длина массива  lea di, RES  ;адрес, куда переместим элементы  xor dx, dx  ;количество найденных и перемещенных элементов  mov bx, si  ;адрес исходного массива, куда будем писать оставленные элементы obrabLoop:   ;цикл по всем  lodsb   ;очередной элемент массива  cmp al, 7  ;сравниваем с 7  jge obrabSave ;сравнение знаковое!  stosb   ;все, кто меньше 7 (-6,-1,-3,0,4) переносим  inc dx  ;считаем  jmp obrabNext obrabSave:  mov [bx], al ;остальных оставляем  inc bx  ;адрес конца оставленных obrabNext:  loop obrabLoop ;по всем  mov cx, dx  ;вернем количество перенесенных в cx  lea ax, RES  ;адрес массива в ax  sub bx, offset MAS ;в bx - количество оставленных  ret OBRAB endp cseg ends  extrn MAS:byte, MASend:byte ;адреса, определенные в другом модуле public RES   ;адрес, определенный в данном, будет доступен извне  dseg segment public 'data' RES db 10 dup (?) ;результирующий массив dseg ends   end  

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

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

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


  • Вопрос № 183249:

    Здравствуйте! У меня возникли сложности с таким вопросом:
    Помогите пожалуйста со следующим заданием.
    Задание подробно описано в текстовом документе. Нужно выполнить 1 из 12 предложенных вариантов(на ваше усмотрение)
    Просьба писать комментарии к каждой операции.

    Задание

    Отправлен: 19.05.2011, 19:24
    Вопрос задал: Посетитель - 349343 (Посетитель)
    Всего ответов: 1
    Страница вопроса »


    Отвечает Лысков Игорь Витальевич (Старший модератор) :
    Здравствуйте, Посетитель - 349343!
    Вот и программа
    Реализовал вариант 1: по таймеру (прерыванию 1сh) выводится сообщение
    Чтобы не было слишком часто, сделал, чтобы выводилось раз в 2 секунды
    Выходит из программы по нажатию на любую клавишу

    Код :
      .model small  assume cs:code, ds:data, ss:stack  stack segment para public 'stack'  dw 1024 dup (?) stack ends  MAX_COUNT equ 36 ;прерывание будет рисовать сообщение каждые MAX_COUNT/18 секунды  data segment para public 'data' count dw MAX_COUNT sPress db 0dh,0ah,'Press any key for exit...$' string db 0dh, 0ah, 'Hi from interrupt!',0 Off_1c dw ?  ;указатель на старый обработчик вектора 1ch Seg_1c dw ? data ends  code segment para public 'code' start:  jmp Init  ;на инициализацию new_1c:    ;подпрограмма отработки 1ch  push ds  ;сохраним использованные регистры  push ax  push si  mov ax, data ;ds=data  mov ds, ax  dec count  ;уменьшваем счетчик  jnz call_old_1c ;если не 0, то ничего не делаем  mov count, MAX_COUNT;загрузим заново  lea si, string ;адрес строки  mov ah, 0eh  ;ф-я вывода телетайпом str_loop:   ;выводим строку  lodsb   ;читаем символ  cmp al, 0  ;проверим на конец  je call_old_1c  int 10h  ;выводим на экран  jmp str_loop call_old_1c:  pushf   ;вызовем старый обработчик, сначала надо pushf, т.к. выход по iret!  call dword ptr Off_1c;адрес переменной в сегменте данных  pop si  pop ax  pop ds  ;восстановим регистры  iret   ;возврат из прерывания  Init:    ;инициализация  mov ax, data  mov ds, ax  ;ds = data   mov ax, 351ch  int 21h  ;узнаем вектор 1ch в es:bx   mov Off_1c, bx ;сохраним старый адрес в сегменте данных  mov Seg_1c, es   push ds  lea dx, new_1c ;установим новый адрес  push cs  ;обработчика прерывания 1ch  pop ds  ;ds:dx  mov ax, 251ch  int 21h  pop ds   lea dx, sPress ;выведем приглашение нажать на любую клавишу  mov ah, 9  int 21h   mov ah, 0  ;ждем  int 16h   cli   ;воcстановим старый обработчик вектора 1ch  push ds  ;ds  lds dx, dword ptr Off_1c ;ds:dx - адрес старого вектора  mov ax, 251ch  int 21h  ;восстановим!  pop ds   ;ds = data  sti   mov ax, 4c00h  int 21h  ;выход в ДОС  code ends   end start 

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

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

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


  • Вопрос № 183250:

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

    Отправлен: 19.05.2011, 19:59
    Вопрос задал: Дмитрий (Посетитель)
    Всего ответов: 1
    Страница вопроса »


    Отвечает Лысков Игорь Витальевич (Старший модератор) :
    Здравствуйте, Дмитрий!
    Вот Вам программа. Думаю, разберетесь...
    Если что непонятно, обращайтесь в мини-форум

    Код :
      .model small, C ;параметры обрабатываются, как в С  .data ;буфер для приема основной строки по ф-и 0ah buf1 db 80 cnt1 db 0 str1 db 80 dup (?)  ;буфер для приема удаляемой подстроки по ф-и 0ah buf2 db 80 cnt2 db 0 str2 db 80 dup (?)  sStr db 'Enter main string: ',0 sSubStr db 0dh, 0ah, 'Enter substring: ',0 sRes db 0dh, 0ah, 'Result: ',0 sAny db 0dh, 0ah, 'Press any key',0  .code  .186  ;чтобы было возможно push <число> start:  mov ax, @DATA  mov ds, ax  mov es, ax  ;введем основную строку  call GetStr, offset buf1, offset sStr ;введем подстроку  call GetStr, offset buf2, offset sSubStr ;удалим подстоку  call DelSubStr, offset str1, offset str2 ;выведем результат  call Print, offset sRes  call Print, offset str1  ;ждем нажатия на любую клавишу  call Print, offset sAny  mov ah, 0  int 16h  ;выход в ДОС  mov ax, 4c00h  int 21h  ;вывод строки ASCIIZ Print proc string:word  mov si, string PrintLoop:  lodsb  cmp al, 0  ;конец строки?  je PrintRet  int 29h  ;вывод байта из al  jmp PrintLoop PrintRet:  ret Print endp  ;ввод строки GetStr proc sBuf:word, sTitle:word  call Print, sTitle ;вывод приглашения   mov dx, sBuf ;ввод строки  mov si, dx  ;сохраним адрес структуры  mov ah, 0ah  int 21h   xor bx, bx  ;заменим последний байт 0dh на 0  mov bl, byte ptr [si+1] ;длина строки  mov byte ptr [bx+si+2], 0 ;меняем  ret GetStr endp  strlen proc pstr:word ;длина строки ASCIIZ  push di  mov di, pstr  mov cx, 0ffffh ;побольше    mov al, 0  repne scasb  ;ищем завершающий 0  mov ax, di  ;di показывает на байт за 0   sub ax, pStr ;длина строки + 1  dec ax  ;0 не учитываем  pop di  ret strlen endp  ;поиск подстроки и если найдена, то удаление ;s1 - основная строка ;s2 - подстрока DelSubStr proc s1:word, s2:word  call strlen, s2 ;ищем длину под строки  mov bx, ax  ;сохраним  call strlen, s1 ;длина основной  mov dx, ax  ;сохраним  mov cx, ax  ;посчитаем варианты вхождения  sub cx, bx  ;равно разнице длин  jl DSS_ret  ;если подстрока длиннее, то на выход  mov di, s1  ;адрес основной  mov si, s2  ;адрес подстроки DSS_Search:   ;цикл поиска  push cx  ;сохраним ренистры  push si  push di  mov cx, bx  ;длина подстроки  repe cmpsb  ;сравниваем, пока равно  pop di  ;восстановим  pop si  pop cx  je DSS_found ;если равно, то на удаление  inc di  ;увеличиваем начало поиска в основной строке  jcxz DSS_ret  ;все ли варианты вхождения прошли  dec cx  jmp DSS_Search ;на повтор DSS_found:   ;нашли подстроку!  lea si, [bx+di] ;адрес начала хвоста, который надо переписать      ; на место найденной подстроки  mov cx, dx  ;длина основной строки  sub cx, si  ;cx = cx - (si - s1)  add cx, s1  ;cx - длина хвоста  inc cx  ;вместе с 0  rep movsb  ;копируем DSS_ret:  ret DelSubStr endp   end start 

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

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

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


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

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

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

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

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

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

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


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

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

    Все выпуски рассылки
     
     
      
    Все дело в размере! Все дело в размере!
    Easy Curves - первый тренажер для женской груди!

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

      Скачай журнал "Ногтевой сервис" Скачай журнал "Ногтевой сервис"
    20 пошаговых мастер-классов. 100 идей для дизайна.

     
      

    Subscribe рекомендует
     
    Компьютеры и интернет  →   рассылки   и   группы
      
    Отношения между мужчиной и женщиной
    Группа об отношениях между мужчиной и женщиной. Для того, чтобы лучше понять мужчину, нужно узнать его психологию, знать о чём он говорит и что на самом деле имеет ввиду.
    Темы: 2261   Участники: 4897
      Лента Истории Мира
    Большинство событий в мире оставляет неизгладимый отпечаток в истории человечества. Данная группа создана на базе сайта www.vokurat.ru - Лента Истории М...
    Темы: 65   Участники: 223
      Семейное право и права детей в России
    Получение и обмен информацией, свободное консультирование по темам семейного права, жилищного права супругов, наследственного права, прав детей и всех аспектов правового регулирования семейных отношений и социальной политики
    Темы: 18   Участники: 287
     
     
     
    Подписан адрес: admin10383.deep@blogger.com
    Код этой рассылки: comp.prog.assembler
    Архив рассылки
    Отписаться:  На сайте  Почтой
    Поддержка подписчиков
    Убрать рекламу
    Другие рассылки этой тематики
    Другие рассылки этого автора
     
    Рассылка производится: Subscribe.Ru / ЗАО «Интернет-Проекты» / О компании / Политика конфиденциальности

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

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