《Intel+汇编语言程序设计(第五版》——第6章 条件处理

    技术2025-07-24  14

     

     

     

     

    XOR指令两个操作数的尺寸必须相同。影响的标志:总是使得CF=0、OF=0  依据目的操作数的值修改SF、ZF和PF的值

     

    X Y X Y X Y Y = X 0 0 0 0 0 1 1 0 1 0 1 1 1 1 0 1

     

    XOR指令的特性:如果将某个操作数与同样的操作数执行两次“异或”运算后,其值保持不变。利用该特性可以实现简单的数据加密

    TITLE Program Template (Template.asm) INCLUDE Irvine32.inc KEY=239 ;1~255之间的任意值 BUFMAX=128 ;缓冲区的最大值 .data ;(在此插入变量) sPrompt BYTE "Enter the plain text",0 sEncrypt BYTE "Cipher text: ",0 sDectypt BYTE "Decrypted: ",0 buffer BYTE BUFMAX+1 DUP(0) bufSize DWORD ? .code main PROC ;(在此插入可执行代码) call InputTheString ;输入明文 call TranslatBuffer ;加密缓冲区 mov edx,OFFSET sEncrypt ;显示加密的消息 call DisplayMessage call TranslatBuffer ;解密缓冲区 mov edx,OFFSET sDectypt ;显示解密消息 call DisplayMessage exit main ENDP ;(在此插入其他子程序) InputTheString PROC pushad mov edx,OFFSET sPrompt ;显示提示消息 call WriteString mov ecx,BUFMAX ; 最多字符数目 mov edx,OFFSET buffer ; 指向缓冲区 call ReadString ;输入字符串 mov bufSize,eax ;保存其长度 call Crlf popad ret InputTheString ENDP DisplayMessage PROC pushad call WriteString mov edx,OFFSET buffer ;显示缓冲区的内容 call WriteString call Crlf call Crlf popad ret DisplayMessage ENDP TranslatBuffer PROC pushad mov ecx,bufSize ;循环计数器 mov esi,0 ; 缓冲区的索引0 L1: xor buffer[esi],KEY ;转换一个字节 inc esi ;指向下一个字节 loop L1 popad ret TranslatBuffer ENDP END main

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    最新回复(0)