µ±Ç°Î»ÖãºÊ×Ò³ > ΢»úÔÀíÓë½Ó¿Ú¼¼Êõ+²Î¿¼´ð°¸
disp wvar disp dhw1: dhw2: disp
loop dhw1 pop ecx pop ebx ret endp
£¨3£©
; Êý¾Ý¶Î word 307281AFH ; ´úÂë¶Î£¬Ö÷³ÌÐò push wvar call disp add esp,4 mov al,'H' call dispc ; ´úÂë¶Î£¬×Ó³ÌÐò proc push ebp mov ebp,esp push ebx push ecx mov ecx,8 mov eax,[ebp+8] rol eax,4 mov ebx,eax and al,0fh add al,30h cmp al,'9' jbe dhw2 add al,7 call dispc mov eax,ebx loop dhw1 pop ecx pop ebx pop ebp ret endp
; ת»»ÎªASCIIÂë ; 8λ
¡²Ï°Ìâ4.27¡³
ÅäºÏÀýÌâ4-11µÄ¼òµ¥¼ÓÃܽâÃܳÌÐò£¬Éè¼ÆÒ»¸öÊäÈëÃÜÂëµÄ³ÌÐò£¬½«ÊäÈëµÄÈô¸É×Ö·û¾¹ýÊʵ±Ëã·¨µÃµ½Ò»¸ö×Ö½ÚÁ¿ÃÜÂë¡£ ¡²½â´ð¡³
;ex0427.asm key msg0 passw errormsg bufnum buffer
include io32.inc .data byte ?
byte 'Enter your password:',0 byte 50 dup(0)
byte 'Password error, input again!',13,10,0 = 255
byte bufnum+1 dup(0) ; ¶¨Òå¼üÅÌÊäÈëÐèÒªµÄ»º³åÇø
£ £29
msg1 msg2 msg3 start: again0:
encrypt: again: again1:
byte 'Enter messge: ',0 byte 'Encrypted message: ',0 byte 'Original messge: ',0 .code
mov eax,offset msg0 call dispmsg
mov eax,offset passw ; ÉèÖÃÈë¿Ú²ÎÊýEAX call readmsg mov ecx,eax dec ecx xor ebx,ebx mov al,passw[ebx] inc ebx
xor al,passw[ebx] loop again0 mov key,al
mov eax,offset msg1 call dispmsg
mov eax,offset buffer ; ÉèÖÃÈë¿Ú²ÎÊýEAX call readmsg push eax mov ecx,eax xor ebx,ebx mov al,key
xor buffer[ebx],al inc ebx dec ecx jnz encrypt
mov eax,offset msg2 call dispmsg
mov eax,offset buffer ; ÏÔʾ¼ÓÃܺóµÄÃÜÎÄ call dispmsg call dispcrlf ;
mov eax,offset msg0 call dispmsg
mov eax,offset passw ; ÉèÖÃÈë¿Ú²ÎÊýEAX call readmsg mov ecx,eax dec ecx xor ebx,ebx mov al,passw[ebx] inc ebx
xor al,passw[ebx] loop again1 cmp key,al jz next
; ÓëÔ¼ÓÃܹؼü×Ö±È½Ï ; ÃÜÂëÏàͬ£¬Ôò½øÐнâÃÜ
; ÌáʾÊäÈë½âÃÜÃÜÂë´íÎó
;ʹÓüòµ¥µÄÒì»ò·½·¨µÃµ½¼ÓÃܹؼü×Ö ; µ÷ÓÃÊäÈë×Ö·û´®×Ó³ÌÐòÊäÈëÃÜÂë ; ÌáʾÊäÈë½âÃÜÃÜÂë
; µÈͬÓÚÖ¸Áloop encrypt ; ´¦ÀíÏÂÒ»¸ö×Ö·û ; µ÷ÓÃÊäÈë×Ö·û´®×Ó³ÌÐò ; ×Ö·û¸öÊý±£´æ½øÈë¶ÑÕ»
; ECX£½Êµ¼ÊÊäÈëµÄ×Ö·û¸öÊý£¬×÷Ϊѻ·µÄ´ÎÊý ; EBXÖ¸ÏòÊäÈë×Ö·û ; AL£½¼ÓÃܹؼü×Ö ; Òì»ò¼ÓÃÜ ; ±£´æ¼ÓÃܹؼü×Ö ; ÌáʾÊäÈë×Ö·û´®
;ʹÓüòµ¥µÄÒì»ò·½·¨µÃµ½¼ÓÃܹؼü×Ö ; µ÷ÓÃÊäÈë×Ö·û´®×Ó³ÌÐòÊäÈëÃÜÂë ; ÌáʾÊäÈë¼ÓÃÜÃÜÂë
mov eax,offset errormsg
£ £30
next:
decrypt:
call dispmsg jmp again pop ecx xor ebx,ebx mov al,key
xor buffer[ebx],al inc ebx dec ecx jnz decrypt
mov eax,offset msg3 call dispmsg
mov eax,offset buffer ; ÏÔʾ½âÃܺóµÄÃ÷ÎÄ call dispmsg
; ´¦ÀíÏÂÒ»¸ö×Ö·û
; ´Ó¶ÑÕ»µ¯³ö×Ö·û¸öÊý£¬×÷Ϊѻ·µÄ´ÎÊý ; EBXÖ¸ÏòÊäÈë×Ö·û ; AL£½½âÃܹؼü×Ö ; Òì»ò½âÃÜ
¡²Ï°Ìâ4.28¡³
Éè¼ÆÒ»¸ö¼òµ¥µÄÁ½¸öÕûÊýµÄ¼Ó·¨Æ÷³ÌÐò¡£ ¡²½â´ð¡³
;ex0428.asm msg1 msg2 start:
exit 0 end start
mov eax,offset msg2 call dispmsg call readc cmp al,20h je start call readsid add ebx,eax mov al,'=' call dispc mov eax,ebx call dispsid call dispcrlf mov eax,offset msg1 call dispmsg call readsid
mov ebx,eax mov al,'+' call dispc call dispcrlf include io32.inc .data
byte 'Enter the integers:',13,10,0
byte 13,10,'Enter space to continue! Enter any other key to exit!',13,10,0 .code
£ £31
¡²Ï°Ìâ4.29¡³
ÀûÓÃÊ®Áù½øÖÆ×Ö½ÚÏÔʾ×Ó³ÌÐòDISPHBÉè¼ÆÒ»¸ö´ÓµÍµØÖ·µ½¸ßµØÖ·Öð¸ö×Ö½ÚÏÔʾij¸öÖ÷´æÇøÓòÄÚÈݵÄ×Ó³ÌÐòDISPMEM¡£ÆäÈë¿Ú²ÎÊý£ºEAX£½Ö÷´æÆ«ÒƵØÖ·£¬ECX£½×Ö½Ú¸öÊý£¨Ö÷´æÇøÓòµÄ³¤¶È£©¡£Í¬Ê±±àдһ¸öÖ÷³ÌÐò½øÐÐÑéÖ¤¡£ ¡²½â´ð¡³
;ex0429.asm in Windows Console var start: dispmem dispm1: dispmem
include io32.inc .data
byte 'This is a test!' .code ; Ö÷³ÌÐò
mov eax,offset var mov ecx,sizeof var call dispmem exit 0 ; ×Ó³ÌÐò proc push ebx mov ebx,eax mov al,[ebx] call disphb mov al,' ' call dispc inc ebx loop dispm1 pop ebx ret endp end start
¡²Ï°Ìâ4.30¡³
½«ÀýÌâ4-19·Ö±ðʹÓÃ×Ó³ÌÐòÄ£¿é¡¢×Ó³ÌÐò¿âºÍ×Ó³ÌÐò¿â°üº¬·½·¨Éú³É×îÖÕ¿ÉÖ´ÐÐÎļþ¡£ ¡²Ï°Ìâ4. 31¡³
Çø±ðÈçϸÅÄºê¶¨Òå¡¢ºêµ÷ÓᢺêÖ¸Áî¡¢ºêÕ¹¿ª¡¢ºê»ã±à¡£
¡²½â´ð¡³
ºê¶¨Ò壺¾ÍÊÇ¶Ôºê½øÐÐ˵Ã÷£¬ÓÉÒ»¶Ôºê»ã±àαָÁîMACROºÍENDMÀ´Íê³É¡£ ºêµ÷Ó㺺궨ÒåÖ®ºóµÄʹÓá£ÔÚʹÓúêÖ¸ÁîµÄλÖÃдϺêÃû£¬ºó¸úʵÌå²ÎÊý¡£ ºêÖ¸ÁʹÓúêʱ£¬ÆäÐÎʽºÜÏñÖ¸ÁËùÒÔ³ÆÎªºêÖ¸Áî¡£ ºêÕ¹¿ª£ºÔÚ»ã±àʱ£¬»ã±à³ÌÐòÓöÔÓ¦µÄ´úÂëÐòÁÐÌæ´úºêÖ¸Áî¡£ ºê»ã±à£ºÖ¸Ê¹ÓúêµÄ·½·¨½øÐлã±àÓïÑÔ³ÌÐòÉè¼Æ¡£ ¡²Ï°Ìâ4. 32¡³
Ö±½ÓʹÓÿØÖÆÌ¨ÊäÈëºÍÊä³öº¯ÊýʵÏÖÀýÌâ4-21µÄ¹¦ÄÜ£¨²»Ê¹ÓÃREADMSGºÍDISPMSG×Ó³ÌÐò£©¡£ ¡²½â´ð¡³
¡²Ï°Ìâ4. 33¡³
Ö±½ÓʹÓÿØÖÆÌ¨Êä³öº¯ÊýʵÏÖij¸öÖ÷´æÇøÓòÄÚÈݵÄÏÔʾ£¨Ï°Ìâ4.29µÄ¹¦ÄÜ£©¡£¿ÉÒԸĽøÏÔʾÐÎʽ£¬ÀýÈçÿÐÐÏÔʾ16¸ö×Ö½Ú£¨128룩£¬Ã¿ÐпªÊ¼ÏÈÏÔʾÊ׸öÖ÷´æµ¥ÔªµÄÆ«ÒÆµØÖ·£¬È»ºóÓÃðºÅ·Ö¸ôÖ÷´æÄÚÈÝ¡£ ¡²½â´ð¡³
£ £32
¹²·ÖÏí92ƪÏà¹ØÎĵµ