Я пытаюсь вызвать функцию, которая выведет строку, определяющую, насколько «быстро» вы едете в своей машине, используя целые числа. Проблема в том, что независимо от того, что находится в регистре eax, он не выполняет должным образом цикл ELSE IF и завершает PROC.
INCLUDE Irvine32.inc ;Use Irvine32 library.
.data
;Declare variables here.
speed BYTE ?, 0
wTooFast BYTE "Woah! You are going way too fast! Slow down!", 0
tooFast BYTE "You are going faster than the speed limit. Slow down.", 0
speedLimit BYTE "You are maintaining an appopriate speed limit. Keep up being a safe driver!", 0
tooSlow BYTE "You are going slower than the flow of traffic. Speed up.", 0
wTooSlow BYTE "Is the engine even on? Speed up!", 0
.code
main PROC
;Write your code here.
target:
call Randomize
mov eax, 101
call RandomRange
.IF (eax <= 40)
jmp target
.ENDIF
call WriteInt
call SpeedVal
mov edx, 0
mov speed, al
mov edx, OFFSET speed
call WriteString
call Crlf
exit ;Exit program.
main ENDP
SpeedVal PROC
.IF (eax >= 85)
mov al, wTooFast
.ELSEIF (eax > 75) && (eax < 85)
mov al, tooFast
.ELSEIF (eax > 64) && (eax < 76)
mov al, speedLimit
.ELSEIF (eax > 54) && (eax < 65)
mov al, tooSlow
.ELSE
mov al, wTooSlow
.ENDIF
SpeedVal ENDP
END main
должно выводиться в зависимости от того, какая случайная переменная является одной из строк, объявленных в разделе .data.