Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.05.2015, 16:17   #1
Holocaust
 
Регистрация: 04.05.2015
Сообщений: 9
По умолчанию Нужна помощь , либо казнят в вузе.

Друзья-товарищи нужна помощь !
Нужно составить программу формирования звуковых сигналов в соответствии с диаграммой :
Pause Ввести с клавиатуры , число ступенек : 100 . Прерывание по ESC.
Holocaust вне форума Ответить с цитированием
Старый 04.05.2015, 16:30   #2
Streletz
Старожил
 
Регистрация: 03.01.2014
Сообщений: 2,870
По умолчанию

Цитата:
Сообщение от Holocaust Посмотреть сообщение
Нужна помощь , либо казнят в вузе.
Самостоятельные попытки были или, как обычно, "сделайте всё за меня"?
Streletz вне форума Ответить с цитированием
Старый 04.05.2015, 16:37   #3
Holocaust
 
Регистрация: 04.05.2015
Сообщений: 9
По умолчанию

Моё знание языка assemblera , не дает мне возможностей написать эту программу. Так что попыток не было .
Holocaust вне форума Ответить с цитированием
Старый 04.05.2015, 16:52   #4
Streletz
Старожил
 
Регистрация: 03.01.2014
Сообщений: 2,870
По умолчанию

Цитата:
Сообщение от Holocaust Посмотреть сообщение
Так что попыток не было .
Тогда Вам во фриланс. Делать за Вас такую задачу с нуля просто так вряд ли кто-то будет. Без обид.
Streletz вне форума Ответить с цитированием
Старый 04.05.2015, 20:16   #5
R71MT
Участник клуба
 
Аватар для R71MT
 
Регистрация: 16.06.2011
Сообщений: 1,428
По умолчанию

Цитата:
Holocaust
Ввести с клавиатуры, число ступенек: 100. Прерывание по ESC.
Круто!!! Это в каком вузе дают такие задачки?! Видимо тема "Позиционирование курсора" ?!
Тогда используй функцию 02h, прерывания INT-10h:
Код:
   Вход:  AH = 02h
          BH = страница
          DH = строка 
          DL = столбец
В начале, ставиш видеорежим 80x25. Это позволит ввести тебе не 100, а 80 ступенек.
Если нужно именно 100, то меняй видеорежим...

Рисовать ступеньки будеш клавишами "подчёркивание" и "вертикальная черта".
Дальше, устанавливаеш курсор в левый/нижний угол экрана, и с каждым разом меняеш в цикле значение регистров DH и DL (декремент).

Если DH = 12 (половина экрана), то меняеш декремент на инкремент.
Если DL = 40 (половина экрана), то не трогаеш DH 5 раз (текст 'Pause')
..потом опять увеличиваеш строку.

Одним словом - задание никак не для вуза! Вот тебе код на FASM:
Код:
use16
org 100h
jmp start

text  db  ' =================================== ',13,10
      db  ' Programm "BLEEP" /Holocaust(c)/ $'

start:
   mov  al,3           ; текстовый режим дисплея (80х25)
   int  10h

   mov  dx,text        ; сообщение для юзера
   call message

   mov  dh,24          ; строка(24)
   mov  dl,0           ; столбец(0)
   call curPos         ; курсор на начальную позицию

upWard:
   call presskey       ; ждём символ с клавиатуры
   cmp  al,27          ; это ESC ?!
   je   quit           ; если да - на выход!

   cmp  dh,12          ; сравниваем со-строкой(12)
   je   downWard       ; если мы в середине экрана - на пора вниз
   dec  dh             ; уменьшаем строку на 1
   inc  dl             ; увеличиваем столбец на 1
   call curPos         ; курсор на позицию
   jmp  upWard         ; ждём очередной символ

downWard:
   call presskey       ; ждём символ с клавиатуры
   cmp  al,27          ; это ESC ?!
   je   quit           ; если да - на выход!

   cmp  dh,24          ; сравниваем со-строкой(24)
   je   tPause         ; если мы в внизу экрана, то печатаем текст "Pause"
   inc  dh             ; увеличиваем строку на 1
   inc  dl             ; увеличиваем столбец на 1
   call curPos         ; курсор на позицию
   jmp  downWard       ; ждём очередной символ

tPause:
   mov  cx,5           ; ограничение в 5 символов
cLoop:
   xor  ax,ax          ; ждём символ
   int  16h
   int  29h            ; печатаем его
   loop cLoop          ; мотаем цикл 5 раз
   add  dl,5           ; пропускаем 5 столбцов
   jmp  upWard         ; прыжок на верх

quit:
   ret                 ; на выход..

;------ необходимые процедуры----------------------------------------------|
curPos:
   mov  ah,02          ; запрос на установку курсора
   int  10h
ret
presskey:
   xor  ax,ax          ; ждём символ..
   int  16h
   int  29h            ; печатаем его
ret
message:
   mov  ah,9           ; функция вывода сообщений
   int  21h
ret
Нашедшего выход - затаптывают первым..
R71MT вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите разработать систему тестирования в любой области и тематике. Желательно либо C++, либо Delphi, либо VBA Olya125 Помощь студентам 2 27.04.2015 15:24
Напишите пожалуйста программу ( либо на си, либо на си++ либо на паскале) . Заранее спасибо. London1 Помощь студентам 1 03.04.2014 10:34
Очень нужна помощь c матрицами, макросами в Excel. Заранее благодарен(поверьте, очень-очень нужна помощь) Farridjan Помощь студентам 1 03.07.2009 12:24
Очень нужна помощь с написанием программы... срочно(буду благодарен за помощь) 5Paladin5 Помощь студентам 3 02.07.2009 09:12
Как запустить какую - либо программу Windows с помощь кнопки на форме? РЫЖЫЙ :( Общие вопросы Delphi 1 04.11.2007 13:55