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

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

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.02.2015, 16:04   #1
Vanya1529
Новичок
Джуниор
 
Регистрация: 10.04.2014
Сообщений: 1
По умолчанию Значение функции

Нужно написать программу на языке Ассемблера, вычисляющую значение данной функции.
Y=(8x2-101) 2
x [0,7]
Я написал программу, но при делении ошибка
divide error - overflow.
to manually process this error,
change address of INT 0 in interrupt vector table.
Что делать с этим переполнением не понимаю
В ax на момент деления, например если вводишь 2 в начале программы находится 4761 (в дес)
Код:
data segment
    str db "y= (8x^2 - 101) ||  x[0;7]", 0Ah, 0Dh, 0Ah, 0Dh, "Vvedite x: $"     
    otvet db 0Dh, 0Ah, 'Otvet: $'
ends                     
include 'emu8086.inc'
stack segment
    dw   128  dup(0)
ends

code segment
start:

mov ax, data
mov ds, ax
mov es, ax 
xor bx, bx

mov ah, 09h
mov dx, offset str
int 21h 

vvod:
mov ah, 01h
int 21h



    ;Proveriaem X na [0;7]
    cmp ax, 30h
    jl vvod
    cmp ax, 37h
    jng vvod
    
    ;Schitaem firmuly  
    sub al, 30h
    mul ax
    mov bx, 8
    mul bx 
    cmp al, 101 
    jl qqqq 
    sub ax, 101 
    jmp qqqq2 
    
    qqqq: 
    mov bx, 101
    sub bl, al  
    mov ax, bx
    
    qqqq2:
    mul ax 
    call clear_screen
    
    
    ;Chislo v stroky
    xor dx, dx  
    xor cx, cx 
    mov bx, 10 
    convert:
    div bl
    mov dl, ah
    push dx 
    xor ah, ah
    inc cl
    cmp ax, 0
    jne convert
    
    ;Vyvod soobscheniya  "Otvet: "
    mov ah, 09h
    mov dx, offset otvet
    int 21h
    
    ;Vyvod otveta
    mov ah, 02h   
    print:
    pop dx
    int 21h         
    loop print       

    
    
    

mov ax, 4c00h
int 21h  

ends
define_clear_screen

end start
Vanya1529 вне форума Ответить с цитированием
Старый 13.02.2015, 12:34   #2
zhan313
Пользователь
 
Регистрация: 09.12.2011
Сообщений: 44
По умолчанию

Потому, что результат деления 476 > 255 и не может поместиться в байт.
Код:
mov bx,10
xor cx,cx
convert:
xor dx,dx
div bx
push dx
inc cl
cmp ax,0
jne convert
zhan313 вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вычислить значение функции(или функция не определена), значение х вводится с клавиатуры Safok Помощь студентам 2 16.12.2014 08:04
Подсчитать значение функции, значение х вводится с клавиатуры, вычисление f(x) оформить в виде подпрограммы Safok Помощь студентам 0 15.12.2014 17:54
Использование подпрограммы-функции: Вычислить значение функции (Турбо паскаль) RealUnited Паскаль, Turbo Pascal, PascalABC.NET 1 05.12.2012 20:34
Значение функции. Rost93 PHP 2 08.06.2011 18:08
Значение функции Adblock PHP 5 15.01.2011 23:42