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 | |