Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/21: Рейтинг темы: голосов - 21, средняя оценка - 4.86
1 / 1 / 0
Регистрация: 01.03.2017
Сообщений: 31
1

Начало Edsim51 (intel 8051) Кол-во четных в массиве, меньше 150

26.09.2019, 23:46. Показов 3822. Ответов 13
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день. Первое задание для Intel 8051. Нужно задать массив на 10 чисел. Посчитать кол-во чисел меньше 150, четных. Начала адреса массива 47h.
Небольшое представление имею о программирование на ассемблере (Tasm), но здесь не могу найти информации, как задать массив(не пойму с чего начинать здесь). в Tasm было так:
Assembler
1
2
3
4
5
6
stseg   segment para    stack
        dw      16      dup(?)
stseg   ends
dseg    segment para
x       dw      5,6,5,1,1,2,3,4
y       dw      ?

Помогите ,пожалуйста, заранее спасибо)
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.09.2019, 23:46
Ответы с готовыми решениями:

EdSim51 intel 8051 среднее арифметическое суммы чисел
Нужно написать программу циклического вычисления среднего арифметического суммы чисел от 50 до 0 и...

Edsim51 (intel 8051) Найти минимальное отрицательное число, меньшее - 10
Здравствуйте.Есть программа которая ищет минимальное отрицательное число, большее - 50.Как изменить...

Определение минимального элемента в массиве (Intel 8051, ASM, Keil uVision4)
Задача: Составьте программу на языке ассемблера, которая реализует алгоритм решения Определение...

Ввод информации с датчиков в сиуляторе EdSim51 8051 microcontroller free simulator
EdSim 51 ПОМОГИТЕ ПОЖАЛУЙСТА!( организовать ввод информации с датчиков в режиме программного...

Подсчет кол-ва четных элементов в массиве
Подскажите как организовать подсчет четных элементов в массиве <HTML> <HEAD> <TITLE> Задание 3...

13
1624 / 806 / 146
Регистрация: 13.06.2015
Сообщений: 3,266
27.09.2019, 00:11 2
Лучший ответ Сообщение было отмечено SEXTANT как решение

Решение

Цитата Сообщение от SEXTANT Посмотреть сообщение
Начала адреса массива 47h.
Какое "интересное" задание. Тут ещё надо понимать, что это за адрес? Если в прошивке, то это делается так:
Assembler
1
2
ORG 47h
MAS: DB 18, 94, 11, 155, 200, 128, 3, 190, 110, 167
но тут надо понимать, то это будут данные, "врезанные" в код, поэтому код их должен обойти:
Assembler
1
2
3
4
5
6
.....какой-то код.....
JMP BYPASS
ORG 47h
MAS: DB 18, 94, 11, 155, 200, 128, 3, 190, 110, 167
BYPASS:
......выполняем код дальше.....
Если массив должен быть в ОЗУ, то "задать" его там не получится, и придётся заносить значения во время выполнения программы, а взять их можно будет только из прошивки, опять-таки применяя конструкцию, описанную выше.
Далее вам надо будет настроить DPTR на стартовый адрес и организовать цикл обработки:
Assembler
1
2
3
4
5
6
7
MOV DPTR,#MAS
MOV R0,#0
M:MOV A,R0
  MOVC A,@A+DPTR
  .....что-то делаем с A, производим проверки, и т.д......
  INC R0
  CJNE R0,#10,M   ;  все 10 элементов просканировали?
2
1 / 1 / 0
Регистрация: 01.03.2017
Сообщений: 31
27.09.2019, 10:23  [ТС] 3
Спасибо большое)
Все что нужно, дальше напишу сам )
0
пофигист широкого профиля
4733 / 3167 / 859
Регистрация: 15.07.2013
Сообщений: 18,253
28.09.2019, 01:57 4
Цитата Сообщение от Kukuxumushu Посмотреть сообщение
Какое "интересное" задание.
И кто только придумывает такие "интересные" задания?
0
10 / 10 / 0
Регистрация: 27.04.2015
Сообщений: 39
02.10.2019, 08:54 5
Что-то вроде такого:
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
    PUBLIC  Array_Min
 
    RSEG    CODE
 
Array:      DB  18, 94, 11, 155, 200, 128, 3, 190, 110, 167
Array_End:
 
Array_Min:
    MOV R0,#0xff
    MOV DPTR,#Array
Array_Min_Loop:
    MOV A,DPL
    XRL A,#LOW(Array_End)
    JZ  Array_Min_Done
    CLR A
    MOVC    A,@A+DPTR
    INC DPTR
    CLR C
    SUBB    A,R0
    JNC Array_Min_Loop
    ADD A,R0
    MOV R0,A
    JMP Array_Min_Loop
Array_Min_Done:
    MOV A,R0
    RET
 
    END
0
1 / 1 / 0
Регистрация: 01.03.2017
Сообщений: 31
03.10.2019, 19:35  [ТС] 6
еще раз спасибо, по заданию написал, но не могу додуматься некоторые вещи.
Как сделать проверку числа меньше 150, нужно считать количество четных меньше 150. Четность работает.
и как переделать цикл на предусловие? Если можно с комментариями, хочется разобраться, а то дали задание и все)

Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
MOV DPTR, #MAS
MOV R0, #0
MOV R1, #0
m:
MOV A, R0
MOVC A, @A+DPTR
JB ACC.0, U
INC R1
u:
INC R0
CJNE R0, #10, m
MOV A, R1
ORG 47H
MAS: db 1h,2h,3h,150h,5h,6h,7h,8h,9h,10h
0
10 / 10 / 0
Регистрация: 27.04.2015
Сообщений: 39
03.10.2019, 20:26 7
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
    MOV DPTR, #MAS
    MOV B, #10
    MOV R1, #0
m:
    CLR A
    MOVC    A,@A+DPTR
    JB  ACC.0, u
    SUBB    A,#150
    JNC u
    INC R1
u:
    DJNZ    B,m
0
1624 / 806 / 146
Регистрация: 13.06.2015
Сообщений: 3,266
03.10.2019, 20:31 8
Цитата Сообщение от SEXTANT Посмотреть сообщение
Как сделать проверку числа меньше 150
Assembler
1
2
SUBB A,#150
JC <число меньше 150>
Цитата Сообщение от SEXTANT Посмотреть сообщение
как переделать цикл на предусловие?
Перенести условие выхода из цикла в его начало, а в конце поставить безусловный переход.
Цитата Сообщение от SEXTANT Посмотреть сообщение
Если можно с комментариями, хочется разобраться, а то дали задание и все)
Найдите книгу А.В.Фрунзе "Микроконтроллеры? Это же просто!", вам нужен пока только том 1, увлекательнейшее чтиво для чайников.
0
10 / 10 / 0
Регистрация: 27.04.2015
Сообщений: 39
03.10.2019, 20:32 9
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
    MOV DPTR, #MAS
    MOV B, #10
    MOV R1, #0
m:
    CLR A
    MOVC    A,@A+DPTR
    JB  ACC.0, u
    CLR C
    SUBB    A,#150
    JNC u
    INC R1
u:
    INC DPTR
    DJNZ    B,m
0
1624 / 806 / 146
Регистрация: 13.06.2015
Сообщений: 3,266
03.10.2019, 20:35 10
Intel4004, ну вот, человек только хотел РАЗОБРАТЬСЯ, а теперь пойдёт сдаст всё готовое и будет каждую лабу свою тут выкладывать, так и не разобравшись ни в чём...
0
10 / 10 / 0
Регистрация: 27.04.2015
Сообщений: 39
03.10.2019, 20:40 11
Цитата Сообщение от Kukuxumushu Посмотреть сообщение
ну вот, человек только хотел РАЗОБРАТЬСЯ, а теперь пойдёт сдаст всё готовое и будет каждую лабу свою тут выкладывать, так и не разобравшись ни в чём...
Чем хуже современные студенты владеют специальностью - тем ценнее(и высокооплачиваемее) я.
0
1 / 1 / 0
Регистрация: 01.03.2017
Сообщений: 31
03.10.2019, 22:36  [ТС] 12
Intel4004, появилось пару вопросов)
Для чего обнулять аккумулятор ?
и вот интересно как проверять меньше 150, SUBB если не ошибаюсь вычитание как потом он понимает что меньше?
и вопрос для чего DPTR инкремент делать?

Добавлено через 52 минуты
Переделал под свое задание, с предусловием, может кому нужно будет:
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
MOV DPTR, #MAS
    MOV R0, #10
    MOV R1, #0
start:
    CJNE R0, #0, m
    JNC i
m:
    CLR A
    MOVC    A,@A+DPTR
    JB  ACC.0, u
    CLR C
    SUBB    A,#150h
    JNC u
    INC R1
u:
    INC DPTR
    DEC R0
    SJMP start
i:
    MOV A, R1
ORG 47h
MAS: db 1h,2h,3h,154h,5h,256h,7h,8h,9h,10h
0
10 / 10 / 0
Регистрация: 27.04.2015
Сообщений: 39
03.10.2019, 22:59 13
http://www.gaw.ru/html.cgi/txt... movc_a.htm
http://www.gaw.ru/html.cgi/txt... subb_a.htm
0
пофигист широкого профиля
4733 / 3167 / 859
Регистрация: 15.07.2013
Сообщений: 18,253
05.10.2019, 02:49 14
Цитата Сообщение от SEXTANT Посмотреть сообщение
и вот интересно как проверять меньше 150, SUBB если не ошибаюсь вычитание как потом он понимает что меньше?
Для этого есть служебный регистр статуса процессора в котором есть "флаг переноса" С. Сей флаг используется не только в команде вычитания.
0
05.10.2019, 02:49
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.10.2019, 02:49
Помогаю со студенческими работами здесь

Если в массиве кол-во элементов меньше 3, то все элементы увеличить вдвое
Тема:Одномерные числовые массивы. 1.Если в массиве кол-во элементов меньше 3 , то все элементы...

Вычисление кол-ва и суммы четных по значению элементов в массиве
Ввести целочисленный массив, состоящий из 14 элементов. Вычислить количество и сумму четных по...

Как определить кол-во четных и отрицательных чисел в массиве одновременно
Помогите пожалуйста с одним вопросом. Вот задание:Определить сколько процентов представляют в...

В массиве целых чисел подсчитать количество четных положительных чисел, из диапазона (100.150)
В массиве целых чисел подсчитать количество четных положительных чисел, из диапазона (100..150)....

Intel 8051
1 В сегменте CODE помещена строка-константа неопределенной длины, но для строки задан конечный...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru