¡²½â´ð¡³
sub al,al dec al inc al
mov al,89h add al,al add al,9dh cmp al,0bch sub al,al dec al inc al
; AL£½89H ; AL£½12H ; AL£½0AFH ; AL£½0AFH ; AL£½00H ; AL£½0FFH ; AL£½00H
CF ZF 1 0 1 0 0 0
0 0 0 1 0 1
SF 0 1 1 0 1 0
OF 1 0 0 0 0 0
PF 1 1 1 1 1 1
¡²Ï°Ìâ3.22¡³ÓÐÁ½¸ö64λÎÞ·ûºÅÕûÊý´æ·ÅÔÚ±äÁ¿buffer1ºÍbuffer2ÖУ¬¶¨ÒåÊý¾Ý¡¢±àд´úÂëÍê³ÉEDX.EAX¡ûbuffer1£buffer2¹¦ÄÜ¡£ ¡²½â´ð¡³ buffer1 buffer2
¡²Ï°Ìâ3.23¡³·Ö±ðÖ´ÐÐÈçϳÌÐòƬ¶Ï£¬ËµÃ÷ÿÌõÖ¸ÁîµÄÖ´Ðнá¹û£º
£¨1£©
£¨2£©
£¨3£©
mov eax,1011b rol eax,2
; EAX£½__________B
; EAX£½__________B£¬CF£½__________
mov eax,1010b shr eax,2 shl eax,1 and eax,3
; EAX£½__________B
; EAX£½__________B£¬CF£½__________ ; EAX£½__________B£¬CF£½__________ ; EAX£½__________B£¬CF£½__________
mov esi,10011100b and esi,80h or esi,7fh xor esi,0feh
; ESI£½__________H ; ESI£½__________H ; ESI£½__________H ; ESI£½__________H
; Êý¾Ý¶Î qword 67883000h qword 67762000h ; ´úÂë¶Î
mov eax,dword ptr buffer1 mov edx,dword ptr buffer1+4 sub eax,dword ptr buffer2 sbb edx,dword ptr buffer2+4
£ £17
£¨4£©
¡²½â´ð¡³
£¨1£©
£¨2£©
£¨3£©
£¨4£©
rcr eax,1 or eax,3 xor eax,eax
; EAX£½__________B£¬CF£½__________ ; EAX£½__________B£¬CF£½__________
; EAX£½__________£¬CF£½__________£¬OF£½__________ ; ZF£½__________£¬SF£½__________£¬PF£½__________
; ESI£½9CH ; ESI£½80H ; ESI£½FFH ; ESI£½01H
; EAX£½1010B£¨¿ÉÒÔÓÐǰµ¼0£¬ÏÂͬ£© ; EAX£½0010B£¬CF£½1 ; EAX£½0100B£¬CF£½0 ; EAX£½0000B£¬CF£½0
; EAX£½1011B£¨¿ÉÒÔÓÐǰµ¼0£¬ÏÂͬ£© ; EAX£½101100B£¬CF£½0 ; EAX£½10110B£¬CF£½0 ; EAX£½10111B£¬CF£½0 ; EAX£½0£¬CF£½0£¬OF£½0 ; ZF£½1£¬SF£½0£¬PF£½1
¡²Ï°Ìâ3.24¡³3.24 ¸ø³öÏÂÁи÷ÌõÖ¸ÁîÖ´ÐкóAXµÄ½á¹û£¬ÒÔ¼°×´Ì¬±êÖ¾CF¡¢OF¡¢SF¡¢ZF¡¢PFµÄ״̬¡£ ¡²½â´ð¡³
mov ax,1470h and ax,ax or ax,ax xor ax,ax not ax
test ax,0f0f0h
; AX£½1470H ; AX£½1470H ; AX£½1470H ; AX£½0000H ; AX£½FFFFH ; AX£½0F0F0H
CF OF 0 0 0 0 0
0 0 0 0 0
SF 0 0 0 0 1
ZF 0 0 1 1 0
PF 0 0 1 1 1
mov ax,1470h and ax,ax or ax,ax xor ax,ax not ax
test ax,0f0f0h
£ £18
¡²Ï°Ìâ3.25¡³Âß¼ÔËËãÖ¸ÁîÔõôʵÏÖ¸´Î»¡¢ÖÃλºÍÇó·´¹¦ÄÜ£¿
¡²½â´ð¡³
ANDÖ¸Áîͬ¡°0¡±ÓëʵÏÖ¸´Î»£¬ORÖ¸Áîͬ¡°1¡±»òʵÏÖÖÃ룬XORͬ¡°1¡±Òì»òʵÏÖÇó·´¡£
¡²Ï°Ìâ3.26¡³ËµÃ÷ÈçϳÌÐò¶ÎµÄ¹¦ÄÜ£º next:
mov ecx,16 mov bx,ax shr ax,1 rcr edx,1 shr bx,1 rcr edx,1 loop next mov eax,edx
¡²½â´ð¡³
½«AXµÄÿһλÒÀ´ÎÖØ¸´Ò»´Î£¬ËùµÃµÄ32λ½á¹û±£´æÓÚEAXÖС£ ¡²Ï°Ìâ3.27¡³
±à³Ì½«Ò»¸ö64λÊý¾ÝÂß¼×óÒÆ3룬¼ÙÉèÕâ¸öÊý¾ÝÒѾ±£´æÔÚEDX.EAX¼Ä´æÆ÷¶ÔÖС£
¡²½â´ð¡³ again:
¡²Ï°Ìâ3.28¡³±à³Ì½«Ò»¸öѹËõBCDÂë±äÁ¿£¨ÀýÈç92H£©×ª»»Îª¶ÔÓ¦µÄASCIIÂ룬Ȼºóµ÷ÓÃDISPC×Ó³ÌÐò£¨ÔÚÊäÈëÊä³ö×Ó³ÌÐò¿âÖУ©ÏÔʾ¡£ ¡²½â´ð¡³ bcd
; Êý¾Ý¶Î byte 92h ; ´úÂë¶Î mov al,bcd shr al,4 add al,30h call dispc mov al,bcd and al,0fh add al,30h ; ´úÂë¶Î mov ecx,3 shl eax,1 rcl edx,1 loop again
£ £19
call dispc
¡²Ï°Ìâ3.29¡³ÒÔMOVSÖ¸ÁîΪÀý£¬ËµÃ÷´®²Ù×÷Ö¸ÁîµÄÑ°Ö·ÌØµã£¬²¢ÓÃMOVºÍADDµÈÖ¸ÁîʵÏÖMOVSDµÄ¹¦ÄÜ£¨¼ÙÉèDF£½0£©¡£
¡²½â´ð¡³
MOVSÖ¸ÁîµÄ¹¦ÄÜÊÇ£º
ES:[EDI]¡ûDS:[ESI]£»ESI¡ûESI¡À1/2/4£¬EDI¡ûEDI¡À1/2/4 Óɴ˿ɿ´³ö´®²Ù×÷Ö¸ÁîµÄÑ°Ö·ÌØµã£º
Ô´²Ù×÷ÊýÓüĴæÆ÷ESI¼ä½ÓѰַ£¬Ä¬ÈÏÔÚDSÖ¸ÏòµÄÊý¾Ý¶Î£¬µ«¿ÉÒԸı䣻ĿµÄ²Ù×÷ÊýÓüĴæÆ÷EDI¼ä
½ÓѰַ£¬Ö»ÄÜÔÚESÖ¸ÏòµÄ¸½¼ÓÊý¾Ý¶Î£»Ã¿Ö´ÐÐÒ»´Î´®²Ù×÷£¬Ô´Ö¸ÕëESIºÍÄ¿µÄÖ¸ÕëEDI½«×Ô¶¯Ð޸ģº¡À1£¨×Ö½Ú£©£¬¡À2£¨×Ö£©»ò¡À4£¨Ë«×Ö£©¡£Ö¸ÕëµÄÔöÁ¿ºÍ¼õÁ¿¿ØÖÆÓÉDF±ê־ȷ¶¨£¬DF£½0£¬½øÐÐÔöÁ¿£»DF£½1£¬½øÐмõÁ¿¡£
¡²Ï°Ìâ3.30¡³ËµÃ÷ÈçϳÌÐòÖ´ÐкóµÄÏÔʾ½á¹û£º msg again:
; Êý¾Ý¶Î
byte 'WELLDONE',0 ; ´úÂë¶Î
mov ecx,(lengthof msg)-1 mov ebx,offset msg mov al,[ebx] add al,20h mov [ebx],al add ebx,1 loop again
mov eax,offset msg push eax mov eax,[esi] mov es:[edi],eax add esi,4 add edi,4
call dispmsg
Èç¹û½«ÆäÖÐÓï¾ä¡°mov ebx,offset msg¡±¸ÄΪ¡°xor ebx,ebx¡±£¬ÔòÀûÓÃEBX¼ä½ÓѰַµÄÁ½¸öÓï¾äÈçºÎÐÞ¸Ä
³ÉEBX¼Ä´æÆ÷Ïà¶ÔѰַ£¬¾Í¿ÉÒÔʵÏÖͬÑù¹¦ÄÜ£¿ ¡²½â´ð¡³
ÏÔʾ½á¹û£ºwelldone EBX¼Ä´æÆ÷Ïà¶ÔѰַ£º
mov al,msg[ebx] mov msg[ebx],al
£ £20