¼ÆËã»úÔÀíʵÑéÊÒʵÑ鱨¸æ mov cx,4 ; CX length-1 mov si,offset a ; DI string pointer call sort sort proc mov cx,5 lp2: mov ah,02h mov bl,0;¼ÆÊýÆ÷BL mov si,offset a mov si, di lp3: push cx mov dl,[si] lp1: int 21h mov al,[si] inc si cmp al,[si+2] INC SI jna j1 loop lp3 xchg al,[si+2] HLT mov [si],al A DW '5','7','1','9','2' inc bl ; si string pointer j1: ;cx length-1 inc si sort proc inc si lp2: loop lp1 mov di,si pop cx push cx cmp bl,0 mov dl,[di] loopnz lp2 lp1: ret inc di sort endp inc di cmp dl,[di] jna j1 xchg dl,[di] j1:loop lp1 pop cx mov [si],dl inc si inc si loop lp2 ret sort endp ËÄ£®ÊµÑé½á¹û·ÖÎö£¨º¬Ö´Ðнá¹ûÑéÖ¤¡¢Êä³öÏÔʾÐÅÏ¢¡¢Í¼ÐΡ¢µ÷ÊÔ¹ý³ÌÖÐËùÓöµÄÎÊÌâ¼°´¦Àí·½·¨µÈ£© Ö±½ÓÑ¡ÔñÅÅÐò£º
ðÅÝÅÅÐò£º ¼ÆËã»úÔÀíʵÑéÊÒʵÑ鱨¸æ Ö±½ÓÅÅÐò³öÏÖµÄÎÊÌ⣺ÔÚ¸ÃÅÅÐòÖÐÿ´Î¶¼½«×îСµÄ·ÅÔÚÁËDLÖС£±ØÐëÓÐMOV [SI],DL£¬²»È»½«Ôì³ÉÊý¾Ý¶ªÊ§£¬Ö´Ðнá¹û³öÏÖ´íÎó¡£ Ã°ÅÝÅÅÐò£º³õʼÄÚ´æÖеÄÊý¾ÝΪA DW '5','7','1','2','9' ,Ö´Ðкó£¬CX=1ʱÌáǰÍ˳ö¡£ÊµÏÖÁË¿ìËÙÅÅÐò¡£ ˼¿¼ÄÚÈÝ£ºÃ°ÅÝÅÅÐòÖ®ËùÒÔÄÜʵÏÖ¿ìËÙÅÅÐò£¬ÊÇÿһ´ÎÅÅÐò¶¼½«×î´ó»ò×îСµÄ·ÅÔÚ×îºó»ò×îǰ£¬²¢ÇÒÓиöÀ´Í³¼Æ½»»»µÄ´ÎÊý£¬Ò»µ©½»»»µÄ´ÎÊýΪ0ʱֱ½ÓÍ˳öÑ»·¡£ Î壮½áÂÛ£º Íê³ÉÁ˱¾´ÎʵÑéÒªÇóµÄʵÑéÄÚÈÝ¡£Ñ§»áÁËʵÏÖÄÚ´æÊý¾Ý·ÃÎÊ£¬ÓÃÁ½ÖÖ·½·¨ÊµÏÖ¶ÔÎå¸ö×Ö´Ó´óµ½Ð¡ÅÅÐò¡£
ʵÑéËÄ£º×Ó³ÌÐò¼°ÖжÏʵÑé
ʵÑé»·¾³ PC»ú£«Win 2003£«emu8086£«proteus·ÂÕæÆ÷ ʵÑéÈÕÆÚ Ò»£®ÊµÑéÄÚÈÝ 1.ʵÏÖ×Ó³ÌÐòºÍÖжϷþÎñ×Ó³ÌÐòµÄÉè¼Æ£» 2.±àд×Ó³ÌÐòÉèÖÃ40HÖжÏΪ×Ô¶¨ÒåÖжϷþÎñ×Ó³ÌÐò£» 3.±àдÖжϷþÎñ×Ó³ÌÐòʵÏÖAX=AX+BX£» 4.±àдÖ÷³ÌÐòµ÷ÓÃ×Ó³ÌÐòºÍÖжϡ£
¼ÆËã»úÔÀíʵÑéÊÒʵÑ鱨¸æ ¶þ£®ÀíÂÛ·ÖÎö»òËã·¨·ÖÎö ¶¨ÒåÊý¾Ý¶ÎData Ö´ÐÐÖ÷³ÌÐò ½«data·ÅÔÚdx£¬²¢±£´æµ½dsÖУ¬ax´æes È¡×Ó³ÌÐòµÄÆ«ÒÆ·ÅÔÚax µ÷ÓÃ×Ó³ÌÐòºÍÖжϣ¬ÊµÏÖ£ºAX=AX+BX ½áÊø
¼ÆËã»úÔÀíʵÑéÊÒʵÑ鱨¸æ Èý£®ÊµÏÖ·½·¨£¨º¬ÊµÏÖ˼·¡¢³ÌÐòÁ÷³Ìͼ¡¢ÊµÑéµç·ͼºÍÔ´³ÌÐòÁбíµÈ£© ´úÂ룺 data segment a dw 5fh b dw 3fh c dw '?' data ends code segment assume cs:code,ds:data start: mov dx,data mov ds,dx xor ax,ax mov es,ax mov ax,offset change mov word ptr es:[80h],ax mov ax,seg change mov word ptr es:[82h],ax int 20h jmp s change proc near xor ax,ax xor bx,bx mov ax,a mov bx,b add ax,bx mov c,ax iret change endp code ends s: end start