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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.11.2015, 23:33   #1
artur4ek94
Пользователь
 
Регистрация: 11.11.2015
Сообщений: 11
По умолчанию Реализация разветвленного алгоритма на Ассемблере

Доброго времени суток!
Помогите объединить 2 куска кода в один. В первом реализовано ввод целого числа, его проверку на корректный ввод, и вывод на экран. А второй - это код решающий систему уравнений из вложений. Как мне объединить эти два кода в один? Чтобы в зависимости от введенного "Х" решалось соответственное уравнение.
1-й кусок кода:
Код:
 STSEG SEGMENT PARA STACK "STACK"
      DB 64 DUP(00h)
    STSEG ENDS
 
    DSEG SEGMENT PARA PUBLIC "DATA"
      OUT_MESS db 'Enter an integer number (from -9999 to 9999): ', '$'
      ERROR DB 10,"Wrong input, you should enter an integer number from -9999 to 9999!!!",10,13,'$'
      OUT_MES DB 10,"Your entered number = ",'$'
      REP_MES DB 10,13,"If you want to repeat, press 'y' or any key...",10,13,'$'
      IN_NUMB DB 6,'*',6 DUP('?') 
      SHIFT DB 0
      TEN DW 1
      NUMBER DW 00h
    DSEG ENDS 
 
    CSEG SEGMENT PARA PUBLIC "CODE"
 
    MAIN PROC FAR
      ASSUME SS:STSEG, CS:CSEG, DS:DSEG
 
      PUSH DS 
      XOR AX,AX
      PUSH AX
      MOV AX,DSEG 
      MOV DS,AX
 
START:    MOV AL,6
      MOV IN_NUMB,AL
    
      LEA DX,OUT_MESS 
      MOV AH,09H
      INT 21H       
 
      LEA DX,IN_NUMB
      MOV AH,0AH
      INT 21H
 
      CALL P_STR 
        
      CMP CX,00h    ;this
      JE ERR_IN 
            
      LEA DX,OUT_MES
      MOV AH,09H
      INT 21H
 
      CALL OUT_STR
      
ERR_IN:   MOV AL,2       
      MOV IN_NUMB,AL 
 
      LEA DX,REP_MES 
      MOV AH,09h     
      INT 21h
        
      LEA DX,IN_NUMB
      MOV AH,0AH
      INT 21H
     
      CMP IN_NUMB+2,'Y' 
      JE START
      CMP IN_NUMB+2,'y' 
      JE START
 
      RET
    MAIN ENDP  
 
    P_STR PROC NEAR 
    
      LEA BX,IN_NUMB   
      MOV AL,'-'       
      CMP AL,IN_NUMB+2 
      JE RI_ZN     
      MOV AL,'+'       
      CMP AL,IN_NUMB+2 
      JE RI_ZN     
      MOV AL,30h       
      CMP AL,IN_NUMB+2 
      JE RInp      
      
      MOV AL,00h       
      CMP AL,[IN_NUMB+1]
      JE INC_INP        
      
      MOV DL,05H       
      CMP IN_NUMB+1,DL 
      JB RInp      
 
      JMP NO_ST    
 
RInp: 
      
 
      MOV AL,02h       
              
      MOV SHIFT,AL
      JMP GO_1_SYM
 
RI_ZN:    MOV AL,03h       
               
      MOV SHIFT,AL
      MOV AL,-1h       
      ADD IN_NUMB+1,AL 
      
GO_1_SYM: XOR CX,CX    
      XOR DX,DX
      XOR AX,AX
      
      MOV AL,SHIFT     
      ADD BX,AX       
 
      MOV AL,[BX]      
CYCLE:    ADD AL,-30H      
      JS INC_INP       
      CMP AL,09h       
      JG INC_INP       
      PUSH AX      
      INC BX       
      MOV AL,[BX]      
      CMP AL,0Dh      
      JNE CYCLE    
 
      XOR AX,AX
 
      INC AX
      MOV CL,IN_NUMB+1 
      MOV NUMBER,DX    
TO_NUMB:  MOV TEN,AX       
      POP BX       
      MUL BX       
      ADD NUMBER,AX    
      MOV AX,10    
      MUL TEN      
      LOOP TO_NUMB     
      MOV CX,01h       
      MOV DL,IN_NUMB+2 
      CMP DL,'-'
      JNE P_END    
      MOV AX, NUMBER   
      NEG AX       
      MOV NUMBER, AX
      
 
P_END:    RET 
INC_INP:    
            
      XOR DX,DX   
      LEA AX,IN_NUMB 
      MOV DL,SHIFT
      SUB BX,DX  
      SUB BX,AX  
      JZ NO_ST       
 
      MOV CX,BX  
IS_ST:    POP BX     
      LOOP IS_ST
NO_ST:    
      LEA DX,ERROR   
      MOV AH,09H
      INT 21H
      MOV CX,00h     
 
      RET
    P_STR ENDP
    
    OUT_STR PROC NEAR
    
      MOV AX,NUMBER
      CMP AX,00h
      JGE DOD
      NEG AX    
            
            
      MOV NUMBER,AX
      MOV AH,02h    
      MOV DX,'-'
      INT 21h
DOD:      XOR DX,DX
      XOR CX,CX
      MOV BX,0Ah
      MOV AX,NUMBER 
OUT_SYM:  IDIV BX   
      ADD DX,30h    
      PUSH DX   
      INC CX    
      XOR DX,DX 
      CMP AX,00h    
      JNE OUT_SYM   
      
      MOV AH,02h    
OUT_S:    POP DX    
      INT 21h   
      LOOP OUT_S    
        
      RET
    OUT_STR ENDP
 
    CSEG ENDS
             END MAIN
И 2-й кусок:
Код:
mov eax,x
cmp eax,-1
jl v1
jg v2
xor eax,eax
jmp v3
v1: dec eax
jmp v3
v2:
lea ecx,[eax*2+1]
mov eax,x
sal eax,1
imul eax
mov ebx,eax
mov eax,x
imul x
imul x
add eax,ebx
add eax,11
cdq
idiv ecx
v3: mov z,eax
Изображения
Тип файла: png Снимок.PNG (9.5 Кб, 13 просмотров)
artur4ek94 вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Реализация алгоритма задачи serfingist Фриланс 2 28.11.2013 14:58
Реализация алгоритма масштабирования DENIS_POLOTSK C# (си шарп) 6 01.06.2012 20:01
Реализация Алгоритма Хаффмана Iren1993 Паскаль, Turbo Pascal, PascalABC.NET 1 22.05.2012 21:26
реализация циклического алгоритма С++ tracer Помощь студентам 5 12.05.2011 20:15
Реализация цикличного алгоритма С++ zpMirtzp Помощь студентам 3 12.05.2011 13:34