ÀëÏß×÷Òµ2´ð°¸
2.22¡¢ÅжÏÏÂÁгÌÐò¶ÎÌø×ªµÄÌõ¼þ £¨1£© XOR AX,1E1EH JE EQUAL
£¨2£©TEST AL,10000001B JNZ THERE £¨3£© CMP CX,64H JB THERE £¨1£©£¨1£© xor ax,1e1eh je equal
£»AX£½1e1eh£¨Òì»òºóΪ0£© £¨2£©test al,10000001b jnz there
£»ALµÄD0»òD7ÖÁÉÙÓÐһλΪ1 £¨3£© cmp cx,64h jb there
£»CX£¨ÎÞ·ûºÅÊý£©£¼ 64h XOR 2.24¡¢¼ÙÉèAXºÍSI´æ·ÅµÄÊÇÓзûºÅÊý£¬DXºÍDI´æ·ÅµÄÊÇÎÞ·ûºÅÊý£¬ÇëÓñȽÏÖ¸ÁîºÍÌõ¼þ×ªÒÆÖ¸ÁîʵÏÖÒÔÏÂÅжϣº £¨1£©ÈôDX > DI£¬×ªµ½ABOVEÖ´ÐУ» £¨2£©ÈôAX > SI£¬×ªµ½GREATERÖ´ÐУ» £¨3£©ÈôCX = 0£¬×ªµ½ZEROÖ´ÐУ»
£¨4£©ÈôAX£SI²úÉúÒç³ö£¬×ªµ½OVERFLOWÖ´ÐУ» £¨5£©ÈôSI¡ÜAX£¬×ªµ½LESS_EQÖ´ÐУ» £¨6£©ÈôDI¡ÜDX£¬×ªµ½BELOW_EQÖ´ÐС£ £¨1£©ÈôDX > DI£¬×ªµ½aboveÖ´ÐÐ cmp dx,di
ja above £»£½jnbe above £¨2£©ÈôAX > SI£¬×ªµ½greaterÖ´ÐÐ cmp ax,si
jg greater £»£½jnle greater £¨3£©ÈôCX = 0£¬×ªµ½zeroÖ´ÐÐ cmp cx,0 jcxz zero jz zero
£¨4£©ÈôAX£SI²úÉúÒç³ö£¬×ªµ½overflowÖ´ÐУ» cmp ax,di
jo overflow
£¨5£©ÈôSI¡ÜAX£¬×ªµ½less_eqÖ´ÐУ» cmp si,ax cmp ax,si jle less_eq jge less_eq
£¨6£©ÈôDI¡ÜDX£¬×ªµ½below_eqÖ´ÐС£ cmp di,dx cmp dx,di jbe below_eq
jae below_eq £¨1£©ÈôD 2.26¡¢°´ÕÕÏÂÁÐÒªÇ󣬱àдÏàÓ¦µÄ³ÌÐò¶Î£º
£¨1£©ÆðʼµØÖ·ÎªSTRINGµÄÖ÷´æµ¥ÔªÖдæ·ÅÓÐÒ»¸ö×Ö·û´®£¨³¤¶È´óÓÚ6£©£¬°Ñ¸Ã×Ö·û´®ÖеĵÚ1¸öºÍµÚ6¸ö×Ö·û£¨×Ö½ÚÁ¿£©´«Ë͸øDX¼Ä´æÆ÷¡£
£¨3£©±àдһ¸ö³ÌÐò¶Î£¬ÔÚDX¸ß4λȫΪ0ʱ£¬Ê¹AX = 0£»·ñÔòʹAX = -1¡£ £¨6£©ÒÑÖª×Ö·û´®STRING°üº¬ÓÐ32KBÄÚÈÝ£¬½«ÆäÖеġ¯$¡¯·ûºÅÌæ»»³É¿Õ¸ñ¡£ £¨7£©ÓÐÒ»¸ö100¸ö×Ö½ÚÔªËØµÄÊý×飬ÆäÊ×µØÖ·ÎªARRAY£¬½«Ã¿¸öÔªËØ¼õ1£¨²»¿¼ÂÇÒç³ö£©´æÓÚÔ´¦¡£
£¨8£©Í³¼ÆÒÔ ¡¯$¡¯ ½áβµÄ×Ö·û´®SRTINGµÄ×Ö·û¸öÊý¡£
(1) (1) ÆðʼµØÖ·ÎªstringµÄÖ÷´æµ¥ÔªÖдæ·ÅÓÐÒ»¸ö×Ö·û´®£¨³¤¶È´óÓÚ6£©£¬°Ñ¸Ã×Ö·û´®ÖеĵÚ1¸öºÍµÚ6¸ö×Ö·û£¨×Ö½ÚÁ¿£©´«Ë͸øDX¼Ä´æÆ÷¡£ mov si,0
mov dl,string[si] £»µÚ1¸ö×Ö·ûËÍdl¼Ä´æÆ÷ mov si,5
mov dh,string[si] £»µÚ6¸ö×Ö·ûËÍdh¼Ä´æÆ÷
(2) ´ÓÖ÷´æbuffer¿ªÊ¼µÄ4¸ö×Ö½ÚÖб£´æÁË4¸ö·ÇѹËõBCDÂ룬ÏÖ°´µÍ£¨¸ß£©µØÖ·¶ÔµÍ£¨¸ß£©Î»µÄÔÔò£¬½«ËüÃǺϲ¢µ½DXÖС£ xor si,si £»siÇåÁã
mov al,buffer[si] £»µÚÒ»×Ö½Ú inc si
mov ah,buffer[si] £»µÚ¶þ×Ö½Ú mov cl,4
shl ah,cl £»BCDÂëÒÆµ½¸ß°ë×Ö½Ú or al,ah £»×éºÏ³ÉѹËõBCDÂë mov dl,al £»´æÈëdl¼Ä..
inc si
mov al,buffer[si] £»µÚÈý×Ö½Ú inc si
mov ah,buffer[si] £»µÚËÄ×Ö½Ú mov cl,4
shl ah,cl £»BCDÂëÒÆµ½¸ß°ë×Ö½Ú or al,ah £»×éºÏ³ÉѹËõBCDÂë mov dh,al £»´æÈëdh¼Ä..
(3) ±àдһ¸ö³ÌÐò¶Î£¬ÔÚDX¸ß4λȫΪ0ʱ£¬Ê¹AX = 0£»·ñÔòʹAX = -1¡£ test dx,0f000h jz zero mov ax,-1 jmp done zero: mov ax,0 done: ret
(4) ÓÐÁ½¸ö64λÊýÖµ£¬°´¡°Ð¡¶Ë·½Ê½¡±´æ·ÅÔÚÁ½¸ö»º³åÇøbuffer1ºÍbuffer2ÖУ¬±àд³ÌÐò¶ÎÍê³Ébuffer1£buffer2¹¦ÄÜ¡£ lea bx,buffer1 lea dx,buffer2 mov cx,8 £»8¸ö×Ö½Ú xor si,si £»si=0 clc £»CF=0
(5) ¼ÙÉè´ÓB800h : 0¿ªÊ¼´æ·ÅÓÐ100¸ö16λÎÞ·ûºÅÊý£¬±à³ÌÇóËüÃǵĺͣ¬²¢°Ñ32λµÄºÍ±£´æÔÚDX.AXÖС£ mov ax,0b800h mov ds,ax £»¶ÎµØÖ·
xor si,si £»µØÖ·Æ«ÒÆÁ¿si=0 xor dx,dx £»ºÍµÄ¸ß×Ödx=0 mov cx,99 £»¼ÓµÄ´ÎÊý mov ax,[si] £»µÚÒ»¸öÊý
again: inc si £»Ö¸ÏòÏÂÒ»¸ö×Öµ¥Ôª inc si
add ax,[si] £»¼ÓÏÂÒ»¸öÊý jnc noc £»ÎÞ½øÎ»×ª