@Muriam

Где в отладчике отображается, что в этой программе максимальный элемент массива равен 9?

Есть код программы. Она правильно вычисляет максимальный элемент массива, который должен быть = 9.
Но при отладке в TASM, я не понимаю где это значение 9 записано

TITLE Program3		;название программы
.MODEL small		        ;отводим под стек и под данные по 64Кб
.STACK 100h			;отмечаем начало сегмента стека
.DATA				;отмечаем начало сегмента данных
A DW 5, 3, 9, 4, 5	        ;описание массива из 5 элементов
Max DW 0			;описание переменной Max
.CODE				;отмечаем начало сегмента кодов

main PROC
mov AX, @data		;копируем адрес
mov DS, AX			;сегмента данных
mov SI, OFFSET A	        ;заносим в SI начало массива А
mov CX, 4			;в СХ заносим количество итераций
cld					;устанавливаем прямой порядок обработки массива
mov AX, [SI]
mov Max, AX			;в Мах заносим первый элемент массива

L1:					
inc SI				;сдвигаемся по массиву к следующему
inc SI				;элементу
mov AX,[SI]			;заносим в АХ текущий элемент массива
cmp AX, Max			;сравниваем АХ с Мах
jbe L2				;если меньше или равно, переходим на L2
mov Max, AX			;иначе запоминаем новый максимум

L2:					
loop L1				;циклически повторяем все действия

mov AX,4C00h		        ;выход
int 21h				;из программы
main ENDP
END main


мой Результат отладки:
5c68246708a3d073253233.png

Результат отладки. который должен получиться. но у меня почему он не получается?
5c6825baa5ce5632002143.png
  • Вопрос задан
  • 147 просмотров
Решения вопроса 1
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
Почему у меня при отладке (картинка 1), и при чужой отладке (картинка 2) в сегменте, внизу, где четыре строки es, значения совершенно отличаются, хотя это отладка одной и той же программы?

Мария, потому что память заполнена по большому счёту мусором. es в твоей программе не инициализирован, непонятно зачем ты на него смотришь. Надо смотреть на ds. В твоём отладчике Max находится по адресу 57ef:000a
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы