Для упражнения по программированию на языке ассемблера для процессоров x86 я создал программу выбора таблицы дел в Visual Studio, которая будет принимать целочисленное значение и указывать на соответствующую процедуру, связанную с этим значением.Однако, когда я ввожу целое число, оно не указывает на правильную процедуру.Фактически, он полностью обходит процесс выбора.
Когда я запускаю программу и ввожу целое число в диапазоне от 1 до 4, она ничего не отображает и завершает программу.
Примечание:Я новичок в ассемблере, поэтому не знаю слишком много.
INCLUDE irvine32.inc
.data
CaseTable BYTE '1'
DWORD AND_op
BYTE '2'
DWORD OR_op
BYTE '3'
DWORD NOT_op
BYTE '4'
DWORD XOR_op
NumberOfEntries = 4
titlemsg BYTE "---------- Boolean Calculator ----------", 0
ANDprompt BYTE "1. X AND Y", 0
ORprompt BYTE "2. X OR Y", 0
NOTprompt BYTE "3. NOT X", 0
XORprompt BYTE "4. X XOR Y", 0
Exitprompt BYTE "5. Exit Program", 0
askUser BYTE "Please enter an option number: ", 0
.code
main PROC
; Display prompts and title...
mov edx, OFFSET askUser
Call WriteString
Call ReadInt ; Inserts number entered into the EAX register
.IF al == 5 ; Conditional Statement if user chooses to end program.
jmp L3
.ENDIF
mov ebx, OFFSET CaseTable
mov ecx, NumberOfEntries
L1:
cmp al, [ebx] ; Match found?
jne L2 ; No: Continue
Call NEAR PTR [ebx + 1] ; Yes: Call procedure
Call Crlf
jmp L3
L2:
add ebx, 5
loop L1
L3:
INVOKE ExitProcess, 0
main ENDP
; Procedures called after a match has been made merely display text to the screen, so they are unimportant to the problem at hand.
END main