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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.02.2010, 01:07   #1
sig_GB
Пользователь
 
Регистрация: 23.02.2010
Сообщений: 69
По умолчанию УЦВМ, проверьте правильность программы

Проверьте пожалуйста на ошибки всевозможные.
До этого работал в Паскале и др. языках. Теперь ассемблер изучаем и изучаю.
Сделан скрин с экрана на котором код программы на паскале, записаны команды, составлена таблица вспомогательная и сосбственно результат выполнения её на уцвм.
ПОЧЕМУ здесь разместил? просто проверить не кому.
=================================== =======================
ЗАДАНИЕ:Вычислить n-ю степень числа, где n >= 1.

Входные данные брал: число а=10, степень n=2, final_a=1, final_n=1.
Ответ по идее 100, а вышло в аккумуляторе 000001. Это как?
=================================== =======================
И ещё: помогите написать её на настоящем ассемблере пжл. Я разумеется сверю потом со своей.
=================================== =======================
Изображения
Тип файла: jpg screen.JPG (184.7 Кб, 138 просмотров)
Помог? Нажми на <Весы> слева.
С++, Pascal, Assembler 386 - под заказ.
sig_GB вне форума Ответить с цитированием
Старый 23.02.2010, 01:15   #2
sig_GB
Пользователь
 
Регистрация: 23.02.2010
Сообщений: 69
По умолчанию

Если не совсем с той веткой форума связался - прошу прощения. Там оказывается есть для студентов. Проше прощения.
Помог? Нажми на <Весы> слева.
С++, Pascal, Assembler 386 - под заказ.
sig_GB вне форума Ответить с цитированием
Старый 23.02.2010, 01:47   #3
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Вы про циклы слышали? И про не "кошерность" гоуту во многих задачах?

Платформа? ОС? Компилятор? Использование сопроцессора?..

Последний раз редактировалось p51x; 23.02.2010 в 01:51.
p51x вне форума Ответить с цитированием
Старый 23.02.2010, 02:48   #4
sig_GB
Пользователь
 
Регистрация: 23.02.2010
Сообщений: 69
По умолчанию

слышал, но не знаю как их реализовывать в УЦВМ. Безусловный переход использовал поэтому.
накиньте пару строк пжл по циклам.
Помог? Нажми на <Весы> слева.
С++, Pascal, Assembler 386 - под заказ.

Последний раз редактировалось sig_GB; 23.02.2010 в 02:50.
sig_GB вне форума Ответить с цитированием
Старый 23.02.2010, 03:03   #5
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Кто такой УЦВМ?
p51x вне форума Ответить с цитированием
Старый 23.02.2010, 08:52   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
написать её на настоящем ассемблере пжл
Если без ввода данных то это может выглядеть вот так на МАСМе:
Код:
	.386
	.model flat,stdcall
	option casemap:none
		include d:\masm32\include\masm32.inc
			include d:\masm32\include\user32.inc
			includelib d:\masm32\lib\masm32.lib
			  includelib d:\masm32\lib\user32.lib
.data
a				dw 4
n	dw 5
fa dw 1
fn dw 2
capt db 0 dup(100)
;_______________
.code
start:
 xor eax,eax
 xor ecx,ecx
 mov ax,[a]
 mov cx,1
 .WHILE (cx<word ptr [n])
    mul word ptr [a]
    inc cx
 .ENDW
 invoke dwtoa, eax, addr capt
 invoke MessageBoxA,0,addr capt,0,0
 ret
end start
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 23.02.2010, 09:30   #7
sig_GB
Пользователь
 
Регистрация: 23.02.2010
Сообщений: 69
По умолчанию

Учебная Цифровая Вычислительная Машина. Мол пока до настоящего ассемблера надо помучать её, там всего три регистра (аккумулятор,индексный регистр и регистр связи) используется и можно следить по сетке куда данные и команды помещать.
=================================== =============
Так кто-нибудь с ней знаком? просто судя по входным данным в аккумуляторе должен быть ответ 000 064 (оно же 10^2=100 в 16СС). Откуда там 000 001 взялся не понимаю.
Помог? Нажми на <Весы> слева.
С++, Pascal, Assembler 386 - под заказ.

Последний раз редактировалось sig_GB; 23.02.2010 в 09:33.
sig_GB вне форума Ответить с цитированием
Старый 23.02.2010, 09:44   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Так кто-нибудь с ней знаком?
Ой-ей-ей... Соболезную.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 23.02.2010, 13:57   #9
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

sig_GB,я так понял lda - загрузка аккума. А его сохранение? А то получается, что у вас финал_н не меняется. указатель команд стоит у вас на его загрузке....

П.С. Раз у вас есть рабочая УЦВМ, поделитеь. Может кто и поковыряется в ней.
p51x вне форума Ответить с цитированием
Старый 23.02.2010, 19:08   #10
sig_GB
Пользователь
 
Регистрация: 23.02.2010
Сообщений: 69
По умолчанию

Хорошо. Тогда прикрепил внизу саму программу (папка TCom) и чуть чуть теории (то, что нам дали).
Думал думал, вроде ошибок нет. Единственное, вы правильно указали на сохранение аккумулятора, мне так кажется. Вот только его нужно ли сохранять? я думал это как переменная: что записал, то и осталось до след записи.
Вложения
Тип файла: zip Programm+TeoreticalKnowladge.zip (232.9 Кб, 11 просмотров)
Помог? Нажми на <Весы> слева.
С++, Pascal, Assembler 386 - под заказ.
sig_GB вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проверьте на правильность плиз Agent[PNZ] Помощь студентам 3 11.06.2014 19:50
Проверьте правильность программы neomaximus Помощь студентам 3 06.04.2009 04:24
Проверьте на правильность!! Dawystrik Общие вопросы Delphi 2 21.03.2009 21:04
Проверьте правильность пожалуйста Анжелика Помощь студентам 17 11.01.2009 00:28
Проверьте правильность Аленушка Помощь студентам 6 07.01.2009 17:07