Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [Assembler] Цикл со счетсчиком


Автор: Lizyna 24.9.2009, 18:53
Написать программу на Ассемблере для вычисления: P+(p+1)+(p+2)+…+(p+n)=(n+1)(2p+n)/2 (при заданном n=7,p=3)
Вычислить в цикле левую сумму. Убедиться в равенстве сторон. Вывести оба значения в разных регистрах (Значение по формуле – в bx, значение суммы - в di).

Автор: dumb 24.9.2009, 22:09
Для домашних заданий, курсовых, существует "Центр Помощи".

Тема перенесена! 

Автор: Xshot1 24.9.2009, 22:27
Код



CSEG segment
org 100h

Begin: 

; -====\\    
; -====  Raschet summi
; -====//

    mov bx,0   ;\\
    mov dx,0   ;  > Obnulim registri navsyakiy sluchay
    mov di,0   ;//
    mov al,3   ;     po zadaniyu p=3, teper "p" u nas v vladshem bite registra AX
    mov cl,8   ;                 n=7, pochemu - 8 dumayu razbereshsya  
    
Summa:
          mov dl,bl ;  \\
          add dl,al ;    \  Sam cikl summirovania
          inc bl    ;    /
          add di,dx ;  //
    loop Summa                   
    
; -====\\    
; -====  Raschet formuli
; -====//

    mov cl,7     ;\\
    mov al,3     ;  vvodim znacheniya peremennih
    mov ch,2     ;//
    mul ch       ; 2*p
    add al,cl    ; (2*p+n)  skladivaem
    inc cl       ;  (n+1), prosto  srazu uvelicheli na 1, mogno bilo comandoy ADD napisat po drugomu
    mul cl       ;  (n+1)*(2*p+n) peremnojili 2 scobki
    
    
    div ch       ;   razdelili na 2
    mov bl,al    ;   sohranili znachenie v BL (BX) po usloviyu zadachi
   
; -====\\    
; -====  Sravnivaem Summ i Formuli
; -====//
                
    cmp bx,di
    jnz Neravni ; esli ne ravni-prigaem na metku Neravni
    mov ah,9                ; esli ravni vivodim soobshenie
    mov dx,offset Mes       ; chto vse OK 
    int 21h   
    
    
 exit:                   ; i pokidaem etot mir
    mov ah,0
    int 16h
    int 20h   
    
   Neravni:      ; nu suda popadem ne v etoy jizni
   jmp exit 
         
 Mes db 'Resultat raven  bx=di=52$'          
           
CSEG ends
end Begin



Если что, сразу говорю что я чайник, но вроде написал правильно, по крайней мере работает,  проверил.  smile 

Автор: Lizyna 25.9.2009, 16:49
 smile спасибки! ДВА  я в унвере с преподом также решила! smile 

Автор: Lizyna 25.9.2009, 19:15
Ребят еще такой вопрос...Если можно канешно: 


Дана матрица 5х5. Найти наименьшее из значений элементов побочной диагонали из двух соседних с ней линий.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)