Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Помогите написать листинг программы по блок-схеме

63K
19 мая 2011 года
albertik
21 / / 21.03.2011
Вот такая блок-схема. Помогите, пожалуйста разобраться, как будет выглядеть листинг программы. Должна получиться программа для умножения методом суммирования множимого. Выполняется на процессоре КР580.
277
19 мая 2011 года
arrjj
1.7K / / 26.01.2011
там же всё подписано по порядку:
Код:
org 0200H
;начальные значения множителей и регистра d для дальнейшей работы
mvi c,D8H
mvi b,D8H
mvi d,00H
;если один из множителей =0 то переходим к метке sub_0223
mov a,c
add a
jz sub_0223
mov a,b
add a
jz sub_0223
;a=0
mvi a,00H
;пошло сложение в цикле
sub_0212:
add c ;прибаляем c к a
jnc sub_0217 ; если нет переполнения переходим к sub_0217
inr d ;если переполнение увеличиваем d на 1
sub_0217:
;следущие четыре строки уменьшают b на 1 и если b=0 переходят к завершению программы
mov e,a ;а сохраняем в е
mov a,b ;b переносим в a
dcr a ;уменьшаем а
jz sub_0222 ;если a=0 то переходим к метке sub_0222
;если b не равен 0 то возвращаем регистры a и b на места для следующей итерации
mov b,a
mov a,e
jmp sub_0212 ;переход к следующей итерации
;ниже запись результата умножения в память по адресу 1000
sub_0222:
mov a,e
sub_0223:
sta 1000H
mov a,d
sta 1001H
end

но там ошибка или в листинге или в блоксхеме, в соответствии с блоксхемой метка sub_0223 находится после sta, а в соответствии с листингом до sta (листинг вроде более правильный) результат умножения в word по адресу 0x1000
63K
20 мая 2011 года
albertik
21 / / 21.03.2011
arrjj, благодарю. Теперь будет проще разбираться. Сейчас забью листинг в эмулятор, посмотрю, что да как.
63K
20 мая 2011 года
albertik
21 / / 21.03.2011
Вбил в стенд, вот что он выдал

По поводу некорректного оператора, я полагаю, надо убрать H в конце. Тогда ошибку не выдает. В строке 37 END означает останов? Если да, то надо заменить end на HLT. А с первой строкой что делать? Что за команда ORG?
62K
20 мая 2011 года
(zom!k
36 / / 30.12.2010
ORG указывает смещение если не ошибаюсь..
277
20 мая 2011 года
arrjj
1.7K / / 26.01.2011
Да, в листинге, который на блоксхеме, просто первая команда по адресу 200 вот и я добавил смещение. END - это останов. числоH означает число в 16-й системе, если убрать H убедитесь, что числа обрабатываются правильно, (а то может их в десятичную надо попереводить).
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог