22.02.2019, 10:20 [+3 UTC]
в нашей команде: 3 402 чел. | участники онлайн: 5 (рекорд: 21)

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

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

все разделы

правила

новости

участники

доска почёта

форум

блоги

поиск

статистика

наш журнал

наши встречи

наша галерея

отзывы о нас

поддержка

руководство

Версия системы:
7.69 (10.02.2019)
JS-v.1.33 | CSS-v.3.35

Общие новости:
10.02.2019, 21:59

Форум:
16.02.2019, 15:03

Последний вопрос:
22.02.2019, 00:18
Всего: 148805

Последний ответ:
21.02.2019, 23:32
Всего: 257820

Последняя рассылка:
22.02.2019, 04:45

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

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

Наша кнопка:

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

Отзывы о нас:
12.02.2016, 10:26 »
Xgrows
Огромное спасибо!!! Все очень подробно и доступно!!! Вы мне очень помогли!!! [вопрос № 188804, ответ № 273368]
28.09.2012, 03:34 »
Вера Михайловна
спасибо [вопрос № 186615, ответ № 271519]
21.11.2016, 20:30 »
svrvsvrv
Большое спасибо за помощь. Очень логичное и доступное объяснение. [вопрос № 190048, ответ № 274284]

РАЗДЕЛ • Assembler

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

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

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

Коцюрбенко Алексей Владимирович
Статус: Модератор
Рейтинг: 772
Зенченко Константин Николаевич
Статус: Старший модератор
Рейтинг: 394
cain52
Статус: 3-й класс
Рейтинг: 253

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

Консультация онлайн # 194125
Раздел: • Assembler
Автор вопроса: lmk (Посетитель)
Отправлена: 07.12.2018, 23:12
Поступило ответов: 1

Здравствуйте! Прошу помощи в следующем вопросе:
Учебная модель ЭВМ. Жмакина.
В памяти размещен массив чисел – кодов ASCII. Отобразить на мониторе все цифры из этого массива.

Логически понятно, что по таблице ascii нужно выводить на монитор только коды с 48 по 57, а остальное отсеивать.

Сам пытался, но дело дальше этого не ушло, совсем не пойму как можно реализовать вывод только цифр.

RD #11 ; включаем дисплей и устанавливаем
OUT 11 ; флаг автоинкремента;
RD #0 ; задаём начальный адрес
OUT 13 ; выводимого слова;
RD 50 ; с какого адреса читаем в памяти
WR R0 ; пишем как адрес начала R0
OUT 10 ; после каждого слова вывод на дисп.
 
 
RD #14
WR R2 ; R2 - как счетчик


Заранее благодарен.

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

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

Здравствуйте, lmk!
Это замечательно, что пытаетесь сделать самостоятельно smile
Вот Вам исправленная программка. Чуток добавил, подчистил... smile

Код (Assembler) :: выделить код
CALL NEW
RD #40
WR R0 ;R0 - address
RD #3 ; задаем счетчик
WR R2 ;R2 - колво повторов

M1:RD @R0+ ;a = number
WR R3 ;сохраняем
SBI #48 ;<'0' ?
JS M2 ; да - на следующее
RD R3 ;восстанавливаем наше число
SBI #58 ;>='9'
JNS M2 ;да - на следующее
RD R3 ;имеем цифру! Она сохранена в регистре R3
OUT 10 ;  вывод на дисп.
M2:JRNZ R2,M1 ;по всем числам

HLT ;останавливаемся!

NEW:
; БЛОК ОЧИСТКИ ДИСПЛЕЯ
RD #101
OUT 11
RD #102
OUT 11
; КОНЕЦ БЛОКА ОЧИСТКИ
; БЛОК ПОДГОТОВКИ ДИСПЛЕЯ
RD #11 ; включаем дисплей и устанавливаем
OUT 11 ; флаг автоинкремента;
RD #0 ; задаём начальный адрес
OUT 13 ; выводимого слова;
RET ; возврат
; КОНЕЦ ПОДГОТОВКИ ДИСПЛЕЯ


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

5
Спасибо вам огромное!
-----
Дата оценки: 08.12.2018, 17:15

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

+1

[подробно]

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

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

Мини-форум консультации № 194125
lmk
Посетитель

ID: 402562

# 1

= общий = | 08.12.2018, 05:25 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

Немного доделал код, присутствует вывод из необходимых ячеек памяти, здесь это - 40(000-001 и т.д), присутствует счётчик повторений. Вывод на дисплей работает. Но пока все равно не получается выполнить проверку на соответствие промежутку 48-57.

CALL NEW

rd #0
WR R3 ;min positive number (0 not found)
RD #40
WR R0 ;R0 - address
RD #3 ; задаем счетчик
WR R2 ;R2 - колво повторов

;search first min
M1:RD @R0+ ;a = number
;JZ M2
OUT 10 ;  вывод на дисп.
M2:JRNZ R2,M1 ;first



NEW:
; БЛОК ОЧИСТКИ ДИСПЛЕЯ
RD #101
OUT 11
RD #102
OUT 11
; КОНЕЦ БЛОКА ОЧИСТКИ

; БЛОК ПОДГОТОВКИ ДИСПЛЕЯ
RD #11 ; включаем дисплей и устанавливаем
OUT 11 ; флаг автоинкремента;
RD #0 ; задаём начальный адрес
OUT 13 ; выводимого слова;
RET ; возврат
; КОНЕЦ ПОДГОТОВКИ ДИСПЛЕЯ

lmk
Посетитель

ID: 402562

# 2

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

Upd 2:
Поправил некоторые моменты, добавил заполнение в 60 адрес памяти коды ASCII с 48 по 57. Стоит ограничитель (10), чтобы заполнение чисел не пошло дальше. После заполнения чисел он переходит к считыванию чисел из 40 адреса по порядку и выводу их на экран, для теста поставил, чтобы выводило по очереди только 3 значения из памяти.
Предполагаю, что необходимо в цикле числа из 60 адреса памяти (эталонные ASCII цифры с 0 до 9) сравнивать с тем, что вручную будет вбито в 40 адрес, после чего делать вывод выводить число в дисплей или нет.

CALL NEW

CALL ADDING_NUMS

;rd #0
;WR R3 ;min positive number (0 not found)
RD #40
WR R0 ;R0 - address
RD #3 ; задаем счетчик
WR R2 ;R2 - колво повторов

;search first min
M1:RD @R0+ ;a = number
;JZ M2
OUT 10 ;  вывод на дисп.
M2:JRNZ R2,M1 ;first


NEW:
; БЛОК ОЧИСТКИ ДИСПЛЕЯ
;RD #101
;OUT 11
;RD #102
;OUT 11
; КОНЕЦ БЛОКА ОЧИСТКИ

; БЛОК ПОДГОТОВКИ ДИСПЛЕЯ
RD #11 ; включаем дисплей и устанавливаем
OUT 11 ; флаг автоинкремента;
RD #0 ; задаём начальный адрес
OUT 13 ; выводимого слова;
RET ; возврат
; КОНЕЦ ПОДГОТОВКИ ДИСПЛЕЯ


ADDING_NUMS:
; МОДУЛЬ ЗАПОЛНЕНИЯ ЧИСЕЛ ASCII (от 0-9)

RD #60 ; использ 40
WR R8 ;R0 - адресс
RD #10 ; задаем счетчик
WR R9 ;R9 - колво повторов

RD #48
WR R7;

;Процедура добавления в #40
ADD1:

WR R7
WR @R8+ ;a = number
ADD #1

JRNZ R9,ADD1 ;first
RET ; возврат
; КОНЕЦ ЗАПОЛНЕНИЯ

;finish
ENDING:
HLT

-----
 Прикрепленный файл (кликните по картинке для увеличения):

 

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

Яндекс Rambler's Top100

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

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

© 2001-2019, Портал RFPRO.RU, Россия
Калашников О.А.  |  Гладенюк А.Г.
Версия системы: 7.69 от 10.02.2019
Версия JS: 1.33 | Версия CSS: 3.35