Хостинг портала RFpro.ru: Московский хостер Профессиональный ХОСТИНГ на базе Linux x64 и Windows x64 РАССЫЛКИ ПОРТАЛА RFPRO.RU Лучшие эксперты по данной тематике Номер выпуска: | 1500 | Дата выхода: | 25.12.2011, 16:00 | Администратор рассылки: | Лысков Игорь Витальевич (Старший модератор) | Подписчиков / экспертов: | 181 / 63 | Вопросов / ответов: | 1 / 2 | Консультация # 184874: Здравствуйте, уважаемые эксперты! Прошу вас ответить на следующий вопрос: Дали в институте задание,запрограммировать уравнение x=5y+6 на Ассемблере...Сам вообще ничего не понимаю т.к гуманитарий Решите пожалуйста с максимально понятным пояснением.... Консультация # 184874: Здравствуйте, уважаемые эксперты! Прошу вас ответить на следующий вопрос: Дали в институте задание,запрограммировать уравнение x=5y+6 на Ассемблере...Сам вообще ничего не понимаю т.к гуманитарий Решите пожалуйста с максимально понятным пояснением. Дата отправки: 20.12.2011, 15:44 Вопрос задал: Посетитель - 383792 (Посетитель) Всего ответов: 2 Страница онлайн-консультации » Консультирует Andriana (2-й класс): Здравствуйте, Посетитель - 383792! вопрос поставлен как то как я поняла написать программу которая запрашивает значение у и при этом решает уравнение находя х (нужно ли строить график решения уравнения? программа под DOS или Windows?) ниже программа с пояснениями на FASM под DOS
Код : use16 ;program for DOS org 100h;program by COM file jmp start_of_code;to begin ;-------------;message to display---------------------------------------------- string db ' Programma test reshenie uravneniay x=5y+6 (ECS output) ',13,10,0 messag db ' Vvedite znachenie y ',13,10,0 fots db ' Ispolzuyte tolko chisla ',13,10,0 zeroes db ' y=0 x=6 ',13,10,0 onees db ' y=1 x=11 ',13,10,0 deuxx db ' y=2 x=16',13,10,0 troi db ' y=3 x=21 ',13,10,0 quaatre db 'y=4 x=26 ',13,10,0 ciinq db ' y=5 x=31 ',13,10,0 sixx db 'y=6 x=36 ',13,10,0 sevenn db ' y=7 x=41 ',13,10,0 huits db 'y=8 x=46 ',13,10,0 neufes db 'y=9 x=51',13,10,0 oldmode db 0;back to display old stre db 0; ;-------------routine of the conclusion of the message on screen--------------- outstring: pushad pushf push ax ;storing regitry- push si ;before beginning action pushf ;store flags CPU before beginning action OutStringLoop: lodsb ;load a byte from string into AL with - or al,al ;the contents of the address pointer to by SI jz .OutStringExit;out from routine if no letters in line mov ah,0eh ;output to screen by byte int 10h ;-- jmp .OutStringLoop;looping all letters OutStringExit: popf ;return flags from stack pop si ;return register from stack pop ax ;-- popf popad ret ;end of the routine and output- ;on following line in program ;---------------start of body program----------------------------------------- ;*************************************************************************************** start_of_code: push cs ;cod segment to data segment pop ds ;-- mov ah,0fh ;function for store old display int 10h ;-- mov [oldmode],al ;data of old display to oldmode mov si,string ;load simbols to si register call outstring ;call routine for displaying text simbols from si mov si,messag ;load simbols to si register call outstring ;call routine for displaying text simbols from si aa1: xor ax,ax ;wait to press keyboard int 16h ;-- cmp al,27 ;if press ESC je sof ;to exit cmp al,48 ;0 je ziro cmp al,49 ;1 je ones cmp al,50 ;2 je deux cmp al,51 ;3 je trois cmp al,52 ;4 je quatre cmp al,53 ;5 je cinq cmp al,54 ;6 je six cmp al,55 ;7 je seven cmp al,56 ;8 je huit cmp al,57 ;9 je neuf ; for printing diferents messages erro: mov si,fots ;load simbols to si register call outstring ;call routine for displaying text simbols from si jmp aa1 ziro: mov si, zeroes call outstring jmp aa1 ones: mov si, onees call outstring jmp aa1 deux: mov si,deuxx call outstring jmp aa1 trois: mov si, troi call outstring jmp aa1 quatre: mov si, quaatre call outstring jmp aa1 cinq: mov si, ciinq call outstring jmp aa1 six: mov si, sixx call outstring jmp aa1 seven: mov si, sevenn call outstring jmp aa1 huit: mov si, huits call outstring jmp aa1 neuf: mov si, neufes call outstring jmp aa1 ;exit from program if press ESC into keyboard sof: mov al,[oldmode] ;return old mode for load mov ah,00h ;back to old display by store int 10h ;-- mov ah,4ch ;------- int 21h ;exit to dos ;******************************************************************************* ;----------------END OF PROGRAM----------------------------------------------- * ;******************************************************************************* Консультирует Лысков Игорь Витальевич (Старший модератор): Здравствуйте, Посетитель - 383792! Вот Вам очень простая программа, написана под Tasm. Программа берет число из переменной y в сегменте данных, считает и записывает результат в переменную x. Результат работы можно увидеть только в отладчике. Программа призвана только "запрограммировать уравнение x=5y+6 на Ассемблере" Т.е. показано, как можно посчитать x, используя данное выражение.
Код : model .small data y dw 23 ;число y x dw ? ;результат расчета code start: mov ax,@data ;инициируем сегментный регистр данных mov ds,ax mov ax,5 ; ax = 5 mul y ; ax = y*5 add ax,6 ; ax = y*5+6 mov x,ax ; x = y*5+6 mov ax,4c00h ;конец работы int 21h end start
Оценить выпуск | Задать вопрос экспертам главная страница | стать участником | получить консультацию техническая поддержка | восстановить логин/пароль Дорогой читатель! Команда портала RFPRO.RU благодарит Вас за то, что Вы пользуетесь нашими услугами. Вы только что прочли очередной выпуск рассылки. Мы старались. Пожалуйста, оцените его. Если совет помог Вам, если Вам понравился ответ, Вы можете поблагодарить автора - для этого в каждом ответе есть специальные ссылки. Вы можете оставить отзыв о работе портале. Нам очень важно знать Ваше мнение. Вы можете поближе познакомиться с жизнью портала, посетив наш форум, почитав журнал, который издают наши эксперты. Если у Вас есть желание помочь людям, поделиться своими знаниями, Вы можете зарегистрироваться экспертом. Заходите - у нас интересно! МЫ РАБОТАЕМ ДЛЯ ВАС! |
Комментариев нет:
Отправить комментарий