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