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

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

17.08.2018, 18:25. Показов 9903. Ответов 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, 19:35  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от politoto Посмотреть сообщение
В чём дело? В тестах? В коде? И в тестах, и в коде?
наверное во мне.

не работает.
и вот это тоже не работает
Цитата Сообщение от pcmax Посмотреть сообщение
.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
вчера 8 часов мусолили эту тему с уважаемым
mizannny
0
Ушел с форума
Автор FAQ
 Аватар для Mikl___
16373 / 7685 / 1080
Регистрация: 11.11.2010
Сообщений: 13,759
18.08.2018, 19:36
pcmax,
память как у золотой рыбки . Для чего нужен int 80h когда тебе требуется всего лишь сравнение? Вопрос второй - В каких регистрах и в какой последовательности передаются аргументы для вызова системной функции? Вопрос третий для чего подряд используешь je metka1/jmp metka2/metka1: ... хотя достаточно только jne metka2 ?
3
Модератор
2131 / 1000 / 170
Регистрация: 23.07.2018
Сообщений: 3,349
Записей в блоге: 3
18.08.2018, 20:18
Цитата Сообщение от pcmax Посмотреть сообщение
зачем тогда переводить строку в число?
"Зачем?" - важнейший вопрос для любой целенаправленной деятельности.

Если только для того, чтобы сравнить, равны или не равны, то, возможно, не обязательно переводить в число.
Но, с другой стороны, даже если ограничиться только десятичной системой, число 54321 можно записать как "54321", "0054321", "054321". Это разные строчки цифр, обозначающие одно и то же число.
3
 Аватар для pcmax
443 / 74 / 7
Регистрация: 29.01.2018
Сообщений: 1,274
18.08.2018, 20:22  [ТС]
в nasm 32 int80h нужен для системных вызовов типа mov eax, 3. я же буду вводить с клавиатуры.

ядро будет искать дискрептор файла в ebx. то есть идет в eax, потом в ebx... ну это для syscall read вроде.

два раза использую метку jmp stop потому что Ассемблер будет делать два похода. чтобы не выводилось все на экран подряд надо сделать так, что если je условный переход был совершен, то после того как последовал вывод на экран, пусть сразу прыгнет в выход, то есть в mov eax, 1.

но почему ошибки и почему не работает?
0
Ушел с форума
Автор FAQ
 Аватар для Mikl___
16373 / 7685 / 1080
Регистрация: 11.11.2010
Сообщений: 13,759
19.08.2018, 02:59
pcmax,
ответ на вопрос
Цитата Сообщение от Mikl___ Посмотреть сообщение
Для чего нужен int 80h когда тебе требуется всего лишь сравнение?
не нужен вызов int 80h только команда cmp и команда условного перехода
ответ на вопрос
Цитата Сообщение от Mikl___ Посмотреть сообщение
В каких регистрах и в какой последовательности передаются аргументы для вызова системной функции?
Системный вызов через прерывание 80h
  1. В регистр EAX загружается номер функции.
  2. Параметры (зависящие от функции) загружаются в регистры EBX (первый параметр), ECX (второй), EDX (третий), ESI (четвёртый), EDI (пятый), EBP (шестой).
  3. Осуществляется вызов прерывания: int 0x80
Assembler
1
2
3
4
5
6
7
8
  mov eax,function_number
  mov ebx,param_1  ; если есть
  mov ecx,param_2  ; если есть
  mov edx,param_3  ; если есть
  mov esi,param_4  ; если есть
  mov edi,param_5  ; если есть
  mov ebp,param_6  ; если есть
  int 0x80  ; вызов!
ответ на вопрос
Цитата Сообщение от Mikl___ Посмотреть сообщение
для чего подряд используешь je metka1/jmp metka2/metka1: ... хотя достаточно только jne metka2
Делать je metka1/jmp metka2/metka1: ... неправильно, достаточно jne metka2
вместо ответов, которые подразумевали, что ты начнешь читать литературу, ты начинаешь нести ахинею
Цитата Сообщение от pcmax Посмотреть сообщение
я же буду вводить с клавиатуры
какую системную функцию ты будешь использовать чтобы прочитать буфер клавиатуры?
Цитата Сообщение от pcmax Посмотреть сообщение
ядро будет искать дискрептор файла в ebx. то есть идет в eax, потом в ebx
дЕскрИптор это раз, при чем здесь дескриптор файла? Ты же читаешь буфер клавиатуры? Опять
Цитата Сообщение от pcmax Посмотреть сообщение
ну это для syscall read вроде
забудь про "ВРОДЕ", "НАВЕРНОЕ" читаешь документацию и делаешь, как написано в документации, никакой самодеятельности или отсебятины, делай ТАК как написано,
Цитата Сообщение от pcmax Посмотреть сообщение
два раза использую метку jmp stop потому что Ассемблер будет делать два похода
опять пишешь какую-то выдуманную хрень о которой тебя даже не спросили
Цитата Сообщение от pcmax Посмотреть сообщение
но почему ошибки и почему не работает?
потому что ты не читаешь ЧТО тебе пытаются объяснить, ошибки не исправляешь, надеешься на готовые куски кода и "метод тыка"
2
 Аватар для Ethereal
6773 / 2741 / 385
Регистрация: 17.02.2013
Сообщений: 4,048
19.08.2018, 09:58
Цитата Сообщение от pcmax Посмотреть сообщение
понимаю, что с клавиатуры я никогда не смогу ввести число. это всегда будет строка каких то символов.... так?
поэтому введенное значение нельзя будет использовать в cmp . так ?
Вводишь с клавиатуры строку символов, потом преобразуешь ее в число в регистре и потом сравниваешь.

Добавлено через 2 часа 18 минут
Вот на Linux-32 на as ввод строки цифр, преобразование ее в число, потом преобразование обратно в строку и вывод :
Code
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
    .bss
 
str:    .space  10+1
    .set    lstr, .-str
 
    .text
 
    .global _start
_start: movl    $lstr, %edx
    movl    $str, %ecx
    xorl    %ebx, %ebx
    movl    $3, %eax
    int $0x80
 
//str - entered string
//eax - string's length (including LF)
 
    decl    %eax
    jz  exit
    movl    %eax, %ecx
    movl    $str, %esi
    xorl    %ebx, %ebx
    cld
todigit:movl    $10, %eax
    mull    %ebx
    movl    %eax, %ebx
    xorl    %eax, %eax
    lodsb
    subb    $'0, %al
    jc  exit
    cmpb    $9, %al
    ja  exit
    addl    %eax, %ebx
    loop    todigit
 
//ebx - entered digit
 
    movl    %ebx, %eax
    movl    $10, %ebx
    movl    %ebx, %ecx
toasc:  xorl    %edx, %edx
    divl    %ebx
    addb    $'0, %dl
    pushl   %edx
    loop    toasc
    movl    $str, %edi
    movl    %ebx, %ecx
tostr:  popl    %eax
    stosb
    loop    tostr
    movb    $0xA, %al
    stosb
 
//str - decimal string
 
    movl    $10+1, %edx
    movl    $str, %ecx
    movl    $1, %ebx
    movl    $4, %eax
    int $0x80
 
exit:   movl    $1, %eax
    int $0x80
Добавлено через 1 час 0 минут
Цитата Сообщение от pcmax Посмотреть сообщение
потому что Ассемблер будет делать два похода. чтобы не выводилось все на экран подряд надо сделать так, что если je условный переход был совершен, то после того как последовал вывод на экран, пусть сразу прыгнет в выход, то есть в mov eax, 1
Бред какой-то. "Ассемблер будет делать два похода" относится к моменту компиляции, т.е. создания программы, "чтобы не выводилось все на экран подряд" я не понял к чему, а "если je условный переход был совершен" к моменту исполнения программы. Как у тебя в голове происходящие в разное время вещи могут объединяться в одно целое ?
Чувствую, что местные Песталоцци своими объяснениями создали у тебя на чердаке окончательную кашу. Ну я-же советовал не писать Тс-у ничего сложнее "Мама мыла раму", потому-что проблемы уже тут. Он думает, что два прохода ассемблера происходят в момент исполнения написанной на ассемблере программы. И что он при этом в голове воображает даже страшно себе представить. Вот полученный результат. А надо было сначала разбирать с ним бе-бе и ме-ме. А его раньше времени понесло в самую муть - Linux-ы, 64-разряда, AT&T ассемблеры. В догонку к разговору из другого топика: вот с кем лучше было бы сначала написать com-программу для ms-dos и пройти ее в td.exe и только потом дать ему лезть куда-нибудь еще.
3
328 / 81 / 2
Регистрация: 21.07.2018
Сообщений: 112
Записей в блоге: 1
19.08.2018, 09:58
Если совсем не объяснять, pcmax начинает сам додумывать.
Про проходы никто ему тут не говорил, сам где-то вычитал.
Может быть, лучше меньше пытаться объяснять, а больше показывать?
А объяснять про то, как pcmax может сам посмотреть своими глазами, а не гадать и выдумывать, когда не понятно.
3
 Аватар для Ethereal
6773 / 2741 / 385
Регистрация: 17.02.2013
Сообщений: 4,048
19.08.2018, 10:22
Да, пожалуй. Но пока результат просто удручает. В любом случае нужно говорить как можно проще и все сложности пока обходить, не упоминать про них.

Добавлено через 9 минут
Тс-у. Представь, что ты прочитал страницу книги, а потом перечитал ее по новой. Что ты сделал ? Ты совершил два прохода глазами по странице. Точно так и ассемблер. Для него исходный текст программы это как страница книги. Так вот когда он программу компилирует, он прочитывает этот исходник сверху вниз два раза. Вот когда эти два прохода происходят. Но программисту, что написал исходник, нет до этого абсолютно никакого дела. Потому-что какая ему разница что там ассемблер внутри при компиляции делает. Ему важен только сам результат трансляции, сообщения об ошибках, ну может листинг трансляции, но не то, что там у ассемблера внутри. Два прохода трансляции важны только тому кто сам, свой собственный ассемблер писать будет. Это как бы один из моментов теории создания компиляторов и ничего больше. Абсолютно ничего больше.
3
328 / 81 / 2
Регистрация: 21.07.2018
Сообщений: 112
Записей в блоге: 1
19.08.2018, 10:27
td.exe это отладчик для ms-dos?
Цитата Сообщение от ОС Посмотреть сообщение
pcmax
и gdb боится "учить", который у него в системе уже есть и работает. а тут ещё ms-dos, ассемблеры для неё. И как всем этим пользоваться?!
И как запустить всё это в его линуксе?
Если сам будет возиться с загрузочными секторами, не будет ни линукса, ни ms-dosa

А когда всё заработает, будет думать о том, как это там сегменты сдвигаются и складываются.

Нужно что-то ещё проще. Компмодель эта самая?

Что посоветуете?
2
 Аватар для pcmax
443 / 74 / 7
Регистрация: 29.01.2018
Сообщений: 1,274
19.08.2018, 11:33  [ТС]
Цитата Сообщение от Mikl___ Посмотреть сообщение
не нужен вызов int 80h только команда cmp и команда условного перехода
ответ на вопрос
я вообще не понял, что Вы хотели сказать.

Добавлено через 4 минуты
Цитата Сообщение от pcmax Посмотреть сообщение
.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
где тут int0x80 лишний?
0
Ушел с форума
Автор FAQ
 Аватар для Mikl___
16373 / 7685 / 1080
Регистрация: 11.11.2010
Сообщений: 13,759
19.08.2018, 11:37
я вообще не понял, что Вы хотели сказать
Миниатюры
Ввод числа с клавиатуры, сравнение его с константой и вывод соответствующей строки  
3
 Аватар для pcmax
443 / 74 / 7
Регистрация: 29.01.2018
Сообщений: 1,274
19.08.2018, 11:38  [ТС]
Цитата Сообщение от Ethereal Посмотреть сообщение
водишь с клавиатуры строку символов, потом преобразуешь ее в число в регистре и потом сравниваешь.
для перевода строк в числа мне еще как до Китая...


вобщем надо все забыть и начинать сначала.
0
328 / 81 / 2
Регистрация: 21.07.2018
Сообщений: 112
Записей в блоге: 1
19.08.2018, 13:29
pcmax, забывать не надо. Если надо, то, может быть только то, что неправильно помнили.

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

1.
Если переводить тяжело, попробуйте проще:
ввести 2 англ. буквы подряд, напр
Code
1
rh
написать, какая раньше по алфавиту.
(у нас это h )
2.
Если хочется сравнивать числа, а не строчки посимвольно, можно не кодить перевод у себя.
Раз уж мы в линуксе, можно другой программой выдать на вход вашей программе 4байтовое или 8байтовое число, так, как оно должно быть в памяти. Или самому написать подходящую на любом языке, с которым дружите.
Что-то вроде:

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
program trulala;
var
   i : integer:
   outint : file of integer;
begin
    { 
       открыли на запись outint
       или привязали к stdout. я это не умею
    }
    readln( i );
    write ( outint, i );
    {  
        закрыли
    }
end.
1
 Аватар для pcmax
443 / 74 / 7
Регистрация: 29.01.2018
Сообщений: 1,274
19.08.2018, 17:29  [ТС]
Лучший ответ Сообщение было отмечено Mikl___ как решение

Решение

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


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

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

буду читать книжки
1
Модератор
2131 / 1000 / 170
Регистрация: 23.07.2018
Сообщений: 3,349
Записей в блоге: 3
19.08.2018, 22:17
Удачи!
Надеюсь, не прощаемся. И Вы ещё поделитесь опытом, когда, наконец, успешно переустановите Linux на устройство, ради которого, возможно, всё и затевалось.
2
 Аватар для Ethereal
6773 / 2741 / 385
Регистрация: 17.02.2013
Сообщений: 4,048
19.08.2018, 23:07
Лучший ответ Сообщение было отмечено Mikl___ как решение

Решение

Цитата Сообщение от ОС Посмотреть сообщение
td.exe это отладчик для ms-dos?
Их было пять. Три под MS-DOS - TD TD286 TD386, TDW дли Win-16 и TD32 для Win-32. Главное достоинство, что очень наглядный. Не подглядывание как через замочную скважину (отладчики с интерфейсом командной строки), а картинка всего сразу (регистров, кода и данных) на экране. Именно то, что нужно чтобы, сейчас объясню что
Цитата Сообщение от pcmax Посмотреть сообщение
для перевода строк в числа мне еще как до Китая...
Не знаю, но когда я преподавал ассемблер, студенты у меня именно с этого начинали. Первое практическое занятие "Фрагмент кода под отладиком". Я давал им именно цикл, осуществляющий какое-то преобразование (кажись двоично-десятичное число преобразовывали в двоичное), они его набивали прямо в отладчик (TD умеет ассемблировать на лету) и потом час код гоняли нажимая F7 под этим самым TD. Разбирали какая команда что с регистрами делает. А второй час собирали каждый свою задачу набивая команды туда-же, прямо в отладчик. А я ходил у них за спинами и посказывал. Если чего у кого не клеилось, то подходил к доске, обращал всеобщее внимание на нее и разбирал затык. А потом опять ходил за спинами. И все выполнили свою задачу. Так вот TD идеально подходил, чтобы врубить в ассемблера за ДВА часа. А тут куча времени и усилий потрачена уже и как до Китая раком ? А я говорю, что с этого надо начать и двух часов хватит. Написание своей программы у меня было только вторым занятием. Только тс пошел в степь где форсированного освоения не получится. Нет у меня идей как за два часа вот именно с этим инструментарием. Вот я о чем.

Добавлено через 12 минут
смысл в том, что у тс-а мысль работает на задавать вопросы "что нужно написать чтобы", т.е исходник рассматриается как набор таинственных заклинаний, которые надо запомнить. А при таком подходе нужно сразу бить по рукам и тыкать нос в вопрос "что каждая команда делает". Пока этого не понял, никакого движения дальше. А преобразование строки в число - это-же самый сок на предмет уяснять, что каждая команда делает. Тут тот случай, когда отсылать читать книги - не путь, все равно ведь поймет вкривь и вкось, ибо так было уже. А гоняние кода в полноэкранном отладчике ну самое то, что нужно.

Не обязательно масадосовский TD, если подскажете полноэкранный отладчик под Линупс. Только я такого не знаю, поэтому и назвал это направление мутью.
3
Модератор
2131 / 1000 / 170
Регистрация: 23.07.2018
Сообщений: 3,349
Записей в блоге: 3
19.08.2018, 23:50
Цитата Сообщение от Ethereal Посмотреть сообщение
Их было пять.
Как всегда в x86...
Цитата Сообщение от Ethereal Посмотреть сообщение
Не обязательно масадосовский TD, если подскажете полноэкранный отладчик под Линупс. Только я такого не знаю, поэтому и назвал это направление мутью.
Есть штатная оболочка для отладчиков DDD. Да и сам gdb может выделить в режиме TUI из экрана терминала два окошка и показать в них регистры и дизассемблер или исходник.
Но это тоже не то. Хочется быстрее и проще.
2
328 / 81 / 2
Регистрация: 21.07.2018
Сообщений: 112
Записей в блоге: 1
20.08.2018, 06:31
Нужен игровой обучаюший симулятор ARMа. Лучше онлайн, чтобы ни устройства, ни системы ученика не пострадали.
По середине окно память. Можно смотреть и править память в виде букв, чисел разной длины в разных системах и т.д.
Слева дизассемблер. Хорошо, если можно тут же править инструкции, но необязательно. Ближние переходы показаны стрелками, дальние ссылками. Бледным цветом фона - разные группы инструкций. Если в дампе те же адреса, в побайтном режиме в памяти показаны границы инструкций с похожей подсветкой.
Снизу регистры.
Справа можно колонку с заданиями, справочником по инструкциям проца и т.п. Для ленивых в справочнике конструктор инструкций по принципу Scratch. Можно слепить и вытащить инструкцию в дамп или в дизассемблер. За выполнение заданий открываются новые инструкции и регистры.
Достаточно выполнения по 1 инструкции и анимации с возможностью остановки.



Хочешь посмотреть как работает инструкция, что она изменяет?
Вбивай инструкцию в память сам без всяких ассемблеров и линуксов. Пиши в память и регстры данные для неё. Скажи симулятору выполнить инструкцию и смотри, как она сработала.
3
Модератор
2131 / 1000 / 170
Регистрация: 23.07.2018
Сообщений: 3,349
Записей в блоге: 3
20.08.2018, 09:18

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

Возможность отмены снимает нервное напряжение.

Добавлено через 6 минут
Для старых компьютеров сейчас много разных симуляторов, в том числе и онлайн. На ARMах прежних лет делали игровые приставки и консоли. Может для них есть что-то подходящее для знакомства с семейством?

Современные чипы и платы проще программировать в IDE от производителя, чем самому сооружать симулятор. А для заброшенных устройств энтузиасты могли что-нибудь наваять.

Добавлено через 39 минут
Цитата Сообщение от ОС Посмотреть сообщение
Почему Вы всё время копируете старый код с опечаткой, и несуществующим на Вашей машине вариантом cmp из первого сообщения?
Я тоже об этом думал.
Если pcmax заходит на форум, скажем с планшета на адроиде с мобильным интернетом, и планшет постоянно не подключен к "лабораторному" компьютеру, то ему намного быстрее скопировать текст из старых сообщений.
Скопировать код с компьютера, конечно, тоже не долго, но для этого нужно подключить планшет, скопировать фрагмент кода на флешку планшета. Потом уже в андроиде найти этот файл, в каком-то приложении его открыть и оттуда скопировать и вствить в браузер. На андроиде это не очень удобно.
Если бы всё было на одном компьютере, ему бы было проще перетащить текст из окна терминала в сообщение, а не описывать своими словами вывод программы.

Не специально же он затягивает процесс!
2
3410 / 1829 / 489
Регистрация: 28.02.2015
Сообщений: 3,696
21.08.2018, 18:48
Цитата Сообщение от pcmax Посмотреть сообщение
ребята, я все больше и больше убеждаюсь, что Вы просто ржете надо мной.
Да, нет нам плакать хочется. Вам эксперты(которые прочитали кучу книг) говорят о простых вещах, а Вы не понимаете(т.к. читать не хотите).
Цитата Сообщение от Mikl___ Посмотреть сообщение
я уже писал, для процессора всё равно, ЧТО внутри регистра или ячейки памяти, символы, числа или команды, он с ними работает как с двоичными числами
Попробую совсем на пальцах:
Первая миниатюра
В краном прямоугольнике регистры CS : 26E0 IP : 0021, если перейти по стрелке, то попадаем в поле команд процессора, и соответствующим им мнемоническим записям ассемблера.
0021адрес 2100код пеарции MOV [ BX+SI],AXмнемоника
Т.к. CS и DS имеют одно значение равное 26Е0, то нижнее поле 2 с кучей цветных стрелок направленных на него, показывают на один участок памяти, но в разных ракурсах.

Вторая миниатюра
Выполняем три команды процессора:
0021 2100 MOV [ BX + SI ],AX
0023 8A162100 MOV DL,[ 0021 ]
0027 A22100 MOV [ 0021 ],AL

Цель этих команд показать, что выполняя что-либо меняется все вокруг.
0021 0000 ADD [ BX + SI ],AL
0023 8A162100 MOV DL,[ 0021 ]
0027 A22100 MOV [ 0021 ],AL

Записав по адресу 0021 другое значение, мы поменяли саму команду, то как её понимает процессор.

Третья миниатюра
Выполнив функцию DOS ah=02 | int 21h (вывод на экран символа ASCII с кодом в регистре DL, в Linux нет такого аналога), имеем символ на экране.
(там ещё и компиляция показана).


Думаю, что Вы начнете понимать, что процессор работает с числами, но все зависит от того как на эти числа смотрит сам процессор.
Если это CS : IP - код операции,
DS : адрес - число,
регистры AX,DX,CX - число,
BX, SI, DI, BP - и число и адрес, зависит, в какой команде и как используется этот регистр.
Миниатюры
Ввод числа с клавиатуры, сравнение его с константой и вывод соответствующей строки   Ввод числа с клавиатуры, сравнение его с константой и вывод соответствующей строки   Ввод числа с клавиатуры, сравнение его с константой и вывод соответствующей строки  

3
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
21.08.2018, 18:48
Помогаю со студенческими работами здесь

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

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

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

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

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


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

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

Новые блоги и статьи
Асинхронный приём данных из COM-порта
Argus19 01.05.2026
Асинхронный приём данных из COM-порта Купил на aliexpress термопринтер QR701. Он оказался странным. Поключил к Arduino Nano. Был очень удивлён. Наотрез отказывается печатать русские буквы. Чтобы. . .
попытка написать игровой сервер на C++
pyirrlicht 29.04.2026
попытка написать игровой сервер на плюсах с открытым бесконечным миром. возможно получится прикрутить интерпретатор питон для кастомизации игровой логики. что есть на текущий момент:. . .
Контроль уникальности выбранного документа-основания при изменении реквизита
Maks 28.04.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРемонтСпецтехники", разработанного в КА2. Задача: уведомлять пользователя, если указанная заявка (документ-основание). . .
Благородство как наказание
Maks 24.04.2026
У хорошего человека отношения с женщинами всегда складываются трудно. А я человек хороший. Заявляю без тени смущения, потому что гордиться тут нечем. От хорошего человека ждут соответствующего. . .
Валидация и контроль данных табличной части документа перед записью
Maks 22.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в КА2. Задача: контроль и валидация данных табличной части документа перед записью с учетом регламента компании. . .
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru