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

Ассемблер и вывод строк

11.04.2019, 23:46. Показов 522. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Вопрос в следующем: даны два почти полностью схожих участка кода на ассемблере. Изменение одно - расположение строки относительно части кода с выводом этой самой строки. Но при запуске кода, изображённого на первом скрине - пустота, второй же код отрабатывает нормально. Разве может зависеть исполнение от того, где строка объявляется?
Миниатюры
Ассемблер и вывод строк   Ассемблер и вывод строк  
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.04.2019, 23:46
Ответы с готовыми решениями:

Внешний ассемблер для обработки строк
Всем доброго дня! прошу подсказки, или направления движения. Суть, требуется передать в во...

Ассемблер вывод на экран
Вывести на экран AX : mov AX,3 add AX,4

Разбор исходных строк программы ассемблер на поля
Доброго времени суток. Надо разработать программу на си, разбора исходных строк ассемблерной...

Вывод побочной диагонали, ассемблер
Здравствуйте. Столкнулась с такой проблемой: при выполнение кода на ассемблере, выбивает ошибку:...

8
4165 / 1817 / 216
Регистрация: 06.10.2010
Сообщений: 4,074
12.04.2019, 03:38 2
В первом участке она исполняется в качестве кода.
1
0 / 0 / 0
Регистрация: 08.02.2017
Сообщений: 18
12.04.2019, 08:51  [ТС] 3
Я с ассемблером не особо хорошо ещё знаком. Но разве метка не исполняется в любом случае, как код? В ассемблере, в плане "хода" по коду, ничего нового же нет - команды идут последовательно. То есть, получается, что суть только в том, "когда" эта часть кода исполнится?
0
3406 / 1825 / 489
Регистрация: 28.02.2015
Сообщений: 3,696
12.04.2019, 10:03 4
Цитата Сообщение от Ян178 Посмотреть сообщение
В ассемблере, в плане "хода" по коду, ничего нового же нет - команды идут последовательно.
Правильно.
Но, смотрите сами:
Элементарный код
Assembler
1
2
3
4
5
6
7
8
9
model   tiny
.code
org 100h
begin:  mov ah,9
    lea dx,stroka
    int 21h
    ret
;stroka db  'stroka stroka stroka$'
    end begin
Процессором воспринимается как код. Не совсем логичный но код.
Миниатюры
Ассемблер и вывод строк  
0
6770 / 2739 / 384
Регистрация: 17.02.2013
Сообщений: 4,047
13.04.2019, 00:15 5
Цитата Сообщение от Ян178 Посмотреть сообщение
Разве может зависеть исполнение от того, где строка объявляется?
Если исполнение кода процессором выедет на строку, то он начнет молотить ее как какой-то бессмысленный код. Когда у тебя строка расположена сразу после int 10h так и произойдет. Надо располагать строку там где исполнение на нее никогда не выедет.

Добавлено через 7 минут
Цитата Сообщение от Ян178 Посмотреть сообщение
Но разве метка не исполняется в любом случае, как код?
Метка вообще никогда не исполняется. Она - сущность которая существует только в исходнике программы. А для процессора существует уже скомпилированная программа в которой нет меток. Зато есть точка старта. Вот начиная с нее процессор и начинает молотить все подряд как код и ему все едино что встретится при этом на пути, встретятся данные и он будет молотить их как какой-то бессмысленный код. Надо просто программу писать так, чтобы такого никогда не происходило.
2
4165 / 1817 / 216
Регистрация: 06.10.2010
Сообщений: 4,074
13.04.2019, 03:26 6
Принцип однородности памяти
0
0 / 0 / 0
Регистрация: 08.02.2017
Сообщений: 18
13.04.2019, 12:36  [ТС] 7
Добавлено через 1 минуту
Цитата Сообщение от Ethereal Посмотреть сообщение
он будет молотить их как какой-то бессмысленный код
Не подскажешь тогда, что представляет собой выполнение кода метки? И почему это влияет на ход выполнения программы?
0
3406 / 1825 / 489
Регистрация: 28.02.2015
Сообщений: 3,696
13.04.2019, 12:53 8
Цитата Сообщение от Ян178 Посмотреть сообщение
что представляет собой выполнение кода метки
Метка - это адрес. У Вас это : puts, end_puts и т.д..
Переменная -это адрес и длина в байтах. У Вас это строка loading_str.

Цитата Сообщение от Ян178 Посмотреть сообщение
почему это влияет на ход выполнения программы
Потому, что есть подпрограммы и переходы условные и безусловные. В любом случае когда происходит переход на метку(см. выше), в процессор загружается адрес следующей выполняемой команды, который "закреплен компилятором" за этой меткой.
0
6770 / 2739 / 384
Регистрация: 17.02.2013
Сообщений: 4,047
13.04.2019, 21:33 9
Цитата Сообщение от Ян178 Посмотреть сообщение
Не подскажешь тогда, что представляет собой выполнение кода метки?
Метка - это текущий адрес в исходнике которому ты даешь имя, метишь его. Когда выполняется jmp metka в счетчик команд процессора загружается адрес которому ты дал имя metka и процессор продолжает исполнение кода уже с этого адреса. Программист об этом говорит, что команда jmp metka прыгает (осуществляет переход) на метку metka или говорит команда прыгает на адрес который он пометил меткой metka, адрес которому он дал имя metka. Но никто не говорит, что осуществляется выполнение кода метки.
0
13.04.2019, 21:33
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.04.2019, 21:33
Помогаю со студенческими работами здесь

Перенос и вывод строки Ассемблер
Помогите с лабой пожалуйста! Суть моего задания: переслать произвольную цепочку символов,...

Вывод переменной из C на экран через ассемблер.
Добрый день. Помогите пожалуйста решить такую проблему: в программе на C есть переменная, её надо...

Вывод пикселя через встроенный ассемблер (C++)
Надо вывести пиксель на экран в граф режиме с++, но у меня выходит тока черный экран(в ассемблере...

Вывод группы одинаковых символов. Ассемблер, tasm
Как переделать программу, чтобы была не 9 функция 10 прерывания, а 21 функция 21 прерывания?...


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

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