Консультация № 178248
06.05.2010, 23:01
0.00 руб.
0 1 1
Уважаемые эксперты, помогите пожалуйста написать программу:
Составить программу сложения N (N<16) однобайтных чисел. Числа должны располагаться в памяти программ, начиная с адреса после кодов программы. Результат должен фиксироваться в ячейках внешней памяти, начиная с адреса 0000H.
Заранее благодарен.

Обсуждение

давно
Посетитель
7438
7205
07.05.2010, 10:59
общий
это ответ
Здравствуйте, diavolic89.
Ваша программа:
Код:
;Программа сложения N (N<16) однобайтных чисел. 
;Числа располагаются в памяти программ, начиная с адреса после кодов программы.
;Результат фиксируется в ячейках внешней памяти, начиная с адреса 0000H.
sumaddr equ 0 ;адрес внешней памяти, куда запишем результат
sumlow equ 8 ;переменные во внутренней памяти для суммы, младший байт
sumhigh equ 9 ;старший байт
stack eqy 60h ;вершина стека

mov sp, #stack ;стек

mov dptr, #array ;адрес массива в программной памяти
mov r2, #0 ;индекс в массиве
mov r3, #N ;количество элементов массива
mov sumlow, #0 ;пусть сумма пока равна 0
mov sumhigh, #0
loop: ;цикл по складыванию элементов массива
mov a, r2 ;индекс очередного элемента
inc r2 ;для следующего
movc a, @a+dptr ;читаем в аккум из программной памяти байт по адресу [a]+[dptr]
add a, sumlow ;складываем с младшим
mov sumlow, a ;сохраняем младший байт
mov a, #0 ;надо учесть перенос!
addc a, sumhigh ;для этого складываем старший байт с 0 и с переносом (FC)
mov sumhigh, a ;сохраняем старший байт
djnz r3, loop ;r3=r3-1; циклим, пока r3!=0

mov dptr, #sumaddr ;пишем найденную сумму во внешнюю память
mov a, sumlow ;сначала младший байт
movx @dptr, a ;пишем a->[dptr]
inc dptr
mov a, sumhigh ;следом старший байт суммы
movx @dptr, a ;пишем a->[dptr]

jmp $ ;задача решена, организовываем бесконечный цикл:
; крутимся на одном месте

array: ;данные
db 3,6,4,8,2,0,3,7,1,6,5,3,8,2,23h,10h
N equ $-array ;длина массива

end
Обратите внимание, что сумма в двух байтах
5
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
Форма ответа