DATA SEGMENT
INFO0 DB 10,'Options (1)Encrypt, (2)Decrypt, (3) Exit: $'
INFO1 DB 13, 10,'Please input a key value (1-9): $'
INFO2 DB 13, 10,'The plaintext is: $'
INFO3 DB 'Goodbye!$'
VLE DB 100 DUP
MENU DB 3
KEY DB '1'
TEXT DB 40, ?, 40 DUP,?,
CRLF DB 0AH, 0DH, '$'
CRLF2 DB 0AH, 0DH, 0AH, 0DH, '$'
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
MAIN:
; print the main menu
LEA DX,INFO0
MOV AH,9
INT 21H
; get the option
MOV AH,1
INT 21H
; at user's option
CMP AL,'1'
JZ ENCRYPT ; test if encrypt
JMP QUIT ; exit on other options
ENCRYPT:
; ask the key
LEA DX,INFO1
MOV AH,9
INT 21H
; get the key
MOV AH,1
INT 21H
MOV VLE, AL
; ask the plaintext
LEA DX,INFO2
MOV AH,9
INT 21H
; get the plaintext
LEA DX,TEXT
MOV AH,10
INT 21H
MOV CL,TEXT
ENCRYPT_NEXT:
ADD CL,VLE
MOV [DI], CL
INC DI
LOOP ENCRYPT
MOV DX, OFFSET INFO2
MOV AH, 9 ;lead mes_0
INT 21H
MOV DX,offset DI
mov AH,9
INT 21H
QUIT:
; say goodbye
LEA DX,INFO3
MOV AH,9
INT 21H
MOV AH,4CH
INT 21H
CODE ENDS
END START