aridtree
 
  
  Junior Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
  Цитата: ;;Z=(X+Y)*J J=1,2...5 :   DATAS SEGMENT 'data'        ;;'classOfSegment'-пишем класс сегмента   X DW 3    Y DW 6    J DW ?    I DW 0,0,0,0,0,0,0,0,0,0    DATAS ENDS    CODES     SEGMENT 'code'    ;;'classOfSegment'       ASSUME CS:CODES,DS:DATAS    PROGRAM:    ;;здесь верно - загрузка прог сегментов     MOV AX,DATAS                      MOV DS,AX      ;;неясно зачем дальнейший код, немного повергает в шок...     MOV CX,10      MOV AX,0      ;;следующая команда значит "если СХ ==0 переходим на метку К." Причём СХ при любом раскладе =10.     JCXZ K   ;;вообще  зачем?)))   A: INC AX      LOOP A      ;;вот до сюда     ;;эквивалент всему этому add AX,10               ;; всё это уже больше похоже на правду     MOV CX,5      MOV J,5      MOV BX,OFFSET I    B: MOV AX,X    ;;складываете два операнда памяти - нельзя     ADD X,Y      MUL J      MOV [BX],AX      ADD BX,2      DEC J      MOV DX,J      CMP J,DX      LOOPZ B      JMP K    K:    mov I,ax    MOV AX,4C00H    INT 21H    CODES ENDS    END PROGRAM     |      В общем оч сложно код подкорректировать.   Видимо Вы имели ввиду под  Цитата:|  мы не так эти програмки пишем  |    использовать полные наименования программных сегментов циклов Loop...   Полупереписал)       Цитата: ;;Z=(x+y)*J J=1...5      DATAS SEGMENT 'data'   X DW 3   Y DW 6    J DB ?   I DW 0,0,0,0,0,0,0,0   DATAS ENDS    CODES     SEGMENT 'code'       ASSUME CS:CODES,DS:DATAS   PROGRAM:      MOV AX,DATAS            ;;загрузка адресса сегмента данных в сегментный регистр     mov DS,AX          mov AX,X                ;; пихаем Х в АХ             AX=X     add AX,Y                ;;прибавляем к Х в АХ У          AX=X+Y          mov CX,5                ;;готовимся к циклу - в СХ кол-во итераций     mov BX,offset I        ;; в ВХ пишем адресс памяти куда ответ писать     mov J,1                ;;J=1()не на всех машинах вроде грузится - мб mov DX,1 mov J,DX     mov [BX],AX            ;; пишем ответ при J=1       next:     mov DX,AX                ;;сохраняем в резерве DX наше значение     inc J                    ;;берём очередное J       mul J                    ;;умножаем наше X+Y на число J    AX=(X+Y)*J     add BX,2                ;;берём след ячейку памяти     mov [BX],AX            ;;и пишем в неё ответ      mov AX,DX                ;;восстанавливаем AX     loop next                ;;идём к следующему J.   ;;на самом деле алгоритм несколько хромает   ;;логичнее было бы на каждое увеличение J просто прибавлять    ;; группу X+Y, так оно быстрее. Не переделывал, дабы решать по примеру и подобию      MOV AX,4C00H   INT 21H    CODES ENDS    END PROGRAM     |       |