Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Проверьте, пожалуйста, на правильность две задачи по ассемблеру! / 2 сообщений из 2, страница 1 из 1
01.05.2013, 14:02
    #38246065
vacarme
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверьте, пожалуйста, на правильность две задачи по ассемблеру!
1) Сформировать «бесконечную» последовательность в порту P1.
00000000
10000001
11000011
11100111
11111111
11100111
11000011
10000001
00000000
10000001

MOV A,#00h
MOV R1,#81h
MOV P1,A
ACALL <…1...> - вызов микрокоманды по адресу
MOV R1,#42h - наложение "маски" на предыдущее число
ACALL <…1...>
MOV R1,#24h
ACALL <…1...>
MOV R1,#18h
ACALL <…1...>
MOV R1,#E7h
ACALL <…2...>
MOV R1,#C3h
ACALL <…2...>
MOV R1,#81h
ACALL <…2...>
MOV R1,#00h
ACALL <…2...>
SJMP <…> - возвращение к заданному адресу для образования бесконечного цикла
<…1…> ADD A,R1 - сложение чисел
MOV P1,A - отправление значения в порт Р1
RET
<…2…> ANL A,R1
MOV P1,A
RET

И вторая:

Выполнить операцию «логического умножения со сборкой». Операция состоит в том, что из исходного двоичного числа N извлекаются цифры тех разрядов, в которых в другом из исходных чисел M (так называемом «извлекателе») содержатся единицы; выбранные цифры затем располагаются одна за другой в старших разрядах результата, а младшие разряды забиваются нулями.

N, hex = B3
M, hex = 3A

Код программы:
0000 78A3 MOV R0, #3A
0002 797B MOV R1, #B3
0004 7A00 MOV R2, #00
0006 7B08 MOV R3, #08
0008 E8 MOV A, R0
0009 30E00C JNB E0 (ACC.0), 0018
000C E9 MOV A, R1
000D 13 RRC A
000E F9 MOV R1, A
000F EA MOV A, R2
0010 13 RRC A
0011 FA MOV R2, A
0016 8003 SJMP 001B
0018 E9 MOV A, R1
0019 03 RR A
001A F9 MOV R1, A
001B E8 MOV A, R0
001C 03 RR A
001D F8 MOV R0, A
001E DBE9 DJNZ R3, 0009
0020 8A90 MOV P1, R2
________________________________________
Буду очень признательна, если подскажете, где недочеты, ошибки, неточности... очень надеюсь на вашу помощь! Заранее благодарю!
...
Рейтинг: 0 / 0
01.05.2013, 14:42
    #38246082
vacarme
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверьте, пожалуйста, на правильность две задачи по ассемблеру!
0000 MOV A,#00h
0002 MOV R1,#81h
0004 MOV P1,A
0006 ACALL 001E - вызов микрокоманды по адресу
0007 MOV R1,#42h - наложение "маски" на предыдущее число
0009 ACALL 001E
000A MOV R1,#24h
000C ACALL 001E
000D MOV R1,#18h
000F ACALL 001E
0010 MOV R1,#E7h
0012 ACALL 0023
0013 MOV R1,#C3h
0015 ACALL 0023
0016 MOV R1,#81h
0018 ACALL 0023
0019 MOV R1,#00h
001B ACALL 0023
001C SJMP 0002 - возвращение к заданному адресу для образования бесконечного цикла

001E ADD A,R1 - сложение чисел
0020 MOV P1,A - отправление значения в порт Р1
0022 RET

0023 ANL A,R1
0025 MOV P1,A
0027 RET

Вот подкорректировала первое задание... чтоб понятнее было... а то очень криво написала.
...
Рейтинг: 0 / 0
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Проверьте, пожалуйста, на правильность две задачи по ассемблеру! / 2 сообщений из 2, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]