Аватар для pcmax
443 / 74 / 7
Регистрация: 29.01.2018
Сообщений: 1,274

Ввод числа с клавиатуры, сравнение его с константой и вывод соответствующей строки

17.08.2018, 18:25. Показов 10262. Ответов 81
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
вобщем ребята те же грабли.

заранее скажу, что пытался все воспроизвести в онлайн ide , только она ошибок не выдает во всех случаях.
тут нужен взгляд человека, который сразу поймет детскую ошибку, вернее не понимание автора того , что он делает.


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
.bss
num:  .space 4
.data
      stroka:
                .ascii " те же грабли \n"
                 .set len, . -stroca
.text 
         .global _start
_start:
          mov $3, %rax
          mov $0, %rbx
          mov $num, %rcx
          mov $4, %rdx
           int $0x80
 
          cmp '8',  (num)
          jg    to
 
          jmp stop
 
         to:
          mov $4, %rax
          mov $1, %rbx
          mov $stroka, %rcx
          mov $len, %rdx
          int $0x80
          jmp stop
 
          stop:
          mov $1, %rax
          int $0x80
не могу разобраться cmp. как правильно написать, операнды, то ли в скобках, то ли в кавычках. то ли без


подскажите
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
17.08.2018, 18:25
Ответы с готовыми решениями:

Осуществить с помощью ассемблера ввод знакового числа с клавиатуры и его вывод на экран
Осуществить с помощью ассемблера ввод знакового числа с клавиатуры и его вывод на экран в заданных формах представления. Для ввода и вывода...

Как организовать ввод конечного интервала массива с клавиатуры, а не константой?
Здравствуйте, форумчане. Подскажите ламеру, как организовать ввод конечного интервала массива с клавиатуры, а не константой? У меня...

Ввод с клавиатуры строки символов, вывод строки в обратном порядке на принтер
Составить программу для ввода с клавиатуры строки символов "Периферийные устройства ЭВМ" в окно ввода. Записать строку в буфер buf и...

81
 Аватар для pcmax
443 / 74 / 7
Регистрация: 29.01.2018
Сообщений: 1,274
18.08.2018, 17:45  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Mikl___ Посмотреть сообщение
почему нельзя? Можно сравнивать содержимое 8-разрядного регистра
то есть? как это будет выглядеть?
cmp вычитает один операнд из другого и выставляет флаг.

например я ввел с клавы f и g
как это будет работать?
0
Ушел с форума
Автор FAQ
 Аватар для Mikl___
16377 / 7689 / 1080
Регистрация: 11.11.2010
Сообщений: 13,768
18.08.2018, 17:51
в 32-разрядной системе или в 64-разрядной? В gas, nasm?
1
 Аватар для pcmax
443 / 74 / 7
Регистрация: 29.01.2018
Сообщений: 1,274
18.08.2018, 18:00  [ТС]
мне сказали что нет разницы между ассемблерами.

просто например мы будем сравнивать введенные строки. ну а в них содержатся символы. там будут символы даже если я ввел числа.
например я ввел 1 и 5.
1 имеет код 061h. 5 имеет код 065h.
то есть из одного кода cmp вычтет другой, так?
0
18.08.2018, 18:05

Не по теме:

Цитата Сообщение от pcmax Посмотреть сообщение
мне сказали что нет разницы между ассемблерами.
Я сказал, что конвертнуть из одного в другой - дело банальной техники. Хватит врать. Фраза "конвертнуть - дело техники" и "нет разницы между асемблерами" - это две совершенно разные фразы.

0
Ушел с форума
Автор FAQ
 Аватар для Mikl___
16377 / 7689 / 1080
Регистрация: 11.11.2010
Сообщений: 13,768
18.08.2018, 18:09
pcmax,
для начала выучи наизусть таблицу ASCII-символов, без нее никак, всего-то коды 256 символов, код 61h соответствует латинской "а", код 65h соответствует латинской "е".
0
Модератор
2131 / 1000 / 170
Регистрация: 23.07.2018
Сообщений: 3,349
Записей в блоге: 3
18.08.2018, 18:10
pcmax, что напечатает такой код на Паскале:

Pascal
1
writeln ( 'g' < 'f' );
0
Ушел с форума
Автор FAQ
 Аватар для Mikl___
16377 / 7689 / 1080
Регистрация: 11.11.2010
Сообщений: 13,768
18.08.2018, 18:12
Электронный учебник https://www.cyberforum.ru/cgi-bin/latex.cgi?\rightarrow Глава 2. ПРЕДСТАВЛЕНИЕ ДАННЫХ https://www.cyberforum.ru/cgi-bin/latex.cgi?\rightarrow Буквено-цифровые символы
0
Модератор
2131 / 1000 / 170
Регистрация: 23.07.2018
Сообщений: 3,349
Записей в блоге: 3
18.08.2018, 18:24
Цитата Сообщение от Mikl___ Посмотреть сообщение
pcmax,
для начала выучи наизусть таблицу ASCII-символов
А линукс-то на что?!
Bash
1
man 7 ascii
http://manpages.org/ascii/7
0
Ушел с форума
Автор FAQ
 Аватар для Mikl___
16377 / 7689 / 1080
Регистрация: 11.11.2010
Сообщений: 13,768
18.08.2018, 18:28
http://manpages.org/armscii-8/7
politoto,
за одно pcmax еще и кодировку армянских букв выучит
0
 Аватар для pcmax
443 / 74 / 7
Регистрация: 29.01.2018
Сообщений: 1,274
18.08.2018, 18:34  [ТС]
Цитата Сообщение от Mikl___ Посмотреть сообщение
для начала выучи наизусть таблицу ASCII-символов, без нее никак, всего-то коды 256 символов, код 61h соответствует латинской "а", код 65h соответствует латинской "е".
да не суть... пусть будут другие коды, которые соотвествуют 1 и 5.
ассемблер будет вычитать их друг из друга? ну то есть эти коды?

Добавлено через 3 минуты
Цитата Сообщение от mizannny Посмотреть сообщение
Я сказал, что конвертнуть из одного в другой - дело банальной техники. Хватит врать. Фраза "конвертнуть - дело техники" и "нет разницы между асемблерами" - это две совершенно разные фразы.
0
Ушел с форума
Автор FAQ
 Аватар для Mikl___
16377 / 7689 / 1080
Регистрация: 11.11.2010
Сообщений: 13,768
18.08.2018, 18:38
Цитата Сообщение от pcmax Посмотреть сообщение
да не суть...
И так сойдет!

Нет, в том то и дело, что для pcmax нет разницы между gas и nasm, регистрами ebx и ebp, ASCII-кодами "a" и "1", выучи, вызубри разницу в азбучных понятиях, иначе простейшие программки в 5 строк выливаются в непонимание на 10 страницах
Изображения
 
3
 Аватар для pcmax
443 / 74 / 7
Регистрация: 29.01.2018
Сообщений: 1,274
18.08.2018, 18:56  [ТС]
скажите пожалуйста, если Ассебмлер в команде cmp будет вычитать один код знака из другого кода знака, который я ввиду с клавиатуры,
то в чем поблема ?

Assembler
1
2
3
mov eax, '5'
 
cmp eax, '9'
вычтет из кода 0x35 код 0x39

зачем переводить в число будет мне введенные с клавиатуры символы?

Добавлено через 3 минуты
наверное самое главное...
что значит перевести символ в число в Ассемблере?
0
Ушел с форума
Автор FAQ
 Аватар для Mikl___
16377 / 7689 / 1080
Регистрация: 11.11.2010
Сообщений: 13,768
18.08.2018, 18:56
pcmax,
у тебя ASCII-символ. Сколько в нем разрядов? Регистр ЕАХ содержит сколько разрядов? Опять "И так сойдет!"?
1
 Аватар для pcmax
443 / 74 / 7
Регистрация: 29.01.2018
Сообщений: 1,274
18.08.2018, 19:05  [ТС]
скажите, а как Ассемблер видит число и как он видит символ. чем они для него имеют отличия друг от друга?
0
Ушел с форума
Автор FAQ
 Аватар для Mikl___
16377 / 7689 / 1080
Регистрация: 11.11.2010
Сообщений: 13,768
18.08.2018, 19:12
pcmax,
я уже писал, для процессора всё равно, ЧТО внутри регистра или ячейки памяти, символы, числа или команды, он с ними работает как с двоичными числами

Добавлено через 4 минуты
Ты не хочешь ответить на вопрос
Цитата Сообщение от Mikl___ Посмотреть сообщение
у тебя ASCII-символ. Сколько в нем разрядов? Регистр ЕАХ содержит сколько разрядов?
1
 Аватар для pcmax
443 / 74 / 7
Регистрация: 29.01.2018
Сообщений: 1,274
18.08.2018, 19:18  [ТС]
буква или символ наверное 1байт. eax наверное 4байта
0
Модератор
2131 / 1000 / 170
Регистрация: 23.07.2018
Сообщений: 3,349
Записей в блоге: 3
18.08.2018, 19:18
А для Ассемблера буквы в кавычках можно считать другой формой записи чисел:
Assembler
1
  .space '9' - '5'
С точностью до багов синтаксического разбора
1
Ушел с форума
Автор FAQ
 Аватар для Mikl___
16377 / 7689 / 1080
Регистрация: 11.11.2010
Сообщений: 13,768
18.08.2018, 19:23
Цитата Сообщение от pcmax Посмотреть сообщение
буква или символ наверное 1байт. eax наверное 4байта
pcmax,
а почему "НАВЕРНОЕ"? Здесь нужно либо, то, либо другое, либо третье. Попробуй всё же почитать книжки, чтобы не было неуверенности. И почему ты не используешь соответствующие регистры для работы с однобайтовыми числами?
1
 Аватар для pcmax
443 / 74 / 7
Регистрация: 29.01.2018
Сообщений: 1,274
18.08.2018, 19:31  [ТС]
Цитата Сообщение от pcmax Посмотреть сообщение
section .bss
num resb 10
section .data
* * * * * * global _start
_start:
* * * * * * mov eax, 3
* * * * * * mov ebx, 0
* * * * * * mov ecx, num
* * * * * * mov edx, 2
* * * * * * int 80h
mov ebp, num
* * * * * * cmp ebp, '5'
* * * * * * je * *to

jmp stop

to: * * * *mov eax, 4
* * * * * * mov ebx, 1
* * * * * * mov ecx, num
* * * * * * mov edx, 2
* * * * * * int 80h
* * * * * * jmp stop
stop:
* * * * * * mov eax, 1
* * * * * * int 80h
почему тогда не работает?

Добавлено через 2 минуты
Цитата Сообщение от Mikl___ Посмотреть сообщение
а почему "НАВЕРНОЕ"? Здесь нужно либо, то, либо другое, либо третье. Попробуй всё же почитать книжки, чтобы не было неуверенности. И почему ты не используешь соответствующие регистры для работы с однобайтовыми числами?
так было проще. я не думал об этом. просто заносил значение в 32 разрядный регистр.


Вы скажите, в чем Ассемблер видит разницу между числом и символом?

Добавлено через 1 минуту
Цитата Сообщение от Mikl___ Посмотреть сообщение
внутри регистра или ячейки памяти, символы, числа или команды, он с ними работает как с двоичными числами
ах да, извините... вот.

только я теперь вообще запутался.

Добавлено через 1 минуту
зачем тогда переводить строку в число?
1
Модератор
2131 / 1000 / 170
Регистрация: 23.07.2018
Сообщений: 3,349
Записей в блоге: 3
18.08.2018, 19:32
А почему Вы решили, что не работает?
Подготовьте тесты, прогоните.
Если какие-то тесты не проходят, это повод задуматься.

В чём дело? В тестах? В коде? И в тестах, и в коде?
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
18.08.2018, 19:32

Ввод с клавиатуры и вывод на экран символа и строки
1. Напишите программу на языке ассемблера, которая: - вводит с клавиатуры произвольный символ; - выводит введен символ на экран; -...

TASM. Ввод числа с клавиатуры и вывод на экран.
Помогите с написание программы. Я ввожу число с клавиатуры и потом его же мне нужно вывести на консоль. Как это сделать? Напишите...

Вывод данных с начала строки, не прерывая ввод с клавиатуры
Добрый день, программисты, подскажите ,пожалуйста, как сделать вывод данных с начала стоки, не прерываю ввод с клавиатуры. то есть ты...

Ввод числа, решение его по формуле, вывод получившегося числа.
Здравствуйте! Только недавно начал изучать Delphi. Не могу понять что за ошибку мне выдает. Помогите пожалуйста. Нужна программа где я...

Ввод текстовой строки с клавиатуры и отображение его в главном окне приложения
Добрые люди кто знает Win32Api помогите c задачей.Буду очень признателен. Программа должна обеспечить: - ввод текстовой строки с...


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

Или воспользуйтесь поиском по форуму:
60
Ответ Создать тему
Опции темы

Новые блоги и статьи
Когда логика программы не спасает от человеческих ошибок
Maks 18.08.2026
В последнее время всё чаще и чаще сталкиваюсь с таким явлением, как абсолютная невнимательность (или глупость) пользователей. Проявляется это чаще всего на работе в коллективе. Допустим, человек с. . .
Лето уходит
kumehtar 17.08.2026
Мысли в слух
kumehtar 17.08.2026
Забавно, насколько сейчас стала доступна информация. Например о магии, духовном развитии, медитациях, и других подобных направлениях, ранее зачастую тайных, передаваемых от учителя к ученику. Хотя. . .
Перемещение строк из ТЧ в другой документ с учетом текущего пробега
Maks 17.08.2026
Реализация из решения ниже выполнена на примере нетипового документа "Автозапчасти", с ТЧ "Шины". За основу взят алгоритм отсюда: https:/ / www. cyberforum. ru/ blogs/ 359708/ 10838. html Задача: . . .
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео: https:/ / vkvideo. ru/ video-240781534_456239017 YouTube: eY5-5PyI9NM Текстовая версия
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru