µ±Ç°Î»ÖãºÊ×Ò³ > ʵÑéÒ» Á½¸ö¶àλʮ½øÖÆÊýÏà¼ÓµÄʵÑé - ͼÎÄ
ʵÑéÒ» Á½¸ö¶àλʮ½øÖÆÊýÏà¼ÓµÄʵÑé
Ò»¡¢ÊµÑéÄ¿µÄ
ѧϰÊý¾Ý´«ËͺÍËãÊõÔËËãÖ¸ÁîµÄÓ÷¨
ÊìϤÔÚPC»úÉϽ¨Á¢¡¢»ã±à¡¢Á´½Ó¡¢µ÷ÊÔºÍÔËÐлã±àÓïÑÔ³ÌÐòµÄ¹ý³Ì¡£ ¶þ¡¢ÊµÑéÄÚÈÝ
½«Á½¸ö¶àλʮ½øÖÆÊýÏà¼Ó£¬ÒªÇó±»¼ÓÊýºÍ¼ÓÊý¾ùÒÔASCIIÂëÐÎʽ¸÷×Ô˳Ðò´æ·ÅÔÚÒÔDATA1¡¢DATA2ΪÊ×µÄ5¸öÄÚ´æµ¥ÔªÖУ¨µÍλÔÚǰ£©£¬½á¹ûËÍ»ØDATA1´¦¡£
Èý¡¢³ÌÐò¿òͼ
ͼ 3-1
ËÄ¡¢²Î¿¼³ÌÐòÇåµ¥ DATA SEGMENT
DATA1 DB 33H,39H,31H,37H,34H;±»¼ÓÊý DATA1END EQU $-1
DATA2 DB 34H,35H,30H,38H,32H;¼ÓÊý DATA2END EQU $-1 SUM DB 5 DUP(?) DATA ENDS STACK SEGMENT
STA DB 20 DUP(?) TOP EQU LENGTH STA STACK ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK,ES:DATA START: MOV AX,DATA MOV DS,AX MOV AX,STACK MOV SS,AX MOV AX,TOP
MOV SP,AX MOV SI,OFFSET DATA1END MOV DI,OFFSET DATA2END CALL ADDA MOV AX,4C00H INT 21H
ADDA PROC NEAR MOV DX,SI MOV BP,DI MOV BX,05H
AD1: SUB BYTE PTR [SI],30H SUB BYTE PTR [DI],30H DEC SI DEC DI DEC BX JNZ AD1
MOV SI,DX MOV DI,BP
MOV CX,05H CLC
AD2: MOV AL,[SI] MOV BL,[DI] ADC AL,BL AAA
MOV [SI],AL DEC SI DEC DI
LOOP AD2 MOV SI,DX MOV DI,BP MOV BX,05H
AD3: ADD BYTE PTR [SI],30H ADD BYTE PTR [DI],30H DEC SI DEC DI DEC BX JNZ AD3
RET
ADDA ENDP CODE ENDS END START
ʵÑé½á¹ûÈçͼ£º
½á¹û·ÖÎö£ºÁ½¸öÊýÏà¼Óºó½á¹û·ÅÔÚÄÚ´æÖÐDS£º0000´¦£¬ÇÒ½á¹ûÓ¦¸øÎª84256£¬ÊµÑé½á¹ûÓëÀíÂÛ·ÖÎöÒ»Ö¡£
ʵÑé¶þ ÅÅÐòʵÑé
Ò»¡¢ÊµÑéÄ¿µÄ
ÕÆÎÕÓûã±àÓïÑÔ±àдÅÅÐò³ÌÐòµÄ˼·ºÍ·½·¨¡£ ¶þ¡¢ÊµÑéÄÚÈÝ
½«Ö¸¶¨ÄÚ´æ³ö¿ªÊ¼µÄÊý¾Ý£¨×î¶àΪ4λÊý£©°´´Ó´óµ½Ð¡µÄ˳ÐòÅÅÁС£µÚÒ»¸öÊý×Ö±íʾÊý¾ÝµÄ¸öÊý£¨²»ÊÇÒª±È½ÏµÄÊýÖµ£¡£¡£¡£©¡£ Èý¡¢³ÌÐòÁ÷³Ìͼ
ͼ 3-2
ËÄ¡¢³ÌÐòÇåµ¥
DATA SEGMENT
ADDR DW 8,234,35,67,876,54,39,765,237 DATA ENDS STACK SEGMENT
STA DW 32 DUP(?) TOP DW ? STACK ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACK START: MOV AX,DATA MOV DS,AX MOV ES,AX MOV AX,STACK MOV SS,AX
MOV SP,TOP
MOV CX,WORD PTR ADDR[0] DEC CX
LOOP1: MOV DI,CX MOV BX,2
¹²·ÖÏí92ƪÏà¹ØÎĵµ