IBM-PC»ã±àÓïÑÔ³ÌÐòÉè¼Æ´ð°¸£¨µÚ2°æ£©

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 £»ÒÔÉ϶¨Òå´úÂë¶Î £»--------------------------------------------------------------------------

ÁªÏµ¿Í·þ£º779662525#qq.com(#Ì滻Ϊ@)