• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о проекте и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Ассемблер. Срочно нужна помощь

  • Автор темы Автор темы Fasmon
  • Дата начала Дата начала

Fasmon

Новые
Регистрация
9 Июн 2011
Сообщения
14
Реакции
0
Баллы
0
Ассемблер. Срочно нужна помощь

Нужно сделать вывод результата на экран (в окне отдельном) в ассемблере (сам код написан и работает). У самого идеи кончились. Постоянно ошибки какие-то лезут...
Помощь нужна срочно.

Код:
.386
.model flat,stdcall
option casemap:none



_DATA SEGMENT
consA equ 1574 ;626h
consB equ 432 ;1B0h
consC equ 1632 ;660dh
consD equ 1835 ;72Bh

consx1 equ 586; 24Ah
consx2 equ 649; 289h
consx3 equ 934; 3A6h

mul_rez_l dw 0
mul_rez_h  dw 0
mul_rez_c dw 0

carry dw 0
_DATA ENDS

CSEG SEGMENT
_Begin:
    xor eax,eax
    xor ebx,ebx
    xor edx,edx
    
firstx:
    mov ax,consx1 ; 
    add ax,consA
    sub ax,consB
    mov bx,consC
    mul bx ;результат dx:ax
    mov bx,consD
    div bx ; делим результат предыдущих операций  dx:ax на bx  частное ax, остаток dx

    xor eax,eax
    xor ebx,ebx
    xor edx,edx
    

secondx:
    mov ax,consx2 ; 
    add ax,consA
    sub ax,consB
    mov bx,consC
    mul bx ;результат dx:ax
    mov bx,consD
    div bx ; делим результат предыдущих операций  dx:ax на bx  частное ax, остаток dx

    xor eax,eax
    xor ebx,ebx
    xor edx,edx

thirdx:
    mov ax,consx3 ; 
    add ax,consA
    sub ax,consB
    mov bx,consC
    mul bx ;результат dx:ax
    mov bx,consD
    div bx ; делим результат предыдущих операций  dx:ax на bx  частное ax, остаток dx

    xor eax,eax
    xor ebx,ebx
    xor edx,edx

    
y1:
    ;вычислим 12*x1^2 + 7x1 - 16
    ;x^2
    mov ax,consx1
    mov bx,ax
    mul bx
    jnc no_carry_x1_2
    mov mul_rez_h,dx
no_carry_x1_2:
    mov mul_rez_l,ax
    
    ;12* x^2
    xor dx,dx
    mov bx,12 ; 0Ch
    mul bx
    mov carry, dx
    mov mul_rez_l,ax

    xor dx,dx
    mov ax,mul_rez_h
    mul bx
    add ax,carry
    adc dx,0
    mov mul_rez_h,ax
    mov mul_rez_c,dx   

    ;7x1
    xor dx,dx
        mov ax,consx1
        mov bx,7
        mul bx ; - результат dx:ax

    ;12*x1^2 + 7x1
    add ax,mul_rez_l
        adc dx,mul_rez_h
        adc mul_rez_c,0
    
    ;...-16
        mov bx,16 ; 10h
    sub ax, bx
        jnc no_carry_sub
    neg ax
no_carry_sub:
        sbb dx,0
        jnc no_carry_sub2
        neg dx
no_carry_sub2:
        sbb mul_rez_c,0
    ret

CSEG ends



end _Begin

Благодарю заранее всех отозвавшихся.
 
Назад
Сверху