-1

アセンブリを使用してシーザー暗号プログラムを作成しようとしています。エラーはありませんが、実行すると何も表示されず、黙って終了します。これは私が書いたものです..

.MODEL small
.STACK 64
.DATA

  ORG     0000h            ;Start of code   
  MSG1 DB "Please input your string [Max 15 chars]: $"
  int 21h
  KEY1 DB "Please input your required shift  [RANGE 0 -F]: $"
  MSG2 DB "YOUR ENCRYPTED MESSAGE  IS : $"
  ErrorKey DB "Key Value out of range-please renter it range 0-F : $"
  STR1 DW 15 DUP('$') ;store plain text
  KEYV DB ?  ;to store the value of the key 
  STR2 DW 15 DUP(?); store encrypted message

.CODE
MAIN PROC FAR
MOV AX,@DATA
MOV DS,AX

;to display message 1 
MOV DX, OFFSET MSG1
MOV AH,09H
INT 21H               

;now the user enters the message
mov ax, 0000h
int 16h

mov ax, 0000h ; This key press it just to pause the program so you can see.
Int 16h       ; that you can’t see your own input
mov STR1,ax ;moving the message to be stored in str1

;to display Key message 
MOV DX, OFFSET KEY1
MOV AH,09H
INT 21H           


;now the user enters the key
KEY:
mov al, 0000h
int 16h

mov ax, 0000h ; This key press it just to pause the program so you can see.
Int 16h       ; that you can see your own input
mov KEYV,al ;moving the message to be stored in KEYV        


;now checking that the value of the key is within the correct range
CHECK: 
CMP KEYV,0FH  ;
JG show;       if value greater than F go to show
CMP KEYV,10H  ; if value below or equal F go to encrypt
JB ENCRYPT ; 

show:   
;to display Error Key message 
MOV DX, OFFSET ErrorKey
MOV AH,09H
INT 21H           
;restore the key value         
Jp KEY



 ENCRYPT:   MOV SI,OFFSET STR1  ;put the message in SI
            MOV BL,KEYV
            MOV DI,OFFSET STR2 
            MOV CX,15   

 ENCPROCESS:             
            MOV AL ,BYTE PTR[SI]  ;move first byte of PT in AL
            ADD  AL,BL   ;37 Add to it the key value
            MOV [DI],AL;     ;store the encrypted byte in DI
            INC SI 
            INC DI
            LOOP ENCPROCESS 


 ;to display encrypted message
MOV DX, OFFSET STR2
MOV AH,09H
INT 21H   




MAIN ENDP
END MAIN

私は何を間違っていますか?

4

1 に答える 1

0

ブレークポイントを配置/セクションごとにデバッグして、問題を絞り込みます

次に、問題を見つけたときに、それを修正できない場合は、より具体的にすることができます

あなたの代替手段は、あなたのプログラム全体を通して、誰かの親切な魂が彼らの道を歩き回ることを期待することです

于 2013-05-21T00:35:44.093 に答える