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