![]() |
|
|
![]()
|
|
| Rurir |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 20.12.2008 Репутация: нет Всего: нет |
Привет всем. Есть функция
Y = (A-D*C/A+E) + (A*B+C/D-E) – (A-B/C+D*E) Напишите пожалуйста код программы для её решения. Буду благодарен. Что-то у меня не получается, не знаю какие именно можно регистры использовать... |
|||
|
||||
| 500mhz |
|
|||
![]() шайтан ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1017 Регистрация: 5.5.2008 Где: Киев / Italy Репутация: 1 Всего: 14 |
ну так исходник показывай
-------------------- |
|||
|
||||
| Rurir |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 20.12.2008 Репутация: нет Всего: нет |
написал код для первой функции, т.е. для (A-D*C/A+E)
переменная а тут изменяется с шагом h, поэтому и вводится An SUB BX,BX ; обнуление (BX) SUB DX,DX ; обнуление (DX) SUB DI,DI ; обнуление (DI) MOV BX,ABIN ; A->(BX) MOV DI,DBIN ; D->(DI) MOV CL,ANBIN ; An->(CL) M1: XOR AX,AX MOV AX,СBIN ; C->(AX) MUL DI ; (D*C) -> (AX) SUB AX,DX ;A-(D*C) PUSH BX MOV BX,ABIN SUB AX,AX MOV AX,EBIN ADD AX,BX ; (A+E) POP BX DIV AX ; (A-D*C/A+E) MOV DX,AX ; результат в (DX) Что неправильно? Как связать её с другими двумя членами функции? |
|||
|
||||
| 500mhz |
|
|||
![]() шайтан ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1017 Регистрация: 5.5.2008 Где: Киев / Italy Репутация: 1 Всего: 14 |
многа букф
-------------------- |
|||
|
||||
| Rurir |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 20.12.2008 Репутация: нет Всего: нет |
Ясно! А как связать эти три многочлена в один код, напишите если не трудно,а то я только учусь)
|
|||
|
||||
| 500mhz |
|
|||
![]() шайтан ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1017 Регистрация: 5.5.2008 Где: Киев / Italy Репутация: 1 Всего: 14 |
ну можно все в одной функции сделать а можно разбить на 3 и вызывать из 1 функ вторую из второй третью
-------------------- |
|||
|
||||
| Rurir |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 20.12.2008 Репутация: нет Всего: нет |
Понял. а какой регистр кроме eax можно использовать? ведь нужно сохранить значение первой функции для дальнейших расчётов
|
|||
|
||||
| 500mhz |
|
|||
![]() шайтан ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1017 Регистрация: 5.5.2008 Где: Киев / Italy Репутация: 1 Всего: 14 |
вроде правильно все ) -------------------- |
|||
|
||||
| Rurir |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 20.12.2008 Репутация: нет Всего: нет |
Спасибо огромное!!!
|
|||
|
||||
| Rurir |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 20.12.2008 Репутация: нет Всего: нет |
У меня ещё пара вопросов.
1. Как сделать, чтобы процедура сравнивала два числа(D и E) и если они равны то вызывалась процедура ошибки,а если не равны то ничего бы не происходило? Я сделал так,но не получается, всегда выводится ошибка: ----------- Проверка на допустимые значения D=E -------------- MOV BX,DBIN CMP EBIN,BX ; сравнение D с E JNE NEXT ; переход к вычислению функции CALL ERR ; вызов процедуры выдачи сообщения об ошибке JMP AGAIN ; возврат к вводу данных 2. После того как я сделал из файла *.asm файлы *.obj и *.exe и после запуска экзешника русский язык не распознаётся: прога TASM http://s1.ipicture.ru/uploads/20111202/yMw96f3F.png |
|||
|
||||
| iff |
|
|||
![]() Администратор ![]() ![]() Профиль Группа: Участник Сообщений: 949 Регистрация: 23.3.2007 Репутация: 4 Всего: 16 |
1. где метка next?
2. исходный файл должен иметь кодировку DOS. -------------------- DOS... Синей пеленой экран заполнил чистый DOS Мышь... Стала вдруг квадратной, потеряла форму мышь... Я разбил окно, девяностопятое мастдайное окно, И поставил DOS, и тогда увидел: Это счастье, — вот оно. |
|||
|
||||
| Rurir |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 20.12.2008 Репутация: нет Всего: нет |
1. метка NEXT идёт после JMP AGAIN. там прост опрога большая..
я вот думаю тот ли я условный переход написал? 2. и как изменить на кодировку ДОС? |
|||
|
||||
| iff |
|
|||
![]() Администратор ![]() ![]() Профиль Группа: Участник Сообщений: 949 Регистрация: 23.3.2007 Репутация: 4 Всего: 16 |
1. ошибка либо в процедуре ERR, либо в том, что в этом месте нельзя использовать bx.
2. в редакторе, который поддерживает эту кодировку. -------------------- DOS... Синей пеленой экран заполнил чистый DOS Мышь... Стала вдруг квадратной, потеряла форму мышь... Я разбил окно, девяностопятое мастдайное окно, И поставил DOS, и тогда увидел: Это счастье, — вот оно. |
|||
|
||||
| 500mhz |
|
|||
![]() шайтан ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1017 Регистрация: 5.5.2008 Где: Киев / Italy Репутация: 1 Всего: 14 |
а может все таки
MOV BX,[DBIN] CMP [EBIN],BX -------------------- |
|||
|
||||
| iff |
|
|||
![]() Администратор ![]() ![]() Профиль Группа: Участник Сообщений: 949 Регистрация: 23.3.2007 Репутация: 4 Всего: 16 |
Поскольку здесь автор ко всем переменным обращается без квадратных скобок, подумал, что компилятор поддерживает именно такой синтаксис. -------------------- DOS... Синей пеленой экран заполнил чистый DOS Мышь... Стала вдруг квадратной, потеряла форму мышь... Я разбил окно, девяностопятое мастдайное окно, И поставил DOS, и тогда увидел: Это счастье, — вот оно. |
|||
|
||||
![]()
|
| Правила форума "Asm для начинающих" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Asm для начинающих | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |