Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.05.2010, 17:55   #1
rouvers
Новичок
Джуниор
 
Регистрация: 15.05.2010
Сообщений: 2
По умолчанию правильная ли прога?

я новичок в этом деле.
задача такая: ввести из порта А байт, умножить его на два, затем сложить с числом хранимым в порте В. Результат сбросить в стек по адресу 8040 и на семисегментный индикатов, подключенный к порту В

вот что я набросал:
Листинг программы:
MVI A, 90h ; программирование ППИ (нулевой режим, порт А –
на ввод, порты В, С – на вывод
OUT F9
MVI B, 05h ; загрузка 05h
IN A ; снятие байта с порта А
SHL A, 1 ; умножение на 2 (сдвиг влево)
ADD B ; А=А+В
PUSH A ; сброс результата в стек
OUT FB ; сброс на семисегментный индикатор

все ли правильно? и я не понял как указывать адрес стека.
заранее спасибо всем, кто сможет помочь!
rouvers вне форума Ответить с цитированием
Старый 15.05.2010, 21:38   #2
Assemblerru
Форумчанин
 
Регистрация: 28.01.2010
Сообщений: 224
По умолчанию

ну если ты не напутал с адресами то правильно.

А вот что тебя интересует по поводу стека? В регистр стека изночально записывается адрес его начала кажется он назавается SC а еще записывается смещение адреса (я не помню как он называется регистр)

Смысл адресации происходит следующем образом.... к SC смещается влево на 4 бита и к полученному результату прибовляется смешение. После введения в стек смешение уменьшается на один. А перед извлечением оно увеличивается (покрайней мере так работает многие поцессоры от i8086 и выше все более современные контроллеры)

Вообще напиши с каким ЦП ты работаеш для каждого листинг разный даже при написании а том варианте котором написано
всему свое время как зиме и весне
и каждому солнцу свой неба кусок
Assemblerru вне форума Ответить с цитированием
Старый 16.05.2010, 10:45   #3
rouvers
Новичок
Джуниор
 
Регистрация: 15.05.2010
Сообщений: 2
По умолчанию

по поводу стека: как указать адрес его начала.
т.е. нужно просто закинуть адрес в регистр стека: LXI SC 8040? а потом закидывать туда результаты?
а смещение обязательно указывать?

работаю на 16-разрядном i8086
rouvers вне форума Ответить с цитированием
Старый 16.05.2010, 22:40   #4
airyashov
Форумчанин
 
Регистрация: 02.04.2008
Сообщений: 358
По умолчанию

Цитата:
Сообщение от rouvers Посмотреть сообщение
работаю на 16-разрядном i8086
и что это за ассемблер для 86, это 51 наверное
неплохо пишу на ассемблере для 80х86
icq: 3(один)7748666
mail: airyashov(а)inbox.ru
airyashov вне форума Ответить с цитированием
Старый 17.05.2010, 08:40   #5
alexcoder
Форумчанин
 
Регистрация: 31.05.2009
Сообщений: 786
По умолчанию

нет, это ассемблер Intel 8080
Помощь с программами:
vk.com/alexcoder1
e-mail: informatik101@mail.ru
alexcoder вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не правильная работа for .. to Neptunium Общие вопросы Delphi 7 05.04.2010 00:32
Правильная установка FPC. Alex Cones Софт 18 28.02.2010 23:26
правильная ли контекстная диаграмма классов? matios Помощь студентам 0 14.12.2009 22:21
правильная ли процедура? aiktz Помощь студентам 2 11.11.2009 14:12
Правильная программа? Надюха Помощь студентам 10 28.09.2007 14:40