Форум программистов, компьютерный форум, киберфорум
Assembler: Windows/protected mode
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.69/13: Рейтинг темы: голосов - 13, средняя оценка - 4.69
15 / 22 / 6
Регистрация: 13.10.2011
Сообщений: 167
MASM32

Ошибка при вводе числа при помощи Readconsole

13.12.2011, 04:32. Показов 2808. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
здравствуйте.При программировании на масме32 возникла проблема,а именно:я ввожу в REadconsole число(чмсло-5),которое у меня после ввода будет в массиве,далее я сохраняю в регистр значение нулевого байта(моё число) и делаю cmp bh,5 и соответственно переход по неравенству нулю и тут возникла ошибка вместо того чтобы выполнить инструкции за jnz nzero (так как произошло равенство),каким -то образом происходит переход по неравенству нулю.почему так происходит безпонятия,есть предположение что ридконсоль работает только с символами,тоесть нужна какая то перекодировка,по этому вопросу инфы не нашёл,откладчик,тоже тупит,расскажите как сделать или исправьте мой пример,что сравнение и переход нормальный был.
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
32
33
34
35
36
37
38
39
40
.386
    .model flat, stdcall
    option casemap :none
    include \masm32\include\windows.inc
    include \masm32\include\user32.inc 
    include \masm32\include\masm32.inc
    include \masm32\include\kernel32.inc
    include \masm32\macros\macros.asm
    includelib \masm32\lib\user32.lib 
    includelib \masm32\lib\masm32.lib
    includelib \masm32\lib\kernel32.lib
Bsize equ 20
.data
buf db Bsize dup(?)
stdin dd ?
stdout dd ?
cRead dd ?
cWritten dd ?
msg db "Choose operation(+,-,*)",0dh,0ah
msg1 db "First value(1 to 8)",0dh,0ah
.code
start:
  invoke GetStdHandle,STD_OUTPUT_HANDLE
  mov stdout,eax
  invoke GetStdHandle,STD_INPUT_HANDLE
  mov stdin,eax
  invoke WriteConsoleA,stdout,ADDR msg1,SIZEOF msg1, cWritten,NULL
  NewLine:
    invoke ReadConsole,stdin,ADDR buf,Bsize,ADDR cRead,NULL
    cmp cRead,2
  jnz NewLine
      xor edi,edi
   mov bh,buf[edi]
 cmp bh,5
 jnz nzero
 invoke WriteConsoleA,stdout,ADDR msg,SIZEOF msg,ADDR cWritten,NULL
nzero:
jmp start
invoke ExitProcess,0
end start
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
13.12.2011, 04:32
Ответы с готовыми решениями:

Почему при вводе числа программа работает нормально, а при вводе буквы уходит в бесконечный цикл?
void mainmenu() { cout << "Введи число" << endl; cin >> choice; if (choice == 1) { cout << "Hello" << endl; } ...

Ошибка при вводе числа
Подозреваю, что где-то нужно обнулить переменную rows. Потому что (как показано на скрине) число "45" всегда состоит из первой...

Ошибка при вводе числа
Нужно провести несложный, но массивный расчет. Почему при вводе обычных чисел он часть мне дает вводить, показывает это?? Все вводил...

7
Ушел с форума
Автор FAQ
 Аватар для Mikl___
16373 / 7685 / 1080
Регистрация: 11.11.2010
Сообщений: 13,759
13.12.2011, 04:45
Typoii, цифра "5" в buf будет иметь код 35h (53 dec) поэтому сравнение с 5 и не срабатывает
0
15 / 22 / 6
Регистрация: 13.10.2011
Сообщений: 167
13.12.2011, 04:56  [ТС]
Прописал ,результат тот же,неправильный переход
0
Ушел с форума
Автор FAQ
 Аватар для Mikl___
16373 / 7685 / 1080
Регистрация: 11.11.2010
Сообщений: 13,759
13.12.2011, 05:57
Typoii, прописал что? я не экстрасенс, должно быть
Assembler
1
2
cmp bh,"5"
 jnz nzero
0
15 / 22 / 6
Регистрация: 13.10.2011
Сообщений: 167
13.12.2011, 08:56  [ТС]
пробил через откладчик ,эти инструкции xor edi,edi
mov bh,buf[edi]
cmp bh,5
jnz nzero вообще пропускает,берёт последнюю writeconsoleA и выдаёт результат символ сердце
0
Ушел с форума
Автор FAQ
 Аватар для Mikl___
16373 / 7685 / 1080
Регистрация: 11.11.2010
Сообщений: 13,759
13.12.2011, 08:58
Typoii, зрение хорошее? Внимательно посмотри на мой ответ в топике #4
0
15 / 22 / 6
Регистрация: 13.10.2011
Сообщений: 167
13.12.2011, 09:40  [ТС]
Я так и прописывал,толку ноль
0
Ушел с форума
Автор FAQ
 Аватар для Mikl___
16373 / 7685 / 1080
Регистрация: 11.11.2010
Сообщений: 13,759
13.12.2011, 09:55
наверное, есть разница между cmp bh,5 и cmp bh,"5"?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
13.12.2011, 09:55
Помогаю со студенческими работами здесь

Ошибка при вводе дробного числа
Подскажите пожалуйста , почему при вводе дробного числа (11,5) в edit1 происходит ошибка, если ввести обычное число, тогда все нормально. ...

Ошибка при вводе числа (GUI)
Есть программа написанная в матлабе. Необходимо считать значение из Эдита типа 0.00415 в переменную a. Пробовал следующим образом: ...

Ошибка при вводе большого числа
В этой теме была разобрана задача. Она прекрасно работает с небольшими числами, но вызывает переполнение при вводе больших чисел. Вопрос:...

Ошибка при вводе вещественного числа
При выполнении scanf("%f", &e) программа не реагирует на нажатие любой клавиши. #include <stdio.h> #include <math.h> ...

Ошибка при вводе вещественного числа
Подскажите пожалуйста, у меня программа по перевода расстояния (из метра в километр, из километра - в сантиметры...), и при вводе данного...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
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. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru