Question
Greeting, I am trying to run this assembly program. I get the error Source.asm(56): error A2070: invalid instruction operands (XOR buffer[ESI],key[EDX] ). Can you, please,
Greeting, I am trying to run this assembly program. I get the error "Source.asm(56): error A2070: invalid instruction operands" (XOR buffer[ESI],key[EDX] ). Can you, please, help me fix this problem and anything that I may have missed? Do I have to use PUSHAD and POPHD too? I got the code from the solution from chapter 6.11.2, problem 8 Message Encryption, and it has the same error. Thanks.
; This program clears the screen, creates the key and inputs ; plain text from the user, encrypts plain text and display it, ; decrypt the cipher text and display it
INCLUDE Irvine32.inc
BUFFMAX = 128
.data strPlainText BYTE "Enter the plain text:",0 strEncrptPlainText BYTE "The encrypt plain text is:",0 strDecrptPlainText BYTE "The Decrypt cipher text is:",0 buffer BYTE BUFFMAX+1 DUP(0) buffSize DWORD ? key BYTE "ABXmv#7" keySize DWORD 7
.code
main PROC ;call the procedures
CALL Clrscr ;clear the screen CALL InputPlainText ;input plain text from the user CALL ConvertText MOV EDX, OFFSET strEncrptPlainText CALL DisplayText ;display encrypted text
CALL ConvertText MOV EDX, OFFSET strDecrptPlainText ;display decrypted text CALL DisplayText exit main ENDP
InputPlainText PROC USES ECX EDX ;input the plain text, receive and return nothing MOV EDX, OFFSET strPlainText CALL WriteString ;write the string strPlainText CALL Crlf MOV ECX, BUFFMAX ;store the length of maximum buffer MOV EDX, OFFSET buffer CALL ReadString ;read the buffer
MOV buffSize, EAX ;store the input buffer CALL Crlf RET InputPlainText ENDP
ConvertText PROC USES ESI ECX EDX ;encrypt the text and decrypt the cipher text, receive and return nothing
MOV ECX, buffSize ;convert each character of buffer text MOV EDX, 0 ;initialize index of key string MOV ESI, 0 ;initialize index of buffer string
L1: XOR buffer[ESI],key[EDX] ;convert the buffer text INC ESI ;increment ESI register INC EDX ;increment EDX register
CMP EDX, keySize ;compare if EDX equals keySize JE L2 ;jump to L2 JMP L1
L2: MOV EDX, 0 ;reinitialize index to 0 LOOP L1
RET
ConvertText ENDP
DisplayText PROC USES EDX ;display the encrypt and decrypt text
MOV EDX, OFFSET buffer CALL WriteString ;write the content of buffer CALL Crlf CALL Crlf
RET DisplayText ENDP
END main
Step by Step Solution
There are 3 Steps involved in it
Step: 1
Get Instant Access to Expert-Tailored Solutions
See step-by-step solutions with expert insights and AI powered tools for academic success
Step: 2
Step: 3
Ace Your Homework with AI
Get the answers you need in no time with our AI-driven, step-by-step assistance
Get Started