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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.01.2024, 19:56   #1
Sergey_di
Новичок
Джуниор
 
Регистрация: 18.01.2024
Сообщений: 4
По умолчанию Работа с отладчиком Debug

Подскажите по поводу работы с отладчиком Debug. Ниже указанно задание которое необходимо выполнить. Посдкажите хорошую документацию/сайт для выполнения этого задания на русском желательно. Мало что удается найти по работе с debug.

Разработать программу в системном отладчике debug, которая должна
выполнять следующие действия: заполнять диапазона ячеек 120..151 символом “A”; вводить строку “ABCDE” в память с ячейки 152; копировать диапазон ячеек 120..170 в диапазон 210..280; подсчитать количество ассемблерных
команд “INT” в диапазоне ячеек памяти 120..140. Сохранить диапазон ячеек
120..159 в файле PROGRAM.COM.

Также подскажите как сохранить диапазон ячеек 120..159 в файле PROGRAM.COM.
Знаю что используется команда N, но как он сохранит определенный диапазон?

Буду очень благодарен

Последний раз редактировалось Sergey_di; 18.01.2024 в 22:15.
Sergey_di вне форума Ответить с цитированием
Старый 19.01.2024, 11:45   #2
Cuprum5
Форумчанин
 
Регистрация: 09.05.2017
Сообщений: 746
По умолчанию

Какая среда? Какой язык?
Cuprum5 вне форума Ответить с цитированием
Старый 19.01.2024, 11:49   #3
Cuprum5
Форумчанин
 
Регистрация: 09.05.2017
Сообщений: 746
По умолчанию

У Вас что-то все намешано. Ассемблер сложный язык для начинающих, а у Вас и запись в файл и числа нужно по каким-то ячейкам-адресам записать. Вы должны сначала разобраться с простейшим. Посмотрите команды ассмблера и посмотрите команду mov и т.д.
Cuprum5 вне форума Ответить с цитированием
Старый 19.01.2024, 12:36   #4
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,656
По умолчанию

Цитата:
Сообщение от Cuprum5 Посмотреть сообщение
Вы должны сначала разобраться с простейшим.
Я вижу, что ТС - студент, и не он определяет - в чём ему разобраться. Я так понял: задание разобраться с отладчиком, встроенным в ОС - по крайней мере, в ДОС такой был. А он понимает только язык машинных команд.
Я бы рекомендовал - если кто ещё читает бумажные книги - старика Питера Нортона "Справочное руководство по MS-DOS", стр. 294. У меня оно 1992г. Перессказывать содержимое книжки - тупое и нудное дело.
Интересно -в каких кущах выращивают ещё такие древности? Я-то думал: первое, что слышат стьюденята-будущие_программеры: "Класс! Объект!" И услышав эти волшебные слова, старик Хотябыч мастерит в недрах компа исполняемый эхе-шник (как называла его моя коллега)

Последний раз редактировалось digitalis; 19.01.2024 в 12:45.
digitalis вне форума Ответить с цитированием
Старый 19.01.2024, 12:48   #5
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,772
По умолчанию

Цитата:
Сообщение от digitalis Посмотреть сообщение
А он понимает только язык машинных команд.
Комманда a и пишите на асме
p51x вне форума Ответить с цитированием
Старый 19.01.2024, 13:48   #6
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,656
По умолчанию

Нет. Встроенный Debug не понимет мнемоник асма, только - код в hex. 'А' в данном случае - не команда, а символ, которым надо заполнить выделенный массив, и то: её нельзя ввести как 'А', а только как hex-код символа.
-

Последний раз редактировалось digitalis; 19.01.2024 в 14:08.
digitalis вне форума Ответить с цитированием
Старый 19.01.2024, 13:53   #7
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,772
По умолчанию

Цитата:
Сообщение от digitalis Посмотреть сообщение
Нет. Debug не понимет мнемоник, только - код в hex.
Вы серьезно?
https://ru.wikipedia.org/wiki/Debug
Цитата:
-A Преобразования инструкции ассемблера в машинный код. Сокращённо от слова Assemble. -A [Нажать Enter]
1814:0100 MOV AX,0009
1814:0103 [Вводим_Дальше] [Нажать Enter]
https://thestarman.pcministry.com/as...g/debug2.htm#A
и т.д.
Это задача как раз на это...
p51x вне форума Ответить с цитированием
Старый 19.01.2024, 14:08   #8
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,656
По умолчанию

Да. Недочитал я товарища П.Нортона. В глубине его рассказа как раз уже об этом, со стр. 305.
Но в моё оправдание: сам я этим отладчиком никогда не пользовался. Так, для сведения только имел на него в своей бошке "закладку".
Но ТС ожидает, что мимо этой теории ему ещё накидают готовый код. Я - пас.

Последний раз редактировалось digitalis; 19.01.2024 в 14:29.
digitalis вне форума Ответить с цитированием
Старый 19.01.2024, 19:57   #9
ugo
Новичок
Джуниор
 
Регистрация: 19.01.2024
Сообщений: 4
По умолчанию

Цитата:
Сообщение от Sergey_di Посмотреть сообщение
Подскажите по поводу работы с отладчиком Debug. Ниже указанно задание которое необходимо выполнить. Посдкажите хорошую документацию/сайт для выполнения этого задания на русском желательно. Мало что удается найти по работе с debug.

Разработать программу в системном отладчике debug, которая должна
выполнять следующие действия: заполнять диапазона ячеек 120..151 символом “A”; вводить строку “ABCDE” в память с ячейки 152; копировать диапазон ячеек 120..170 в диапазон 210..280; подсчитать количество ассемблерных
команд “INT” в диапазоне ячеек памяти 120..140. Сохранить диапазон ячеек
120..159 в файле PROGRAM.COM.

Также подскажите как сохранить диапазон ячеек 120..159 в файле PROGRAM.COM.
Знаю что используется команда N, но как он сохранит определенный диапазон?

Буду очень благодарен
Привет всем. Решил все-таки, зарегистрироваться и проводить время вместе с вами.
Мне интересен ассемблер и вот что я решил. Часть заданий. Как вводить в программе Debug, как мне кажется можно - разобраться.
Как я делал. Сначал я сделал программу - так удобнее работать с отладчиком (об этом смотрите Gif-анимацию, конечно, я мог бы объяснить подробнее, но на это нужно специально видео обрабатывать, а это сами понимаете - отдельная песня).
Итак. Имеем ассемблерный текст программы состоящий из некоторых частей.
По их примерам попробуйте сделать недостающее, хотя те - вопросы несовсем понятны, как и второй вопрос при вводе строки (я понял так, что нужно ждать
пользователський ввод).
Код:
%TITLE "Test.asm"
; Сборка программы :
; tasm /ml /m2 Test
; tlink /t Test

	IDEAL		; Режим ассемблера
	Model Tiny	; Модель памяти
	CODESEG		; Начало сегмента кода
	org 78h		; 120 начало буфера

szBuf	db 1 dup (?)	; 1 байт
szBuf2	db 1Fh dup (?)	; 31 байт
szOut	db 100h dup (?)	; 256 байт

	org 100h		; 256
Start:
	jmp	Program
szStr	db 'ABCDE',0
szMsg	db 'String found!',10,13,36

proc	Program

; 1) --- Заполнить диапазон ячеек 120..151 символом "A"
	mov	di, offset szBuf2	; Адресация буфера посредством es di.
	mov	cx, 1Fh		; Присвоение размера буфера 31.
	mov	ax, 'A'		; Установка ax в 'A'.
	cld			; Автоувеличение di.
	rep	stosb		; Заполнение буфера символом 'A'.

; 2) --- Вводить строку "ABCDE" в память с ячейки 152

USER_WAIT:		; Ждать пользовательского ввода.
	mov	ah, 11h
	int	16h
	jnz	READ_INPUT
	clc
	jmp	USER_WAIT

READ_INPUT:		; Чтение пользовательского ввода.
	mov	ah, 10h
	int	16h
	cmp	al, 27	; Пользователь нажал клавишу Esc'ape.
	je	Exit	; Перехода на метку Exit. Завершение программы.

; --- Копирование введеного символа в буфер.
	mov	di, offset szOut	; Адресация буфера посредством es di.
	add	di, bx		; Сместиться в буфере на символ влево.
	mov	cx, 1		; Присвоение размера буфера 1.
	cld			; Автоувелечение di.
	rep	stosb		; Заполнить буфер.
	inc	bx		; Увеличить счетчик.
	
	push	di		; Сохранить указатель.
	mov	di, offset szOut	; Строка, введенная пользователем.
	mov	si, offset szStr	; Строка для сравнения.
	mov	cx, 5		; Число символов сравнения.
	repz	cmpsb		; Сравнить.
	pop	di		; Восстановить указатель.
	jz	Found		; Строка найдена, если нуль.
	jmp	USER_WAIT	; Продолжить.
Found:
	mov	ah, 9
	mov	dx, OFFSET szMsg
	int	21h
	mov	ah, 0
	int	16h

; 3) --- Копировать диапазон ячеек 120..170 в диапазон 210..280
	mov	di, OFFSET szOut	; Адресация буфера посредством es di
	mov	cx, 46h		; Присвоение размера буфера 70
	mov	si, OFFSET szBuf	; Входящие данные.
	cld			; Автоувеличение si.
	rep	movsb		; Копировать в буфер.

; 5) --- Сохранить диапазон ячеек 120..159 в файле PROGRAM.COM.

Exit:
	mov	ah, 4Ch	; Выход в Dos,
	int	21h	; завершение программы.
endp	Program

	END	Start	; Конец программы, точка входа.
Вот так нужно вводить в программе Debug:
Код:
Ввод первого задания:
-A 78
0AF4:0078 org 100
0AF4:0100 mov di, 78
0AF4:0103 mov cx, 1F
0AF4:0106 mov ax, 41
0AF4:0109 cld
0AF4:010A rep stosb
0AF4:010C int 20
Запуск программы:
G=78
Анимация
Изображения
Тип файла: jpg Debug1.jpg (24.3 Кб, 1 просмотров)

Последний раз редактировалось ugo; 19.01.2024 в 20:01.
ugo вне форума Ответить с цитированием
Старый 25.01.2024, 01:03   #10
Sergey_di
Новичок
Джуниор
 
Регистрация: 18.01.2024
Сообщений: 4
По умолчанию

Cuprum5, Да согласен что много всего, но такое задание в универсисте. С остальным разобрался. Но вот с сохранением ячеек в диапазоне нет
Sergey_di вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с отладчиком Ramzan_95 C# (си шарп) 2 15.05.2018 13:32
подскажите хорошие и понятные для чайника источники,что бы понять как пользоваться отладчиком в code blocks)) Романннн Помощь студентам 3 21.06.2016 00:27
OpenProcess под отладчиком работает,а без него -нет calypso Win Api 4 21.03.2013 02:53
Работа с отладчиком в Ассемблере. ~VL@D~ Помощь студентам 4 31.03.2011 11:26
Debug.exe Beginer Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 3 31.07.2009 13:55