Проверка байт статуса - Assembler
Формулировка задачи:
Напишите программу которая проверяет байт STATUS и переходит к ROUTINE_1, если биты 1, 3 или 5 содержат 1. В противном случае она переходит к ROUTINE_2, если оба бита 1 и 3 содержат 1, и к ROUTINE_3, если биты 1 и 3 содержат 0. Во всех остальных случаях программа переходит к ROUTINE_4.
Программа работает некорректно. После запуска программа выводит 4. Даже если убрать jmp routine_4 все равно выводит 4
или добавить routine_5: mov ebx,99 после routine_4: mov ebx,4 и routine_5 не как не вызывать, то программа всё ровно выведет 99. Как решить эту проблему. Заранее спасибо.
Листинг программы
- .686
- .model flat,stdcall
- option casemap:none
- include \masm32\include\windows.inc
- include \masm32\include\user32.inc
- include \masm32\include\kernel32.inc
- include \masm32\include\masm32.inc
- includelib \masm32\lib\user32.lib
- includelib \masm32\lib\masm32.lib
- includelib \masm32\lib\kernel32.lib
- .data
- message db "5",0;
- mestitle db "вывод ",0
- buffer db 128 dup (0)
- format db "%d",0
- .code
- start:
- sub ebx,ebx
- xor eax,eax
- mov eax,10101b
- bt eax,1
- jc routine_1
- bt eax,3
- jc routine_1
- bt eax,5
- jc routine_1
- bt eax,1
- jc routine_2
- bt eax,3
- jc routine_2
- bt eax,1
- jnc routine_3
- bt eax,3
- jnc routine_3
- jmp routine_4
- routine_1: mov ebx,1
- routine_2: mov ebx,2
- routine_3: mov ebx,3
- routine_4: mov ebx,4
- invoke wsprintf, addr buffer,addr format,ebx
- invoke MessageBox,0,addr buffer,addr mestitle,MB_OK
- invoke ExitProcess,0
- call ExitProcess
- end start
Решение задачи: «Проверка байт статуса»
textual
Листинг программы
- 1
- 2
- 3
- 4
Объяснение кода листинга программы
- Создается переменная
байт_статуса
для хранения значения статуса в виде байта. - Запрашивается у пользователя ввод значения статуса и сохраняется в переменную
байт_статуса
. - Проверяется значение переменной
байт_статуса
с помощью условного оператора. - Выводится соответствующее сообщение пользователю в зависимости от значения переменной
байт_статуса
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д