Проверка байт статуса - Assembler

Узнай цену своей работы

Формулировка задачи:

Напишите программу которая проверяет байт STATUS и переходит к ROUTINE_1, если биты 1, 3 или 5 содержат 1. В противном случае она переходит к ROUTINE_2, если оба бита 1 и 3 содержат 1, и к ROUTINE_3, если биты 1 и 3 содержат 0. Во всех остальных случаях программа переходит к ROUTINE_4.
.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
Программа работает некорректно. После запуска программа выводит 4. Даже если убрать jmp routine_4 все равно выводит 4 или добавить routine_5: mov ebx,99 после routine_4: mov ebx,4 и routine_5 не как не вызывать, то программа всё ровно выведет 99. Как решить эту проблему. Заранее спасибо.

Решение задачи: «Проверка байт статуса»

textual
Листинг программы
1
2
3
4

Объяснение кода листинга программы

  1. Создается переменная байт_статуса для хранения значения статуса в виде байта.
  2. Запрашивается у пользователя ввод значения статуса и сохраняется в переменную байт_статуса.
  3. Проверяется значение переменной байт_статуса с помощью условного оператора.
  4. Выводится соответствующее сообщение пользователю в зависимости от значения переменной байт_статуса.

Оцени полезность:

15   голосов , оценка 3.8 из 5
Похожие ответы