Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры ATmega AVR
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/18: Рейтинг темы: голосов - 18, средняя оценка - 4.67
5 / 5 / 1
Регистрация: 26.02.2011
Сообщений: 52

Осуществить логическое сложение числа, записанного в ячейку памяти по адресу 030H

14.10.2012, 07:38. Показов 3426. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Дана задача: Осуществить логическое сложение числа, записанного в ячейку памяти по адресу 030H и числа 0FH и записать результат по адресу 080H, если число единиц в результате чётно. Сбросить старшую тетраду содержимого ячейки памяти по адресу 177H и полученный результат записать в следующую ячейку памяти. Дошёл до пункта "и записать результат по адресу 080H, если число единиц в результате чётно."
C 20-ой строки начинается ошибка:
Код:
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
.include "m16def.inc"
 
 ldi R16, high(RAMEND)
 out SPH, R16
 ldi R16, low(RAMEND)
 out SPL, R16
 
 ldi R18, high(0x030)
 ldi R17, low(0x030)
 
 M0: Call EEPROM_read
 
 
 ldi R19, 0x0F 
 
 ADD R16, R19 
 
 Call EEPROM_write
 
 ;в следующих 4-х строках появляются ошибки
 mov AX, R16 ; Illegal instruction code
 test AX, AX ; Unknown instructions opcode
 jpe M0 ; Unknown instructions opcode
 jpo M1 ; Unknown instructions opcode
 
 
 M1:
 ldi R18, high(0x080)
 ldi R17, low(0x080)
 
 ;Call EEPROM_write
 
 
 end: rjmp end
 
 EEPROM_read:
 sbic EECR, EEWE
 rjmp EEPROM_read
 
 out EEARH,R18
 out EEARL,R17
 
 sbi EECR, EEMWE
 sbi EECR, EEMWE
 
 in R16, EEDR
 ret
 
 EEPROM_write:
 sbic EECR, EEWE
 rjmp EEPROM_write
 
 out EEARH, R18
 out EEARL, R17
 out EEDR, R16
 
 sbi EECR, EEMWE
 sbi EECR, EEWE
 
 SEI
 ret
Возможно, что я не правильно делаю, копируя из значение из R16 в AX, но почему он не понимает остальные команды? Помогите пожалуйста.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
14.10.2012, 07:38
Ответы с готовыми решениями:

Осуществить логическое сложение числа
Здравствуйте, помогите пожалуйста написать программу на языке Ассамблера, рассчитываю на вашу помощь, спасибо: Осуществить логическое...

(КР580) Произвести логическое сложение содержимого ячеек оперативной памяти
Дали задание на дистанционке,написать программу: Составить программу вычислений на языке ассемблера для МП КР580: - произвести...

Даны числа в 16-ричной системе счисления: сложение, вычитание, умножение, деление, логическое отрицание
1 Даны числа а=9531h и b=A78Dh (числа в 16-ричном системе счисления). Нужно выполнить над ними: сложение, вычитание, умножение, деление,...

4
1184 / 670 / 113
Регистрация: 15.05.2012
Сообщений: 4,081
15.10.2012, 11:52
Программа пишется для микроконтроллера AVR. О чем говорит "m16def.inc". Но в тексте появляется АХ, которого в этих мк попросту нет. Надо определиться для чего писать: для атмела или для интела.
По аогоритму. В задании "если число единиц в результате чётно", а в программе нет этого.
0
5 / 5 / 1
Регистрация: 26.02.2011
Сообщений: 52
15.10.2012, 12:26  [ТС]
Я уже понял, что AX здесь использовать неуместно, как и камонды test, jpe и jpo. Но вот узнать чётность единиц я так и не могу. Подсказали, что надо выполнить логическое умножение на 1

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
.include "m16def.inc"
 
ldi R16, high(RAMEND)
out SPH, R16
ldi R16, low(RAMEND)
out SPL, R16
 
ldi R18, high(0x030)
ldi R17, low(0x030)
 
Call EEPROM_read
M0:
ldi R19, 0x0F ; çàïèñûâàåì 0F â R19
 
OR R16, R19 ; ñêëàäûâàåì çíà÷åíèÿ â ðåãèñòðàõ
 
ldi R21, 0xFF
 
AND R21, R16
 
 
M1:
ldi R18, high(0x080)
ldi R17, low(0x080)
Call EEPROM_write
 
 
end: rjmp end
Но происходит зацикливаение.
0
Ушел с форума
Автор FAQ
 Аватар для Mikl___
16373 / 7685 / 1080
Регистрация: 11.11.2010
Сообщений: 13,759
15.10.2012, 12:42
Eshik_v_tum@ne, логическое умножение на 1 даст возможность узнать четное ли число или нечетное, чтобы посчитать единицы нужно число сдвигать на один разряд вправо, делать логическое умножение на 1 и результаты сложить
0
5 / 5 / 1
Регистрация: 26.02.2011
Сообщений: 52
17.10.2012, 13:03  [ТС]
Mikl___, вроде написал так как вы сказали, но, видимо, есть какой-то косяк

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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
.include "m16def.inc"
 
ldi R16, high(RAMEND)
out SPH, R16
ldi R16, low(RAMEND)
out SPL, R16
 
ldi R18, high(0x030)
ldi R17, low(0x030)
 
Call EEPROM_read
M0:
ldi R19, 0x0F ; 
 
OR R16, R19 
MOV R22, R16 
 
M3: ldi R21, 0xFF
 
LSR R22 ; то , что я написал
AND R21, R22
OR R23, R21
BRCS M3
brne M0
breq M1
 
M1:
ldi R18, high(0x080)
ldi R17, low(0x080)
Call EEPROM_write
 
 
end: rjmp end
 
EEPROM_read:
sbic EECR, EEWE
rjmp EEPROM_read
 
out EEARH,R18
out EEARL,R17
 
sbi EECR, EEMWE
sbi EECR, EEMWE
 
;in R16, EEDR
ret
 
EEPROM_write:
sbic EECR, EEWE
rjmp EEPROM_write
 
out EEARH, R18
out EEARL, R17
out EEDR, R16
 
sbi EECR, EEMWE
sbi EECR, EEWE
 
ret
но всё равно на метку 1 не выходит программа. В чём ошибка?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
17.10.2012, 13:03
Помогаю со студенческими работами здесь

Написать программу, которая вводит с клавиатуры два натуральных числа и выполняет логическое умножение и сложение этих чисел
1. Написать программу, которая вводит с клавиатуры два натуральных числа и выполняет логическое умножение и сложение этих чисел. На экран...

Запись числа в ячейку памяти...
Сессия сессия нужна помощь а точнее решить так как сам немогу. Кто сможет решите пожалуйста. Задача- В ячейке памяти записать числа 22h...

Инструкция по адресу обратилась к памяти по адресу. Память не может быть read
Пропали компоненты COM с компьютера, так как при попытке их выбрать Visual Studio попросту вылетает и открывается заново, а недавно еще...

Инструкция по адресу “0x490e355” обратилась к памяти по адресу “0x065ea847” память не может быть “written”
Здравствуйте, при загрузки картинки в хроме появляется такая ошибка и хром дохнет, также это наблюдается в других браузерах когда нажимаешь...

инструкция по адресу 0x7c91ac4a обратилась к памяти по адресу 0x00000010.Память не может быть written
Помогите разобраться пожалуйста!!!!! С:/rsit info.txt logfile of random's system information tool 1.06 2010-05-27 22:37:54 ...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru