Форум программистов, компьютерный форум, киберфорум
Assembler для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
1 / 1 / 0
Регистрация: 03.04.2012
Сообщений: 30
1

Разобрать функционал приведенного кода

08.10.2012, 20:21. Показов 710. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Привет! Есть вот такая вот часть кода, которую никак не могу разобрать:
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
STK SEGMENT STACK
   DW 64 DUP (?)
STK ENDS
CODE SEGMENT PUBLIC
 
   ASSUME CS:CODE
START PROC FAR
   ; НАЧАЛО ЭТОГО КОДА
   PUSH DS;
   MOV AX, 0;
   PUSH AX
   CLD;
   MOV AX, CS;
   MOV DS, AX;
   ; КОНЕЦ ЭТОГО КОДА
   ASSUME DS:CODE
   LEA DX, MESSAGE
   MOVAH, 9H
   INT 21H
   RET
MESSAGE db 'Hello...xxxxxxx.',10,13,'$'
START ENDP
CODE ENDS
   END START
До этого и после этого участка есть ещё код, и если нужно будет, могу его дописать сюда.
С программированием вот таких вот как сейчас никогда проблем не было (что бы аж вообще не понятно), ну вот с ассемблером никак не получается. Я понимаю, что там кладем в стек, там присваиваем что-то чему-то, но вот смысла всего этого не пойму. Заранее благодарю за объяснения!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.10.2012, 20:21
Ответы с готовыми решениями:

Разобрать код и объяснить его функционал
data A ds B ds R ds CT1 ds CH ds CT2 ds code:...

Убрать из приведенного кода макросы
У меня такая программа ; Задание: ;посчитать количество цифр в файле и вывести на экран...

Реализовать на ассемблере эквивалент приведенного кода
Реализовать на встроенном ассемблере для 32-х разрядных исполнительных адресов эквивалент...

Составить dat1 segment для приведенного кода
Нужно просто составить dat1 segment для программы ниже. И все. Буду очень признателен. mov ax,bx...

4
3462 / 2473 / 695
Регистрация: 02.08.2011
Сообщений: 6,704
08.10.2012, 20:31 2
добавь контекст, пожалуйста. что-нибудь еще

Добавлено через 6 минут
6, 7 строки - адрес сегмента кода закидываем в DS.Чтобы не потерять первоначальное значение, сохраняем DS в стек. (строка 2)

3,4 - инициализация регистра ax нулем. Чтобы не потерять ноль, также запоминаем в стеке.

5 - думаю у тебя там работа со строками ( ds:si,es:di). В сторону возрастания адресов.
1
1 / 1 / 0
Регистрация: 03.04.2012
Сообщений: 30
08.10.2012, 20:54  [ТС] 3
Цитата Сообщение от IamRain Посмотреть сообщение
добавь контекст, пожалуйста. что-нибудь еще
Отредактировал. Вот программа выводит текст, а препод спросил про ту часть кода, которую я выделил комментариями. Что она делает?

Добавлено через 23 минуты
Цитата Сообщение от IamRain Посмотреть сообщение
добавь контекст, пожалуйста. что-нибудь еще

Добавлено через 6 минут
6, 7 строки - адрес сегмента кода закидываем в DS.Чтобы не потерять первоначальное значение, сохраняем DS в стек. (строка 2)

3,4 - инициализация регистра ax нулем. Чтобы не потерять ноль, также запоминаем в стеке.

5 - думаю у тебя там работа со строками ( ds:si,es:di). В сторону возрастания адресов.
1. А почему нельзя написать вместо этого:
Assembler
1
2
MOV AX, CS;
MOV DS, AX;
вот это например:
Assembler
1
MOV DS, CS;
2. Зачем мы кладем в стек, если потом ничего не забираем от туда?
3. Для чего ax инициализируем нулем?

Буду очень благодарен, если ответите на эти вопросы!
0
3462 / 2473 / 695
Регистрация: 02.08.2011
Сообщений: 6,704
08.10.2012, 21:12 4
Нельзя:
1. Копировать напрямую из сегментного регистра в сегментный, поэтому вначале в ax.
2. Копировать из ячейки памяти в ячейку памяти. опять же через регистры общего назнач.
3. Еще что-то нельзя не помню уже )

Добавлено через 3 минуты
1.Возможно, потом и заберешь из стека, это типа на всякий случай. Стек и нужен для этого
2. Инициализация: ну думаю, так положено.
1
1 / 1 / 0
Регистрация: 03.04.2012
Сообщений: 30
08.10.2012, 21:43  [ТС] 5
Спасибо! Дня два искал эти ответы в интернете!)
0
08.10.2012, 21:43
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.10.2012, 21:43
Помогаю со студенческими работами здесь

В каких строках приведённого кода выполняется рисование логотипа программы
Какая строка из кода, который я закрепил, выполняет отрисовку логотипа программы как на картинке...

Разобрать приведенную строку кода
Привет парни у меня вот вопрос что делает вот эта строчка в коде mov es:.rh5_return,al...

Сложносочинённые команды. Разобрать и объяснить три строки кода
Здравствуйте уважаемые. Столкнулся в FASM с таким конструктором. sub al,((3Eh shl...

Проверка корректности и оптимальности приведенного кода
я начинаю пробовать программировать на ассемблере. вот попробовал написать что-то в fasm..чето не...

Разобрать часть кода
Помогите плиз просто разобрать часть кода, что он делает: find_str struc ...

Разобрать блок приведенного кода
Есть код: Game::Game() : mWindow(sf::VideoMode(640, 480), "SFML Application", sf::Style::Close)...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru