20.02.2017, 21:00 [+3 UTC]
в нашей команде: 1 805 чел. | участники онлайн: 5 (рекорд: 21)

:: РЕГИСТРАЦИЯ

:: консультации

:: задать вопрос

:: все разделы

:: правила

:: новости

:: участники

:: доска почёта

:: форум

:: блоги

:: поиск

:: статистика

:: наш журнал

:: наши встречи

:: наша галерея

:: отзывы о нас

:: поддержка

:: руководство

Версия системы:
7.40 (02.09.2016)

Общие новости:
31.12.2016, 18:43

Форум:
19.02.2017, 05:14

Последний вопрос:
20.02.2017, 19:48

Последний ответ:
20.02.2017, 19:57

Последняя рассылка:
20.02.2017, 10:15

Писем в очереди:
0

Мы в соцсетях:

Наша кнопка:

RFpro.ru - здесь вам помогут!

Отзывы о нас:
16.08.2009, 00:16 »
Людмила
Все современно, в лучшем виде! Загляните во все ветки - есть самые последние новинки. Просто, Вы не проникнулись целью этого сайта - нести знания в массы. Можно задать вопрос на любую тему. Ограничения нет - последует ответ специалиста, даже на сексуальные темы, проверьте рассылки. http://rfpro.ru/issues/10 " Спорт и здоровье", "Любовь, семья", " Анекдоты и истории", " Культура и искусство" и другие... Если имеете в виду оформление, то функциональность, все что над...

РАЗДЕЛ • Assembler

Создание программ на языке Assembler.

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

Лучшие эксперты в этом разделе

Лысков Игорь Витальевич
Статус: Старший модератор
Рейтинг: 796
Зенченко Константин Николаевич
Статус: Модератор
Рейтинг: 381
Evgen aka Chuma
Статус: 4-й класс
Рейтинг: 103

Перейти к консультации №:
 

Консультация онлайн # 189597
Раздел: • Assembler
Автор вопроса: darkdimon (Посетитель)
Отправлена: 20.06.2016, 11:47
Поступило ответов: 1

Уважаемые эксперты! Пожалуйста, ответьте на вопрос:

Программа CompModel Жмакина
Задание: Вывод на дисплей содержимого группы ячеек памяти в числовой форме (адрес и длина группы — параметры подпрограммы)
Используемые ВУ: Дисплей, таймер
Пояснение: Содержимое ячейки распаковывается (с учетом знака), каждая цифра преобразуется в соответствующий ASCII-код и выдается на дисплей. При переходе к выводу содержимого очередной ячейки формируется задержка 10 с

Состояние: Консультация закрыта

Ответ # 273958 от Лысков Игорь Витальевич (Старший модератор)

Здравствуйте, darkdimon!

Код (Assembler) :: выделить код
;зададим параметры программы
RD #92 ;адрес начала массива чисел
WR 90 ;ячейка памяти с адресом начала массива чисел
RD #4 ;количество чисел
WR 91 ;ячейка памяти с количеством
RDI #100123 ;-123
WR 92
RD #125 ;125
WR 93
RD #0 ;0
WR 94
RDI #100010 ;-10
WR 95

;начало самой программы
RD #101 ;команда очистки дисплея
OUT 11 ;в регистр CR
RD #11 ;разрешаем дисплей с автоинкрементом адреса
OUT 11 ;в регистр CR

RD 90 ;адрес массива чисел в регистр R1
WR R1
RD 91 ;количество в R2
WR R2

;основной цикл
M0:RD #250 ;зададим счетчик таймера 1 на порядка 10 сек 
OUT 21 ;в регистр Т1
RDI 1101 ;k=01, автодекремент счета, без прерывания, включение таймера 1
OUT 22 ; в регистр CT1R

;ждем, когда таймер отсчитает время
M1:IN 20 ;ждем флаг в регистре SR
JZ M1 

;останавливаем таймер
RDI 1000 ;выключаем таймер 1
OUT 22 
RD #101 ;сбрасываем флаг отсчета времени в SR
OUT 20 

CALL M ;считываем и выводим очередное число

RDI 32 ;отделим пробелом
OUT 10

JRNZ R2,M0 ;по всем числам массива

HLT ;останов

;считывание и вывод знакового числа
M:RDI 0
WR R5 ;счетчик цифр = 0
RD @R1+ ;очередное число, с автоинкрементом адреса
WR R3 ;сохраним в R3
JNS LOOP ;число положительное?
;для отрицательного выведем минус
RDI 45 ;'-' 
OUT 10
RD R3 ;исходное число
MULI 100001 ;меняем знак на +, умножением на -1
WR R3 ;и сохраним в R3
LOOP: ;вывод положительного числа
;сначала сформируем последовательность цифр числа
;сохраним их в стеке, т.к. они будут использованы в обратном порядке
DIVI 10 ;делим на основание с.с. = 10
WR R4 ;сохраним частное в R4
MULI 10 ;опять умножим на 10, т.о. обнулили младший разряд
SUB R3 ;отняв исходное число, получим очередной разряд, но со знаком -
MULI 100001 ;сделаем его положительным
WR R6 ;сохраним в R6 для PUSH-а
PUSH R6 ;в стек!
RD R5 ;и считаем разряды
ADI 1
WR R5
RD R4 ;частное от деления на 10
JZ PRINT ;=0? если да, то разряды кончились
WR R3 ;иначе сохраним в R3
JMP LOOP ; и на повтор
PRINT: ;осталось вывести на дисплей
POP R6 ;получаем очередную цифру
RD R6 ;в аккумулятор
ADI 48 ;делаем из нее символ
OUT 10 ;и на экран
RD R5 ;уменьшаем счетчик цифр 
SBI 1
JZ RETURN ;цифры кончились?
WR R5 ;нет - продолжаем
JMP PRINT
RETURN:
RET


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

5
благодарю
-----
Дата оценки: 22.06.2016, 18:19

Рейтинг ответа:

+1

[подробно]

Сообщение
модераторам

Отправлять сообщения
модераторам могут
только участники портала.
ВОЙТИ НА ПОРТАЛ »
регистрация »

Мини-форум консультации № 189597

Лысков Игорь Витальевич
Старший модератор

ID: 7438

# 1

= общий = | 21.06.2016, 17:11 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
darkdimon:

Хотелось бы посмотреть, что Вы сами написали...

=====
Каждый выбирает по себе -
Щит и латы, посох и заплаты.
Меру окончательной расплаты
Каждый выбирает для себя.

 

Возможность оставлять сообщения в мини-форумах консультаций доступна только после входа в систему.
Воспользуйтесь кнопкой входа вверху страницы, если Вы зарегистрированы или пройдите простую процедуру регистрации на Портале.

Яндекс Rambler's Top100

главная страница | поддержка | задать вопрос | интересные статьи

Время генерирования страницы: 0.13694 сек.

© 2001-2017, Портал RFPRO.RU, Россия
Авторское право: ООО "Мастер-Эксперт Про"
Калашников О.А.  |  Гладенюк А.Г.
Версия системы: 7.40 от 02.09.2016
Бесплатные консультации онлайн