Лидеры рейтинга

ID: 401284

Михаил Александров

Советник

376

Россия, Санкт-Петербург


ID: 259041

Алексеев Владимир Николаевич

Мастер-Эксперт

357

Россия, пос. Теплоозёрск, ЕАО


ID: 401888

puporev

Профессор

215

Россия, Пермский край


ID: 405338

vovaromanov.jr

1-й класс

125


ID: 400669

epimkin

Профессионал

111


ID: 242862

Hunter7007

Мастер-Эксперт

29

Россия, Омск


ID: 137394

Megaloman

Мастер-Эксперт

25

Беларусь, Гомель


8.10.2

13.10.2021

JS: 2.10.2
CSS: 4.6.0
jQuery: 3.6.0
DataForLocalStorage: 2021-10-20 22:46:01-standard


Создание программ на языке Assembler.

Администратор раздела: Зенченко Константин Николаевич (Старший модератор)

Консультация онлайн # 160273

Раздел: Assembler
Автор вопроса: Костин Александр Владимирович
Дата: 12.02.2009, 10:43 Консультация закрыта
Поступило ответов: 1

Программирую на С и Паскале. А тут попросили программку сессионную написать на Ассемблере. Ничего не выходит. Суть в следующем: "Пользователь вводит с клавиатуры начальное и конечное значения диапазона десятичных беззнаковых двухбайтных чисел. Программа выводит на экран последовательность всех чисел этого диапазона. Если начальное значение больше конечного, и если вводятся неправильные символы, то программа должна выдать ошибку.". Кое-как разобрался с вводом с клавиатуры и выводом на экран, но до завершенности еще очень далеко. Привожу код, который у меня получился. Укажите пожалуйста ошибки и помогите правильно организовать цикл для вывода.

Приложение:

Здравствуйте, Костин Александр Владимирович!

Программа в приложении.
Ваша основная ошибка, это не настроенные сегментные регистры.

;настраиваем сегмент данных
mov ax,@data
mov ds,ax


При запуске программы сегментные регистры DS и ES указывают на префикс программы, а не на сегмент данных.
Для функций ввода/вывода строки нужно:

AH = 09h
DS:DX -> '$'-terminated string


Удачи!

Приложение:


Зенченко Константин Николаевич

Старший модератор
12.02.2009, 12:11
Мини-форум консультации # 160273

q_id

Зенченко Константин Николаевич

Старший модератор

ID: 31795

1

= общий =    12.02.2009, 11:22

Костин Александр Владимирович:

smile
А зачем Вы вводите строку, если можно вводит число и потом работать сним как с числом:

CALL INPUT ;второе число почему-то пишется на экран при вводе поверх первого.
Тут должен быть вывод и завершение работы, т.к. Вы зацикливаете программу
INPUT PROC
MOV BX,DX


по заданию:
т.е. если Вы вводите к примеру 10 и 20, то должно быть 10 11 12 ..... 19 20
да?

=====
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.
smile

неизвестный

2

= общий =    12.02.2009, 11:23

Я ввожу строку, чтобы разобраться со всем этим.
Да при вводе 10 и 20 должен быть именно такой вывод.

неизвестный

3

= общий =    12.02.2009, 11:25

И, кстати, как с этим справиться?
MOV AH,09H ; выводим число на экран, получается криво. если при вводе не завершить строку символом '$'
INT 21H
Есть какая-либо возможность прибавлять символ '$' к строке автоматически? Еще мусор присутствует перед выводимой строкой.

Возможность оставлять сообщения в мини-форумах консультаций доступна только после входа в систему.
Воспользуйтесь кнопкой входа вверху страницы, если Вы зарегистрированы или пройдите простую процедуру регистрации на Портале.

Лучшие эксперты раздела

Зенченко Константин Николаевич

Старший модератор

Рейтинг: 164

Коцюрбенко Алексей Владимирович

Старший модератор

Рейтинг: 47

Лысков Игорь Витальевич

Мастер-Эксперт

Рейтинг: 0

Evgen aka Chuma

6-й класс

Рейтинг: 0

cain52

3-й класс

Рейтинг: 0

Kdsfofwe21

2-й класс

Рейтинг: 0