MAIN PROC FAR
ASSUME CS: CSEG, DS: DSEG START: PUSH DS £»ÉèÖ÷µ»ØDOS SUB AX, AX PUSH AX MOV AX, DSEG
MOV DS, AX £»¸øDS¸³Öµ BEGIN: MOV BX, MUL2 £»È¡³ËÊý
MOV AX, WORD PTR MUL1 £»È¡±»³ËÊýµÍλ×Ö MUL BX
MOV MUL0, AX £»±£´æ²¿·Ö»ýµÍλ MOV MUL0+2, DX £»±£´æ²¿·Ö»ý¸ßλ
MOV AX, WORD PTR[MUL1+2] £»È¡±»³ËÊý¸ßλ×Ö MUL BX
ADD MUL0+2, AX £»²¿·Ö»ýµÍλºÍÔ²¿·Ö»ý¸ßλÏà¼Ó ADC MUL0+4, DX £»±£´æ²¿·Ö»ý×î¸ß룬²¢¼ÓÉϽøÎ» EXIT: RET MAIN ENDP
CSEG ENDS £»ÒÔÉ϶¨Òå´úÂë¶Î
£»
-------------------------------------------------------------------------- END START
80386µÄ³ÌÐòÈçÏÂ(¼ÙÉèΪÎÞ·ûºÅÊý)£º
.386 DSEG SEGMENT
MUL1 DD ? £»32λ±»³ËÊý MUL2 DW ? £»16λ³ËÊý
MUL0 DD 0£¬0 £»³Ë»ýÓÃ64λµ¥Ôª´æ·Å DSEG ENDS
£»
-------------------------------------------------------------------------- CSEG SEGMENT MAIN PROC FAR
ASSUME CS: CSEG, DS: DSEG START: PUSH DS £»ÉèÖ÷µ»ØDOS SUB AX, AX PUSH AX MOV AX, DSEG
MOV DS, AX £»¸øDS¸³Öµ
BEGIN: MOVZX EBX, MUL2 £»È¡³ËÊý£¬²¢0À©Õ¹³É32λ MOV EAX, MUL1 £»È¡±»³ËÊý MUL EBX
MOV DWORD PTR MUL0, EAX £»±£´æ»ýµÄµÍλ˫×Ö MOV DWORD PTR[MUL0+4], EDX £»±£´æ»ýµÄ¸ßλ˫×Ö EXIT: RET MAIN ENDP
CSEG ENDS £»ÒÔÉ϶¨Òå´úÂë¶Î
£»
-------------------------------------------------------------------------- END START
80386×÷32λ³Ë·¨ÔËËãÓÃÒ»ÌõÖ¸Áî¼´¿ÉÍê³É£¬¶ø8086ÔòÐèÓò¿·Ö»ý×÷Á½´ÎÍê³É¡£ 5.26 ÈçÊý¾Ý¶ÎÖÐÔÚÊ×µØÖ·ÎªMESS1µÄÊý¾ÝÇøÄÚ´æ·Å×ÅÒ»¸ö³¤¶ÈΪ35µÄ×Ö·û´®£¬ÒªÇó°ÑËüÃÇ´«Ë͵½¸½¼Ó¶ÎÖеĻº³åÇøMESS2ÖÐÈ¥¡£ÎªÌá¸ß³ÌÐòÖ´ÐÐЧÂÊ£¬Ï£ÍûÖ÷Òª²ÉÓÃMOVSDÖ¸ÁîÀ´ÊµÏÖ¡£ÊÔ±àдÕâÒ»³ÌÐò¡£ ´ð£º80386µÄ³ÌÐòÈçÏ£º .386 .MODEL SMALL .STACK 100H .DATA
MESS1 DB ¡®123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ¡¯,? £»³¤¶ÈΪ35µÄ×Ö·û´® .FARDATA
MESS2 DB 36 DUP (?) .CODE
START: MOV AX, @DATA MOV DS, AX £»¸øDS¸³Öµ MOV AX, @FARDATA MOV ES, AX £»¸øES¸³Öµ ASSUME ES:@FARDATA BEGIN: LEA ESI, MESS1 LEA EDI, MESS2
CLD
MOV ECX, (35+1)/4 £»È¡´«Ë͵ĴÎÊý REP MOVSD
£»
--------------------------------------------------------------------------
MOV AX, 4C00H £»·µ»ØDOS INT 21H END START
5.27 ÊÔÓñÈÀý±äַѰַ·½Ê½±àдһ386³ÌÐò£¬ÒªÇó°ÑÁ½¸ö64λÕûÊýÏà¼Ó²¢±£´æ½á¹û¡£
´ð£º80386µÄ³ÌÐòÈçÏ£º .386 .MODEL SMALL .STACK 100H .DATA DATA1 DQ ? DATA2 DQ ? .CODE
START: MOV AX, @DATA MOV DS, AX £»¸øDS¸³Öµ BEGIN: MOV ESI, 0
MOV EAX, DWORD PTR DATA2[ESI*4] ADD DWORD PTR DATA1[ESI*4], EAX INC ESI
MOV EAX, DWORD PTR DATA2[ESI*4] ADC DWORD PTR DATA1[ESI*4], EAX
£»
--------------------------------------------------------------------------
MOV AX, 4C00H £»·µ»ØDOS INT 21H END START