Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите плиз сделать развлетвления. Проблема с выводом значений 
:(
    Опции темы
Clockgen
Дата 18.12.2008, 18:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 16.12.2008

Репутация: нет
Всего: нет



Люди помогите написать программу развлетвлений,просто совсем не получается,не выводятся значения для B,для А и Х все нормально:
Вот задание:

     (C-N)в квадрате  
X=----------------------------
  (Nквадрат-Cквадрат)/2  


A={X_квадрат+C если -4<=X<12  
    {С_квадрат*X+N в остальных случаях 

B={2A,если A+X_квадрат>3  
   {A-1 если A+X_квадрат=3  
   {3*A,если A+X_квадрат<3  

C,N-вводятся с клавиатуры

Вот собственно код для перевода чисел из аскии в двоичный(обязательно)и обратно.А также программа для вычисления Х и нахождения условия по А,для В,еще раз повторяюсь не работает.
Код

title    prcod
sgcod    SEGMENT PARA  'code'
    ASSUME  CS: sgcod, DS: sgdata, SS: sgstek, ES: nothing
    org    100h
begin    proc    near

;--------------------------Ochistka ekrana i vvod
    mov    ax,0600h
    mov    bh,07
    mov    cx,0000
    mov    dx,184fh
    int    10h

    mov    ah,02
    mov    bh,00
    mov    dh,01
    mov    dl,49
    int    10h

    mov    ah,0ah
    lea    dx,vvod
    int    21h

    call    asciibin
    mov    ax,binv
    mov    c,ax

    mov    ah,02
    mov    bh,00
    mov    dh,04
    mov    dl,49
    int    10h

    mov    ah,0ah
    lea    dx,vvod
    int    21h

    call    asciibin
    mov    ax,binv
    mov    n,ax

;----------------------------------Vichislenie X

    mov ax,n
    mul ax
    mov b1,ax
    mov ax,c
    mul ax
    mov b2,ax
    mov bx,2
    xor ax,ax
    mov ax,b1
    sub ax,b2
    div bx
    mov b4,ax
    mov ax,c
    sub ax,n
    mul ax
    xor dx,dx
    div b4
    mov b5,ax
    xor ax,ax
    mov ax,b5
    mov x,ax

    mov    binv,ax
    call    binascii

    mov    ah,02
    mov    bh,00
    mov    dh,10
    mov    dl,20
    int    10h

    mov    ah,09
    lea    dx,strokaviv0
    int    21h

    mov    ah,02
    mov    bh,00
    mov    dh,10
    mov    dl,49
    int    10h

    mov    ah,09
    lea    dx,ascii
    int    21h

    mov    ah,00
    int    16h

;---------------------------------Sravnenie po A Uslovie 1



    xor    bx,bx
        xor    ax,ax
    mov    ax,x
        mov     bx,-4
    cmp     bx,x
    jle    m1
        jnle    m3

m1:
    xor    bx,bx
    mov    bx,12
    cmp    x,bx
    jl    m2
    jnl    m3
m2:
    mul    x
    add    ax,c
m3:
    mov    x,ax

;-------------------------Sravnenie po A Uslovie 2

    xor    bx,bx
        xor    ax,ax
    mov    ax,x
    mov    bx,-4
        cmp    bx,x
    jge    m4
    jnge    m6
m4:
    xor    bx,bx
    mov    ax,ax
    mov    bx,12
    cmp    bx,x
        jg    m5
    jng    m6
m5:
        xor    ax,ax
    mov    ax,c
    mul    ax
    mul    x
    add    ax,n
    mov    a,ax
m6:
        mov    x,ax

;--------------------------Vivod na ekran X,A

    mov    binv,ax
    call    binascii

    mov    ah,02
    mov    bh,00
    mov    dh,12
    mov    dl,20
    int    10h

    mov    ah,09
    lea    dx,strokaviv1
    int    21h

    mov    ah,02
    mov    bh,00
    mov    dh,12
    mov    dl,49
    int    10h

    mov    ah,09
    lea    dx,ascii
    int    21h

        mov    ah,00
    int    16h

;----------------------------Uslovie po B nomer 1



;----------------------------Uslovie po B nomer 2



;----------------------------Uslovie po B nomer 3


;-------------------------Vivod na ekran B

    mov    binv,ax
    call    binascii

    mov    ah,02
    mov    bh,00
    mov    dh,14
    mov    dl,20
    int    10h

    mov    ah,09
    lea    dx,strokaviv2
    int    21h

    mov    ah,02
    mov    bh,00
    mov    dh,14
    mov    dl,49
    int    10h

    mov    ah,09
    lea    dx,ascii
    int    21h

        mov    ah,00
    int    16h


    int    20h
    ret


begin    endp

;--------------------------------Podprogrammy

asciibin    proc    near
    mov    binv,0
    mov    mul10,1
    mov    cx,0010
    lea    si,numb-1
    xor    bx,bx
    mov    bl,real
b20:    mov    al,[si+bx]
    and    ax,000fh
    mul    mul10
    add    binv,ax
    mov    ax,mul10
    mul    cx
    mov    mul10,ax
    dec    bx
    jnz    b20
    ret
asciibin    endp

binascii    proc    near
    mov    cx,0010
    lea    si,ascii-1
    mov    bx,3
    mov    ax,binv
c20:    cmp    ax,0010
    jb    c30
    xor    dx,dx
    div    cx
    or    dl,30h
    mov    [si+bx],dl
    dec    bx
    jmp    c20
c30:    or    al,30h
    mov    [si+bx],al
    ret
binascii    endp
binv    dw    0
mul10    dw    1
ascii    db    4 dup(' '),'$'
c    dw    0
n    dw    0
a    dw    0
b    dw    0
b1    dw    0
b2    dw    0
b3    dw    0
b4    dw    0
b5    dw    0
b6    dw    0
x    dw    0
x1    db    4 dup(' '),'$'
vvod    label    byte
max    db    4
real    db    ?
numb    db    4 dup(' ')
strokaviv0    db    'X:','$'
strokaviv1    db    'A:','$'
strokaviv2    db    'B:','$'
sgcod    ends
    end    begin


PM MAIL   Вверх
Mikl_
Дата 19.12.2008, 05:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 537
Регистрация: 9.11.2007

Репутация: 8
Всего: 14



Clockgen, 
Для получения ответа обязательно укажи название своего ВУЗа и факультета -- это мне необходимо для статистики
Для вычисления X стоило вспомнить алгебру
X=(C-N)²/((N²-C²)/2)=2(N-C)(N-C)/((N-C)(N+C))=2(N-C)/(N+C)
Код

; вычисляем X
xor dx,dx; в dx ноль -- потребуется для деления
mov ax,N
mov bx,ax
sub ax,C1; в ассемблере С это зарезервированное слово поэтому переименую С в С1 ax=N-C
shl ax,1; ax=2(N-C)
adc dx,0; если вышли за пределы 16 разрядов -- корректируем dx
add bx,C1
idiv bx
mov X,ax
если -4<=X<12 тогда A=X²+C иначе A=C²X+N
Код
     mov ax,X
    cmp X,-4
     jb a1; если X<-4
     cmp X,12
     jae a1; если X>12
     imul X;    dx:ax=X²
     add ax,C1;   dx:ax=X²+C  
     jmp a2
a1: imul C1 ;dx:ax=X*C
       imul C1 ;dx:ax=C²X
       add ax,N ;dx:ax=C²X+N
a2:  adc dx,0 ;если вышли за пределы 16 разрядов -- корректируем dx
       mov word ptr A,ax
       mov word ptr A+2,dx
если A+X²>3 тогда B=2A иначе если A+X²=3 тогда B=A-1 иначе B=3A
Код
     mov ax,X
     imul ax;    dx:ax=X²
       add ax,word ptr A
       adc dx,word ptr A+2; dx:ax=A+X²
       cmp dx,0
       jg a3; если dx больше нуля тогда всё число в dx:ax больше 65536 и нет смысла проверять больше ли оно 3
       cmp ax,3
       ja a3
       je a4
       mov ax,word ptr A
       mov bx,3
       imul bx
       mov word ptr B,ax
       mov word ptr B+2,dx 
       jmp a5
a4: mov ax,word ptr A
       dec ax
       mov word ptr B,ax
       mov word ptr B+2,0
       jmp a5
a3: mov dx,word ptr A+2
       shl dx,1
       mov ax,word ptr A
       shl ax,1
       adc dx,0
       mov word ptr B+2,dx
       mov word ptr B,ax
a5:  ...
 там, где у тебя данные, размерность A и B предусмотрена в 2 раза больше
Код
С1    dw    0
N    dw    0
A    dd    0
B    dd    0


Это сообщение отредактировал(а) Mikl_ - 19.12.2008, 06:11
PM MAIL   Вверх
Clockgen
Дата 19.12.2008, 18:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 16.12.2008

Репутация: нет
Всего: нет



Спасибо огромное,Я учусь в колледже МГКИЭТ,для вашей статистики на отделении ПМ.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Asm для начинающих"
MAKCim
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой КОД.
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim.

 
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Asm для начинающих | Следующая тема »


 




[ Время генерации скрипта: 0.0603 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.