Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RFpro.ru: Ассемблер? Это просто! Учимся программировать


Хостинг портала RFpro.ru:
Московский хостер
Профессиональный ХОСТИНГ на базе Linux x64 и Windows x64

РАССЫЛКИ ПОРТАЛА RFPRO.RU

Лучшие эксперты по данной тематике

Коцюрбенко Алексей aka Жерар
Статус: Профессор
Рейтинг: 3356
∙ повысить рейтинг »
Boriss
Статус: Академик
Рейтинг: 2581
∙ повысить рейтинг »
Абаянцев Юрий Леонидович aka Ayl
Статус: Профессионал
Рейтинг: 2054
∙ повысить рейтинг »

/ КОМПЬЮТЕРЫ И СОФТ / Программирование / Assembler (Ассемблер)

Номер выпуска:1500
Дата выхода:25.12.2011, 16:00
Администратор рассылки:Лысков Игорь Витальевич (Старший модератор)
Подписчиков / экспертов:181 / 63
Вопросов / ответов:1 / 2

Консультация # 184874: Здравствуйте, уважаемые эксперты! Прошу вас ответить на следующий вопрос: Дали в институте задание,запрограммировать уравнение x=5y+6 на Ассемблере...Сам вообще ничего не понимаю т.к гуманитарий smile Решите пожалуйста с максимально понятным пояснением....


Консультация # 184874:

Здравствуйте, уважаемые эксперты! Прошу вас ответить на следующий вопрос:
Дали в институте задание,запрограммировать уравнение x=5y+6 на Ассемблере...Сам вообще ничего не понимаю т.к гуманитарий smile Решите пожалуйста с максимально понятным пояснением.

Дата отправки: 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----------------------------------------------- *
;*******************************************************************************          

Консультировал: Andriana (2-й класс)
Дата отправки: 21.12.2011, 07:02
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Консультирует Лысков Игорь Витальевич (Старший модератор):

Здравствуйте, Посетитель - 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

Консультировал: Лысков Игорь Витальевич (Старший модератор)
Дата отправки: 25.12.2011, 05:27
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Оценить выпуск | Задать вопрос экспертам

главная страница  |  стать участником  |  получить консультацию
техническая поддержка  |  восстановить логин/пароль

Дорогой читатель!
Команда портала RFPRO.RU благодарит Вас за то, что Вы пользуетесь нашими услугами. Вы только что прочли очередной выпуск рассылки. Мы старались. Пожалуйста, оцените его. Если совет помог Вам, если Вам понравился ответ, Вы можете поблагодарить автора - для этого в каждом ответе есть специальные ссылки. Вы можете оставить отзыв о работе портале. Нам очень важно знать Ваше мнение. Вы можете поближе познакомиться с жизнью портала, посетив наш форум, почитав журнал, который издают наши эксперты. Если у Вас есть желание помочь людям, поделиться своими знаниями, Вы можете зарегистрироваться экспертом. Заходите - у нас интересно!
МЫ РАБОТАЕМ ДЛЯ ВАС!



В избранное