΢»úÔ­Àí¿ÎºóϰÌâ½â´ð ÏÂÔØ±¾ÎÄ

SHR ADD

BH, CL BH, 30H

£»ÏÔʾǧλÊý

OUTPUT BH POP PUSH AND ADD

BX BX BH, 0FH BH, 30H

OUTPUT BH POP PUSH MOV SHR ADD

BX BX CL, 4 BL, CL BL, 30H

£»ÏÔʾ°ÙλÊý

OUTPUT BL POP AND ADD

BX BL, 0FH BL, 30H

£»ÏÔʾʮλÊý

OUTPUT BL OUTPUT 0AH OUTPUT 0DH JMP

AGAIN

£»ÏÔʾ¸öλÊý

INPUT PROC BEGIN: MOV MOV L: SHL SHL

BX, 0 SHL BX, 1 BX, 1

FAR CX, 4

£»ÊäÈëÒ»¸ö4λʮ½øÖÆÊýµÄ¹ý³Ì

BX, 1

SHL MOV INT CMP JZ CMP JB CMP JA SUB XOR ADD LOOP RET

BX, 1 AH, 1 21H

£»BXµÄÖµ³ËÒÔ16

£»ÊäÈë £»ESC¼üÍ˳ö

AL, 1BH DONE AL, '0' ERROR AL, '9' ERROR AL, 30H AH, AH BX, AX L

£»·ÇÊý×Ö£¬³ö´í

£»·ÇÊý×Ö£¬³ö´í

£»½«ÊäÈë¼Óµ½BXÖÐ

ERROR: LEA MOV INT JMP

AH, 9 21H BEGIN

DX, MSG3

DONE: MOV INT

21H

AH, 4CH

INPUT ENDP CODE END

7¡¢ÔÚ8086ϵͳÏ£¬±àдÍêÕû³ÌÐò£¬ÊµÏÖÁ½¸ö32λ´ø·ûºÅÊýÏà³Ë¡£¼ÙÉè±»³ËÊý´æ·ÅÔÚÒÔ×Ö±äÁ¿MUL1¿ªÊ¼µÄÁ¬Ðø4¸ö×Ö½ÚÖУ¬³ËÊý´æ·ÅÔÚÒÔ×Ö±äÁ¿MUL2¿ªÊ¼µÄÁ¬Ðø4¸ö×Ö½ÚÖÐÖУ¬Ïà³Ë½á¹û´æ·ÅÔÚÒÔ×Ö±äÁ¿RES¿ªÊ¼µÄÁ¬Ðø8¸ö×Ö½ÚÖС£

ENDS MAIN

½â£º²Î¿¼³ÌÐò£º DATA MUL1 MUL2 RES DATA CODE

SEGMENT

DW 0FFFFH,0FFFFH DW 5678H,1234H DW 4 DUP(0) ENDS SEGMENT

£»±»³ËÊý £»³ËÊý £»½á¹û

ASSUME CS:CODE, DS:DATA MAIN PUSH MOV PUSH MOV MOV MOV MOV MOV MOV TEST JZ NOT NOT ADD ADC

PROC DS AX, 0 AX AX, DATA DS, AX CX, MUL1 BP, MUL1+2 SI, MUL2 DI, MUL2+2 BP, 8000H NEXT1 BP CX CX, 1 BP, 0

DI, 8000H

£»³ËÊýÊÇ·ñΪ¸ºÊý

£»Îª¸ºÊý£¬ÔòÈ¡·´¼Ó1 £»±»³ËÊýÊÇ·ñΪ¸ºÊý

FAR

NEXT1: TEST JZ NOT

NEXT2 SI

£»Îª¸ºÊý£¬ÔòÈ¡·´¼Ó1

NOT ADD ADC

DI SI, 1 DI, 0

NEXT2: MOV AX, SI

MUL CX MOV RES, AX

MOV RES+2, DX MOV AX, SI MUL BP ADD RES+2, AX ADC RES+4, DX MOV AX, DI MUL CX ADD RES+2, AX ADC RES+4, DX MOV AX, DI MUL BP ADD RES+4, AX ADC RES+6, DX MOV AX, MUL1+2 XOR AX, MUL2+2 JNS DONE NOT RES

NOT RES+2 NOT RES+4 NOT RES+6 ADD

RES, 1

£»Ïà³Ë¹ý³Ì

£»Åжϱ»³ËÊýºÍ³ËÊýÊÇ·ñͬºÅ £»Í¬ºÅ£¬Ôò½á¹ûΪÕýÊý£¬ÎÞÐëÐ޸Ľá¹û£»²»Í¬ºÅ£¬Ôò½á¹ûΪ¸ºÊý£¬ÐëÈ¡·´¼Ó1