section .data
section .bss
num1 resb 2
num2 resb 2
num3 resb 2
section .text
global _start
_start:
mov eax, 3
mov ebx, 0
mov ecx, num1
mov edx, 2
int 0x80
mov al, [num1]
sub al, '0'
add al, 9 ;I added 9 here
mov bl, al
mov eax, 3
mov ebx, 0
mov ecx, num2
mov edx, 2
int 0x80
mov al, [num2]
sub al, '0'
mov bh, al
mov eax, 3
mov ebx, 0
mov ecx, num3
mov edx, 2
int 0x80
mov al, [num3]
sub al, '0'
mov cl, al
mov al, bl
mov ah, 0
mul bh
mov al, bl
xor al, cl
and al, 0000110b
cmp al, 0000110b ;compare al to 0110
je high_priority
standard_priority:
mov eax, 4
mov ebx, 1
mov ecx, msg2
mov edx, msg2len
int 0x80
jmp exit_program
high_priority:
mov eax, 4
mov ebx, 1
mov ecx, msg1
mov edx, msg1len
int 0x80
exit_program:
mov eax, 1
int 0x80
Поэтому моя цель в этом коде — создать арифметическое выражение типа val = (num1 +9)*num2, затем я возьму значение val и выполню xor для val и num3, затем использую результат xor для сравнения его с фиксированным значением (0110), и если оно равно, оно переходит к high_priority, иначе оно переходит к Standard_priority.
Каким-то образом он показывает стандарт для ввода, например:
где 60 = (3+9)*5 тогда 60 xor 2 равно 62, что в двоичном виде равно 111110, что соответствует сравнению с 0110, однако оно все равно идет прямо к стандартному_приоритету, а не прыгает. что мне не хватает?
exit_program: mov eax, 1 int 0x80 [/code] Поэтому моя цель в этом коде — создать арифметическое выражение типа [b]val = (num1 +9)*num2[/b], затем я возьму значение val и выполню xor для val и num3, затем использую результат xor для сравнения его с фиксированным значением [b](0110)[/b], и если оно равно, оно переходит к high_priority, иначе оно переходит к Standard_priority. Каким-то образом он показывает стандарт для ввода, например: [code]num1 : 3 num2 : 5 num3 : 2 [/code] где [b]60 = (3+9)*5[/b] тогда 60 xor 2 равно 62, что в двоичном виде равно 111110, что соответствует сравнению с 0110, однако оно все равно идет прямо к стандартному_приоритету, а не прыгает. что мне не хватает?