|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
16.06.2012, 23:33 | #1 |
Регистрация: 16.06.2012
Сообщений: 5
|
Ассемблер - фрагмент программы
Доброго времени суток всем кто обитает на просторах этого форума. Очень прошу помочь с одним из экзаменационных заданий по предмету "цифровая электроника и компьютерная архитектура". Дан фрагмент программы, фотография по ссылке http://i072.radikal.ru/1206/52/02a0e0b0b814.jpg нужно найти содержание после остановки программы. Она настолько элементарная что понять ход решения задачи я не могу. Как я понял левые столбики здесь не играют никакой роли т.к. операторов перемещения в программе нету, а правые столбики это команды. например первая команда 11 это LXI D помещает в переменную D данные, но я всё никак не могу понять какие именно данные эта команда туда помещает. В образцах из умных учебников всегда есть оператор и операнд который мы записываем, складываем, отнимаем или заменяем в определённую переменную. Но что делать когда этого операнда нету?
У меня большая просьба, если это не отнимет много времени объяснить как работает такого вида программы чтобы я смог решить аналогичную задачу. В пятницу пойду переписывать экзамен. Заранее большое спасибо. И ещё, есть ли программы с простым интерфейсом куда можно вбить подобное и получить ответ для самопроверки? |
17.06.2012, 02:22 | #2 |
Участник клуба
Регистрация: 07.07.2009
Сообщений: 1,385
|
Привет представителю стран Балтии)))
Мне кажется, что первый столбик очень даже значим - это номера регистров (в ОЗУ), куда помещаются данные или адрес машинного кода команды. H - это верхние (старшие) разряды, L - низшие (младшие) разряды. Насколько я понимаю, что второй столбик представляет собой некие закодированные команды, у которых должна быть своя мнемоника. В зависимости от железа, для которого Вы пишите, значение закодированных команд может быть разным и по идее это все можно найти, порывшись в справочных таблицах. Вот я нашла пример таблички для микропроцессора К580. И там говорится, что согласно машинному коду, над конкретными операндами из разных регистров совершаются действия. У Вас же тоже есть (вернее должно быть) описание машинных команд для Вашего железа. По поводу программы - для контроллеров Atmel AVR я использовала AVR Studio 4, но выбор программы опять таки зависит от того, с чем Вы работаете.
"Все мы жаждем чудес. Чисто человеческое свойство." Carl Sagan
Последний раз редактировалось Blondy; 17.06.2012 в 02:40. |
17.06.2012, 09:25 | #3 |
Форумчанин
Регистрация: 31.05.2009
Сообщений: 786
|
В результате:
A=A5 E=B7 H=B2 L=00 |
17.06.2012, 12:02 | #4 | |
Регистрация: 16.06.2012
Сообщений: 5
|
Цитата:
Вот например в таблице которую вы нашли код 3А преобразуется в LDA 0500H сразу понятно что с ячейкой 500 мы работаем. У меня же во всех таблица и везде где смотрел в интернете для моего процессора 3А тоже означает LDA но вот эти 0500H с которыми мне нужно работать, перемещать, складывать нигде не обозначены. Откуда их взять? Как быть когда есть команды но нету операндов с которыми эта команда выполняет определённое действие |
|
17.06.2012, 12:11 | #5 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
I'm learning to live...
|
|
17.06.2012, 12:23 | #6 |
Регистрация: 16.06.2012
Сообщений: 5
|
Всё что сказал преподаватель после расспросов так это то что левые столбики регистров здесь не играют никакой роли, в каждом варианте они произвольные и сделаны лишь для того чтобы показать последовательность программы - сначала идёт левая часть а ниже правая т.к. всё в столбик напечатать не получилось (на листе места не оставалось)
|
17.06.2012, 16:16 | #7 |
Участник клуба
Регистрация: 07.07.2009
Сообщений: 1,385
|
Так а Вы пытались выяснить у коллег по учебе, как работает этот зверь? Ведь наверняка есть мальчики, которые в этом деле очень даже понимают и у них все сдано, могут и Вас подтянуть....
Вот Вам справочный материал, как это все действует: http://www.computer-museum.ru/technlgy/i8080.php
"Все мы жаждем чудес. Чисто человеческое свойство." Carl Sagan
|
17.06.2012, 17:24 | #8 | |
Регистрация: 16.06.2012
Сообщений: 5
|
Цитата:
Для большей уверенности в успехе я создал аналогичную тему в другом форуме программистов, где мне сегодня помогли. Теперь я кажется разобрался. В приложении фотография с ходом решения, если интересно. Оказывается операнды нужно было брать из строк следующих за оператором. Но всё равно большое спасибо всем кто откликнулся, в век безразличия это дорогого стоит. Я искренне признателен. Последний раз редактировалось belinea; 17.06.2012 в 17:26. |
|
17.06.2012, 17:43 | #9 |
Участник клуба
Регистрация: 07.07.2009
Сообщений: 1,385
|
Между прочим, у меня было такое подозрение: вот в том первом примере - данные операндов берутся из следующих строчек. Но когда с подобным не сталкивалась, очень трудно сообразить. У нас не было машинных кодов, были обычные операторы....
Молодец, что выложили пример - мы теперь знаем, как это может быть. И если кто спросит - будем знать, как это делается.
"Все мы жаждем чудес. Чисто человеческое свойство." Carl Sagan
Последний раз редактировалось Blondy; 17.06.2012 в 17:47. |
17.06.2012, 18:11 | #10 | |
Регистрация: 16.06.2012
Сообщений: 5
|
Цитата:
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
фрагмент программы(СИ) | iris_ka | Помощь студентам | 7 | 24.04.2012 15:19 |
Фрагмент резидентной программы | WildHeart | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 1 | 04.04.2012 11:30 |
Фрагмент кода программы Delphi | Начинающий програм | Помощь студентам | 2 | 21.01.2012 23:41 |
Фрагмент программы Delphi | Начинающий програм | Помощь студентам | 2 | 21.01.2012 22:13 |
Фрагмент программы по стеганографии | riderpro | Общие вопросы Delphi | 10 | 08.01.2012 20:00 |