Форум программистов, компьютерный форум, киберфорум
Assembler для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
 Аватар для Navka
1 / 1 / 0
Регистрация: 17.05.2015
Сообщений: 66

Не работает цикл после условного перехода jg

26.02.2018, 15:56. Показов 1944. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день! Буду благодарна, если укажете мне на ошибку в коде. Изначальная суть задачи: все большие буквы в введенной строке превратить в маленькие. Да, таких тем было множество, но хотелось понять, почему не работает именно мой код. Спасибо большое.

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
25
26
27
28
29
30
31
model tiny
.code
.startup
 
mov dx,offset testm
mov ah,09h
int 21h
 
mov dx,offset tm
mov ah,0ah
int 21h
 
mov cx, [bx+1]
 
lp:
    mov di, cx
    cmp tm[di+1],60h
    jg next ; грешу на это место
    sub tm[di+1],20h
 
next:
    loop lp
    mov dx,offset tm+2
    mov ah,9
    int 21h
 
ret
 
testm   db "Entered string: $"
tm  db 20 dup("$")
End
После ввода строки отображаются только левые символы АСКИ.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
26.02.2018, 15:56
Ответы с готовыми решениями:

Оператор условного перехода, безусловного перехода
Помагите пожалуйста решить!!! 1.Подсчитать количество целых чисел среди чисел a, b, c. 2.На оси ОХ расположены три точки а, b, с....

Цикл условного выбора элементов массива работает неправильно
Прошу, помогите разобраться. Обо всём по порядку. Имеется матрица стеков DP. 2 строка содержит множество стеков различного размера...

Команды условного перехода
Здравствуйте, до боли простая задача: реализовать условный переход, если загруженное значение <= константы. Написанный код следующий: ...

6
Эксперт Hardware
Эксперт Hardware
 Аватар для R71MT
6211 / 2445 / 403
Регистрация: 29.07.2014
Сообщений: 3,175
Записей в блоге: 4
26.02.2018, 16:17
Цитата Сообщение от Navka Посмотреть сообщение
tm* db 20 dup("$")
буфер оформлен не правильно. попробуй так:
Assembler
1
tm  db 20,0,20 dup("$")
1
 Аватар для Navka
1 / 1 / 0
Регистрация: 17.05.2015
Сообщений: 66
26.02.2018, 16:33  [ТС]
Цитата Сообщение от R71MT Посмотреть сообщение
буфер оформлен не правильно
Спасибо за быстрый ответ! Изменила буфер, все так же бесконечным циклом выводятся символы вместо маленьких букв

Возможно, необходимо не добавлять 20h, а умножать?

Добавлено через 13 минут
Assembler
1
2
3
cmp tm[di+1],60h
jg next ; грешу на это место
sub tm[di+1],20h
Получается, что в сравнении с 60h (маленькие буквы), при результате "больше" мы идем дальше по циклу, иначе добавляем 20h, но почему тогда оно не хочет работать, как надо?
0
 Аватар для Kukuxumushu
1624 / 806 / 146
Регистрация: 13.06.2015
Сообщений: 3,266
26.02.2018, 16:34
Цитата Сообщение от Navka Посмотреть сообщение
mov cx, [bx+1]
Откуда что-то появляется в bx?
2
 Аватар для Navka
1 / 1 / 0
Регистрация: 17.05.2015
Сообщений: 66
26.02.2018, 16:41  [ТС]
Цитата Сообщение от Kukuxumushu Посмотреть сообщение
Откуда что-то появляется в bx?

Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
......
mov dx,offset testm
mov ah,09h
int 21h
 
mov dx,offset tm
mov ah,0ah
int 21h
 
lea si, tm 
inc si 
mov cl, [si] 
xor ch, ch 
 
.......
Поменяла счетчик следующим образом, в дебагере размер строки отображается верно. Проблема бесконечного цикла решена, но символы АСКИ выводятся таким образом, будто происходит вычитание, а не сложение

UPD: ОХ, моя ошибка, простите, теперь все работает, как надо
Подскажите, мой вариант занесения размера строки в счетчик верен или можно сделать это "красивее"?

Добавлено через 4 минуты
И еще такой вопрос, совсем "нубский".
Как правильно реализовать перенос строки?
Assembler
1
2
3
4
5
6
7
8
9
10
11
...
next:
    loop lp 
    mov dx,offset tm+2
    mov dl,13  
    int 21h
    mov dl,10  
    int 21h
    mov ah,9
    int 21h
...
этот вариант не дает того, что мне надо
1
 Аватар для Kukuxumushu
1624 / 806 / 146
Регистрация: 13.06.2015
Сообщений: 3,266
26.02.2018, 16:46
Лучший ответ Сообщение было отмечено Navka как решение

Решение

Цитата Сообщение от Navka Посмотреть сообщение
будто происходит вычитание, а не сложение
Происходит вычитание, а нужно как раз сложение. Т.к. вы делаете из больших букв маленькие, а не наоборот.

Добавлено через 1 минуту
Цитата Сообщение от Navka Посмотреть сообщение
Как правильно реализовать перенос строки?
Assembler
1
2
3
4
5
lea dx,NL
mov ah,9
int 21h
..........
NL db 13,10,'$'
2
 Аватар для Navka
1 / 1 / 0
Регистрация: 17.05.2015
Сообщений: 66
26.02.2018, 16:50  [ТС]
Цитата Сообщение от Kukuxumushu Посмотреть сообщение
Происходит вычитание, а нужно как раз сложение
Да, заметила это поздно

Благодарю Вас за помощь, очень сильно помогли!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
26.02.2018, 16:50
Помогаю со студенческими работами здесь

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

Конструкции условного перехода
в бд access. Если что-то по этой теме знаете пожалуйста поделетесь.

Оператор условного перехода
Помогите пожалуйста((( Есть программка на Паскале, как ее переписать в С#? Даны действительные числа X,Y. Если X,Y- отрицательные, то...

Оператор условного перехода
Проверьте, принадлежит ли интервалу (a;b) число c, где a,b,c - произвольные числа.

Команды-синонимы условного перехода.
Подскажите все команды-синонимы среди команд условного перехода, и объясните, почему они являются синонимами (ну кроме использования...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru