30.03.2017, 07:53 [+3 UTC]
в нашей команде: 1 871 чел. | участники онлайн: 3 (рекорд: 21)

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

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

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

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

:: правила

:: новости

:: участники

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

:: форум

:: блоги

:: поиск

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

:: наш журнал

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

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

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

:: поддержка

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

Версия системы:
7.41 (25.02.2017)

Общие новости:
23.02.2017, 09:51

Форум:
26.03.2017, 18:27

Последний вопрос:
29.03.2017, 21:31

Последний ответ:
30.03.2017, 04:00

Последняя рассылка:
29.03.2017, 23:15

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

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

Наша кнопка:

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

Отзывы о нас:
13.03.2010, 16:47 »
Матвеев Денис Александрович
Спасибо. Всё очень БЫСТРО, ясно и понятно. Разобрался:) [вопрос № 177215, ответ № 260081]
27.12.2010, 01:03 »
Дмитрий Олегович
И вновь качественный ответ! Большое спасибо! Очень рад что на форуме есть такие люди как вы! [вопрос № 181620, ответ № 265113]
04.02.2011, 11:06 »
Григорий Апельсинов
"БОМБА"! [вопрос № 182095, ответ № 265713]

РАЗДЕЛ • Assembler

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

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

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

Коцюрбенко Алексей aka Жерар
Статус: Мастер-Эксперт
Рейтинг: 668
Лысков Игорь Витальевич
Статус: Старший модератор
Рейтинг: 396
Зенченко Константин Николаевич
Статус: Модератор
Рейтинг: 382

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

Консультация онлайн # 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.13042 сек.

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