eg0411.asm

来自「宏汇编器」· 汇编 代码 · 共 42 行

ASM
42
字号
;eg0411.asm
	include io32.inc
	.data
key	byte 234
bufnum	= 255
buffer	byte bufnum+1 dup(0)	; 定义键盘输入需要的缓冲区
msg1	byte 'Enter messge: ',0
msg2	byte 'Encrypted message: ',0
msg3	byte 13,10,'Original messge: ',0
	.code
start:
	mov eax,offset msg1	; 提示输入字符串
	call dispmsg
	mov eax,offset buffer	; 设置入口参数EAX
	call readmsg	; 调用输入字符串子程序
	push eax	; 字符个数保存进入堆栈
	mov ecx,eax	; ECX=实际输入的字符个数,作为循环的次数
	xor ebx,ebx	; EBX指向输入字符
encrypt:	mov al,key	; AL=加密关键字
	xor buffer[ebx],al	; 异或加密
	inc ebx
	dec ecx	; 等同于指令:loop encrypt
	jnz encrypt	; 处理下一个字符
	mov eax,offset msg2
	call dispmsg
	mov eax,offset buffer	; 显示加密后的密文
	call dispmsg
	;
	pop ecx	; 从堆栈弹出字符个数,作为循环的次数
	xor ebx,ebx	; EBX指向输入字符
decrypt:	mov al,key	; AL=解密关键字
	xor buffer[ebx],al	; 异或解密
	inc ebx
	dec ecx
	jnz decrypt	; 处理下一个字符
	mov eax,offset msg3
	call dispmsg
	mov eax,offset buffer	; 显示解密后的明文
	call dispmsg

	exit 0
	end start

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?