17.12.2018, 23:57 [+3 UTC]
в нашей команде: 3 242 чел. | участники онлайн: 5 (рекорд: 19)

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

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

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

:: правила

:: новости

:: участники

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

:: форум

:: блоги

:: поиск

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

:: наш журнал

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

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

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

:: поддержка

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

Версия системы:
7.58 (11.12.2018)

Общие новости:
13.12.2018, 11:36

Форум:
17.12.2018, 14:43

Последний вопрос:
17.12.2018, 23:09

Последний ответ:
17.12.2018, 19:25

Последняя рассылка:
17.12.2018, 23:45

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

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

Наша кнопка:

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

Отзывы о нас:
26.11.2009, 10:12 »
Sertok
Здравствуйте vvl! Спасибо за помощь. Буду брать Phenom II X4 925 2.8 GHz. А чем плох Phenom II X4 810? [вопрос № 174489, ответ № 256904]
26.12.2016, 17:25 »
svrvsvrv
Благодарю за консультацию. [вопрос № 190358, ответ № 274477]
14.12.2010, 04:21 »
Савенков М.В.
Написано очень подробно + есть таблица. Очень помогло. Спасибо за труд smile [вопрос № 181223, ответ № 264750]

РАЗДЕЛ • Assembler

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

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

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

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

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

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

© 2001-2018, Портал RFPRO.RU, Россия
Калашников О.А.  |  Гладенюк А.Г.
Версия системы: 7.58 от 11.12.2018