CSEG ENDS £»ÒÔÉ϶¨Òå´úÂë¶Î £»--------------------------------------------------------------------------
END START
5.7 ÊÔ±àдһ¸ö»ã±àÓïÑÔ³ÌÐò£¬Çó³öÊ×µØÖ·ÎªDATAµÄ100D×ÖÊý×éÖеÄ×îСżÊý£¬²¢°ÑËü´æ·ÅÔÚAX
ÖС£
´ð£º³ÌÐò¶ÎÈçÏ£º
BEGIN: MOV BX, 0
MOV CX, 100
COMPARE: MOV AX, DATA[BX] £»È¡Êý×éµÄµÚÒ»¸öżÊý
ADD BX, 2 TEST AX, 01H £»ÊÇżÊýÂ𣿠LOOPNZ COMPARE £»²»ÊÇ£¬±È½ÏÏÂÒ»¸öÊý JNZ STOP £»Ã»ÓÐżÊý£¬Í˳ö JCXZ STOP £»×îºóÒ»¸öÊýÊÇżÊý£¬¼´Îª×îСżÊý£¬Í˳ö
COMPARE1: MOV DX, DATA[BX] £»È¡Êý×éµÄÏÂÒ»¸öżÊý
ADD BX, 2 TEST DX, 01H £»ÊÇżÊýÂ𣿠JNZ NEXT £»²»ÊÇ£¬±È½ÏÏÂÒ»¸öÊý CMP AX, DX £»(AX)<(DX)Â𣿠JLE NEXT MOV AX, DX £»(AX)<(DX)£¬ÔòÖû»(AX)Ϊ×îСżÊý
NEXT: LOOP COMPARE1 STOP: RET 5.8 °ÑAXÖдæ·ÅµÄ16λ¶þ½øÖÆÊýK¿´×÷ÊÇ8¸ö¶þ½øÖƵġ°ËÄ·ÖÖ®Ò»×Ö½Ú¡±¡£ÊÔ±àд³ÌÐòÒªÇóÊýÒ»ÏÂֵΪ3(¼´11B)µÄËÄ·ÖÖ®Ò»×Ö½ÚÊý£¬²¢½«¸ÃÊý(¼´11BµÄ¸öÊý)ÔÚÖÕ¶ËÉÏÏÔʾ³öÀ´¡£ ´ð£º³ÌÐò¶ÎÈçÏ£º
BEGIN: MOV DL, 0 £»¼ÆÊý³õʼֵ
MOV CX, 8
COMPARE: TEST AX, 03H £»ÊÇÊý03Âð£¿
JNZ NOEQUAL £»²»ÊÇ£¬×ª×ß INC DL £»ÊÇ£¬¼ÆÊý
NOEQUAL: ROR AX, 1 £»×¼±¸ÅжÏÏÂÒ»¸öÊý
ROR AX, 1
LOOP COMPARE ADD DL, ?0¡® £»½«¼ÆÊýֵת»»ÎªASCIIÂë MOV AH, 2 £»½øÐÐÏÔʾ INT 21H
STOP: RET 5.9 ÊÔ±àдһ¸ö»ã±àÓïÑÔ³ÌÐò£¬ÒªÇó´Ó¼üÅ̽ÓÊÕÒ»¸öËÄλµÄ16½øÖÆÊý£¬²¢ÔÚÖÕ¶ËÉÏÏÔʾÓëËüµÈÖµµÄ¶þ½øÖÆÊý¡£
´ð£º³ÌÐò¶ÎÈçÏ£º
BEGIN: MOV BX, 0 £»ÓÃÓÚ´æ·ÅËÄλµÄ16½øÖÆÊý
MOV CH, 4 MOV CL, 4
INPUT: SHL BX, CL £»½«Ç°ÃæÊäÈëµÄÊý×óÒÆ4λ
MOV AH, 1 £»´Ó¼üÅÌÈ¡Êý INT 21H CMP AL, 30H £»<0Â𣿠JB INPUT £»²»ÊÇ?0¡«F¡®µÄÊýÖØÐÂÊäÈë CMP AL, 39H £»ÊÇ?0¡«9¡®Â𣿠JA AF £»²»ÊÇ£¬×ª¡®A¡«F¡¯µÄ´¦Àí AND AL, 0FH £»×ª»»Îª£º0000B¡«1001B JMP BINARY
AF: AND AL, 1101 1111B £»×ª»»Îª´óд×Öĸ
BINARY:
DISPN: DISP:
STOP:
CMP JB CMP JA AND ADD OR DEL JNZ MOV MOV ROL RCL OR MOV INT LOOP RET
AL, 41H INPUT AL, 46H INPUT AL, 0FH AL, 9 BL, AL CH INPUT CX, 16 DL, 0 BX, 1 DL, 1 DL, 30H AH, 2 21H DISP
£»ÓÖ £»²»ÊÇ?A¡«F¡®µÄÊýÖØÐÂÊäÈë £»>FÂ𣿠£»²»ÊÇ?A¡«F¡®µÄÊýÖØÐÂÊäÈë £»×ª»»Îª£º1010B¡«1111B £»½«¼üÅÌÊäÈëµÄÊý½øÐÐ×éºÏ £»½«16λ¶þ½øÖÆÊýһλλµØ×ª»»³ÉASCIIÂëÏÔʾ £»½øÐÐÏÔʾ 5.10 ÉèÓÐÒ»¶ÎÓ¢ÎÄ£¬Æä×Ö·û±äÁ¿ÃûΪENG£¬²¢ÒÔ$×Ö·û½áÊø¡£ÊÔ±àдһ³ÌÐò£¬²é¶Ôµ¥´ÊSUNÔÚ¸ÃÎÄÖÐ µÄ³öÏÖ´ÎÊý£¬²¢ÒÔ¸ñʽ¡°SUN£ºxxxx¡±ÏÔʾ³ö´ÎÊý¡£ ´ð£º³ÌÐòÈçÏ£º DSEG SEGMENT ENG DB ?Here is sun, sun ,?,$¡® DISP DB ?SUN£º¡® DAT DB ?0000¡® , 0DH, 0AH, ?$¡® KEYWORD DB ?sun¡® DSEG ENDS £»-------------------------------------------------------------------------- CSEG SEGMENT MAIN PROC FAR ASSUME CS: CSEG, DS: DSEG, ES: DSEG START: PUSH DS £»ÉèÖ÷µ»ØDOS SUB AX, AX PUSH AX MOV AX, DSEG MOV DS, AX £»¸øDS¸³Öµ MOV ES, AX £»¸øES¸³Öµ BEGIN: MOV MOV LEA COMP: MOV LEA MOV REPE JNZ INC ADD NOMATCH: INC DEC JNZ DONE: MOV MOV LEA DONE1: ROL MOV AND AX, 0 DX, DISP-ENG-2 £»¼ÆËãENGµÄ³¤¶È(ÿ´Î±È½Ïsun,Òò´Ë±È½Ï´ÎÊý-2) BX, ENG DI, BX SI, KEYWORD CX, 3 CMPSB £»´®±È½Ï NOMATCH AX £»ÊÇ£¬SUNµÄ¸öÊý¼Ó1 BX, 2 BX £»Ö¸ÏòENGµÄÏÂÒ»¸ö×Öĸ DX COMP CH, 4 £»½«´ÎÊýת»»Îª16½øÖÆÊýµÄASCIIÂë CL, 4 BX, DAT £»×ª»»½á¹û´æÈëDATµ¥ÔªÖÐ AX, CL DX, AX DL, 0FH £»È¡Ò»Î»16½øÖÆÊý ADD DL, 30H CMP DL, 39H JLE STORE ADD DL, 07H £»ÊÇ¡°A¡«F¡±ËùÒÔÒª¼Ó7 STORE: MOV [BX], DL £»×ª»»½á¹û´æÈëDATµ¥ÔªÖÐ INC BX DEC CH JNZ DONE1 DISPLAY: LEA DX, DISP £»ÏÔʾ×Ö·û´®³ÌÐò(½«DISPºÍDATÒ»ÆðÏÔʾ) MOV AH, 09H INT 21H RET MAIN ENDP CSEG ENDS £»ÒÔÉ϶¨Òå´úÂë¶Î £»-------------------------------------------------------------------------- END START 5.11 ´Ó¼üÅÌÊäÈëһϵÁÐÒÔ$Ϊ½áÊø·ûµÄ×Ö·û´®£¬È»ºó¶ÔÆäÖеķÇÊý×Ö×Ö·û¼ÆÊý£¬²¢ÏÔʾ³ö¼ÆÊý½á¹û¡£ ´ð£º³ÌÐò¶ÎÈçÏ£º DSEG SEGMENT BUFF DB 50 DUP (? ¡®) COUNT DW 0 DSEG ENDS ©« BEGIN: LEA BX, BUFF MOV COUNT, 0 INPUT: MOV AH, 01 £»´Ó¼üÅÌÊäÈëÒ»¸ö×Ö·ûµÄ¹¦Äܵ÷Óà INT 21H MOV [BX], AL INC BX CMP AL, ?$¡® £»ÊÇ$½áÊø·ûÂ𣿠JNZ INPUT £»²»ÊÇ£¬¼ÌÐøÊäÈë LEA BX, BUFF £»¶Ô·ÇÊý×Ö×Ö·û½øÐмÆÊý NEXT: MOV CL, [BX] INC BX CMP CL, ?$¡® £»ÊÇ$½áÊø·û£¬ÔòתȥÏÔʾ JZ DISP CMP CL, 30H £»Ð¡ÓÚ0ÊÇ·ÇÊý×Ö×Ö·û JB NEXT CMP CL, 39H £»´óÓÚ9ÊÇ·ÇÊý×Ö×Ö·û JA NEXT INC COUNT £»¸öÊý+1 JMP NEXT DISP: ©« £»16½øÖÆÊýÏÔʾ³ÌÐò¶Î(Ê¡ÂÔ) 5.12 ÓÐÒ»¸öÊ×µØÖ·ÎªMEMµÄ100D×ÖÊý×飬ÊÔ±àÖÆ³ÌÐòɾ³ýÊý×éÖÐËùÓÐΪ0µÄÏ²¢½«ºóÐøÏîÏòǰѹËõ£¬×îºó½«Êý×éµÄÊ£Óಿ·Ö²¹ÉÏ0¡£ ´ð£º³ÌÐòÈçÏ£º DSEG SEGMENT MEM DW 100 DUP (?) DSEG ENDS £»-------------------------------------------------------------------------- CSEG SEGMENT MAIN PROC FAR ASSUME CS: CSEG, DS: DSEG START: PUSH DS £»ÉèÖ÷µ»ØDOS SUB AX, AX PUSH AX MOV MOV BEGIN: AX, DSEG DS, AX £»¸øDS¸³Öµ MOV SI, (100-1)*2 £»(SI)Ö¸ÏòMEMµÄÄ©ÔªËØµÄÊ×µØÖ· MOV BX, -2 £»µØÖ·Ö¸ÕëµÄ³õÖµ MOV CX, 100 COMP: ADD BX, 2 CMP MEM [BX], 0 JZ CONS LOOP COMP JMP FINISH £»±È½ÏÍêÁË£¬ÒÑÎÞ0Ôò½áÊø CONS: MOV DI, BX CONS1: CMP DI, SI £»µ½ÁË×îºóµ¥ÔªÂ룿 JAE NOMOV MOV AX, MEM [DI+2] £»ºóÃæµÄÔªËØÏòÇ°ÒÆÎ» MOV MEM [DI], AX ADD DI, 2 JMP CONS1 NOMOV: MOV WORD PTR [SI], 0 £»×îºóµ¥Ôª²¹0 LOOP COMP FINISH: RET MAIN ENDP CSEG ENDS £»ÒÔÉ϶¨Òå´úÂë¶Î £»-------------------------------------------------------------------------- END START 5.13 ÔÚSTRINGµ½STRING+99µ¥ÔªÖдæ·Å×ÅÒ»¸ö×Ö·û´®£¬ÊÔ±àÖÆÒ»¸ö³ÌÐò²âÊÔ¸Ã×Ö·û´®ÖÐÊÇ·ñ´æÔÚ Êý×Ö£¬ÈçÓÐÔò°ÑCLµÄµÚ5λÖÃ1£¬·ñÔò½«¸ÃλÖÃ0¡£ ´ð£º³ÌÐòÈçÏ£º DSEG SEGMENT STRING DB 100 DUP (?) 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: MOV SI, 0 £»(SI)×÷ΪµØÖ·Ö¸ÕëµÄ±ä»¯Öµ MOV CX, 100 REPEAT: MOV AL, STRING [SI] CMP AL, 30H JB GO_ON CMP AL, 39H JA GO_ON OR CL, 20H £»´æÔÚÊý×Ö°ÑCLµÄµÚ5λÖÃ1 JMP EXIT GO_ON: INC SI LOOP REPEAT AND CL, 0DFH £»²»´æÔÚÊý×Ö°ÑCLµÄµÚ5λÖÃ0 EXIT: RET MAIN ENDP CSEG ENDS £»ÒÔÉ϶¨Òå´úÂë¶Î £»--------------------------------------------------------------------------