Хостинг портала RFpro.ru: Московский хостер Профессиональный ХОСТИНГ на базе Linux x64 и Windows x64 РАССЫЛКИ ПОРТАЛА RFPRO.RU Лучшие эксперты по данной тематике Номер выпуска: | 1517 | Дата выхода: | 06.06.2012, 14:00 | Администратор рассылки: | Лысков Игорь Витальевич (Старший модератор) | Подписчиков / экспертов: | 91 / 38 | Вопросов / ответов: | 1 / 1 | Консультация # 186308: Здравствуйте, уважаемые эксперты! Прошу вас ответить на следующий вопрос: У меня есть чуть неверно написанная программа для Tasm .386 . Помогите, пожалуйста, исправить ошибки. Решаемое выражение: (a^3-b^2)/c^2 ... Консультация # 186308: Здравствуйте, уважаемые эксперты! Прошу вас ответить на следующий вопрос: У меня есть чуть неверно написанная программа для Tasm .386 . Помогите, пожалуйста, исправить ошибки. Решаемое выражение: (a^3-b^2)/c^2
Код : ;y=(a^3 - b^2)/c^2 .model small .stack 100h .data a db ? b db ? c db ? .code start: mov ax,@data mov ds,ax mov al,b cbw mov bx,ax imul bx mov bx,ax mov al,c cbw cwd mov ecx,eax imul ecx mov ecx,eax mov al,a cbw cwd mov eax,ecx imul eax imul eax mov eax,ecx sub ax,bx cwd cdq idiv ecx mov ax,4c00h int 21h end start Дата отправки: 03.06.2012, 13:26 Вопрос задал: Посетитель - 341182 (Посетитель) Всего ответов: 1 Страница онлайн-консультации » Консультирует Лысков Игорь Витальевич (Старший модератор): Здравствуйте, Посетитель - 341182! Предлагаю Вам Вашу программу с исправлениями и свой вариант программы...
Код : ;y=(a^3 - b^2)/c^2 .model small .stack 100h .data a db 15 ; !!!надо задать конкретные значения b db 7 c db 3 .386 ; !!!указываем, что используются возможности 386 процессора .code start: mov ax,@data mov ds,ax mov al,b ;al = b cbw ;ax = b mov bx,ax ;bx = b imul bx ;dx:ax = b^2 cwde ;eax = b^2 !!!сразу перейдем к 32-битному регистру ; mov bx,ax ;bx = b^2 mov ebx, eax ;ebx = b^2 mov al,c ;al = c cbw ;ax = c ; cwd ;dx:ax = c !!!надо cwde, тогда eax = c cwde ;eax = c !!! mov ecx,eax ;ecx = c !!!при cwd старшее слово eax - неопределено imul ecx ;edx:eax = c^2 mov ecx,eax ;ecx = c^2 mov al,a ;al = a cbw ;ax = a ; cwd ;dx:ax = a !!!надо cwde, тогда eax = c cwde ;eax = a !!! ; mov eax,ecx ; !!!убрать! затирается а mov edi, eax ; !!!надо сохранить imul eax ;eax = a^2 ; imul eax ;eax = a^4 !!!а надо a^3 imul eax, edi ;eax = a^3 ; mov eax,ecx ; !!!убрать! затирается а^3 ; sub ax,bx ;ax = a^3 - b^2 !!!лучше ранее сразу сохранять в ebx ; cwd ;dx:ax = b^2 !!!надо cwde, тогда eax = b^2 sub eax, ebx ;eax = a^3-b^2 !!!лучше так cdq ;edx:eax = a^3-b^2 idiv ecx ;eax = edx:eax / ecx mov ax,4c00h int 21h end start Можно было написать, например, так:
Код : ;y=(a^3 - b^2)/c^2 .model small .stack 100h .data a db 15 b db 7 c db 3 .386 .code start: mov ax,@data mov ds,ax movsx eax, c imul eax, eax mov ecx, eax movsx eax, b imul eax, eax mov ebx, eax movsx eax, a mov edi, eax imul eax, edi imul eax, edi sub eax, ebx cdq idiv ecx mov ax,4c00h int 21h end start  | Консультировал: Лысков Игорь Витальевич (Старший модератор) Дата отправки: 04.06.2012, 02:08 5 нет комментария ----- Дата оценки: 04.06.2012, 10:59 | Рейтинг ответа: 0 |
Оценить выпуск | Задать вопрос экспертам главная страница | стать участником | получить консультацию техническая поддержка | восстановить логин/пароль Дорогой читатель! Команда портала RFPRO.RU благодарит Вас за то, что Вы пользуетесь нашими услугами. Вы только что прочли очередной выпуск рассылки. Мы старались. Пожалуйста, оцените его. Если совет помог Вам, если Вам понравился ответ, Вы можете поблагодарить автора - для этого в каждом ответе есть специальные ссылки. Вы можете оставить отзыв о работе портале. Нам очень важно знать Ваше мнение. Вы можете поближе познакомиться с жизнью портала, посетив наш форум, почитав журнал, который издают наши эксперты. Если у Вас есть желание помочь людям, поделиться своими знаниями, Вы можете зарегистрироваться экспертом. Заходите - у нас интересно! МЫ РАБОТАЕМ ДЛЯ ВАС! |
Комментариев нет:
Отправить комментарий