MOV DI,0 ;Ä¿±ê´®Ö¸Õë->DI SDCMP: MOV AL,SRCBUF[SI] CMP AL,0DH JZ NSEND
MOV DSTBUF[DI],AL ;²»µÈÓÚ0DH£¬±£´æÊý¾Ý£¬ÐÞ¸ÄSI¡¢DI INC DI
NSEND: INC SI ;µÈÓÚ0DH£¬²»±£´æÊý¾Ý£¬ÐÞ¸ÄSI LOOP SDCMP MOV AH, 4CH INT 21H CODE ENDS END START
3.17 ÒÑÖªÓÐn¸öÔªËØ´æ·ÅÔÚÒÔBUFΪÊ×Ö·µÄ×Ö½Ú´æ´¢ÇøÖУ¬ÊÔͳ¼ÆÆäÖиºÔªËصĸöÊý£¬»³ö³ÌÐò¿òͼ£¬±àд³ÌÐò¡£
DATA SEGMENT
BUF DB 92H,12H,0F3H,23H,87H LEN EQU $-BUF DATA ENDS
CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV CX,LEN ;±È½Ï´ÎÊý->CX MOV SI,0 ;×Ö½Ú´æ´¢ÇøÖ¸Õë MOV DL,0 ;¸ºÔªËظöÊý³õʼ»¯ NEGCMP: MOV AL,BUF[SI] CMP AL,0 JNL C0GE
INC DL ;СÓÚ0£¬¸öÊý¼Ó1£¬Ö¸Õë¼Ó1 C0GE: INC SI ;²»Ð¡ÓÚ0£¬Ö¸Õë¼Ó1 LOOP NEGCMP MOV AH, 4CH INT 21H CODE ENDS END START
3.18 ÒÑÖªÒÔBUFΪÊ×Ö·µÄ×Ö´æ´¢ÇøÖдæ·Å×Ån¸öÓзûºÅµÄ¶þ½øÖÆÊý£¬ÊÔ±àд³ÌÐò£¬½«´óÓÚµÈÓÚ0µÄÊýËÍÒÔBUF1ΪÊ×Ö·µÄ×Ö´æ´¢ÇøÖУ¬½«Ð¡ÓÚ0µÄÊýËÍÒÔBUF2ΪÊ×Ö·µÄ×Ö´æ´¢ÇøÖУ¬²¢»³ö³ÌÐò¿òͼ¡£
DATA SEGMENT
BUF DW 1212H,0FF12H,3434H,8989H,5656H,9090H LEN EQU ($ - BUF) / 2 BUF1 DW LEN DUP (?) BUF2 DW LEN DUP (?) DATA ENDS
CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV CX,LEN ;Ñ»·´ÎÊý£¬¼´BUFµÄµ¥ÔªÊý MOV BX,0 ;BUFÖ¸Õë³õʼ»¯ MOV SI,0 ;BUF1Ö¸Õë³õʼ»¯ MOV DI,0 ;BUF2Ö¸Õë³õʼ»¯ CLOOP: MOV AX,[BX] ;BUFÊý¾Ý->AX CMP AX,0 JGE TO1
MOV BUF2[DI],AX ;AX<0£¬AX->BUF2£¬DI+2->DI£¬BX+2->BX INC DI
INC DI
JMP CONTINUE
TO1: MOV BUF1[SI],AX ;AX>=0£¬AX->BUF1£¬SI+2->SI£¬BX+2->BX INC SI INC SI CONTINUE:INC BX INC BX
LOOP CLOOP MOV AH, 4CH INT 21H CODE ENDS END START
3.19 ÒÑÖªÔÚÒÔBUFΪÊ×µØÖ·µÄ×Ö½Ú´æ´¢ÇøÖУ¬´æ·Å×ÅÒ»¸öÒÔ¡ä$¡ä×÷½áÊø±êÖ¾µÄ×Ö·û´®£¬ÊÔ±àд³ÌÐò£¬ÔÚCRTÉÏÏÔʾ¸Ã×Ö·û´®£¬²¢ÒªÇó½«Ð¡Ð´×ÖĸÒÔ´óд×ÖĸÐÎʽÏÔʾ³öÀ´¡£»³ö³ÌÐò¿òͼ¡£
DATA SEGMENT
BUF DB 'abCDalskdjf$' DATA ENDS
CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV SI,0 ;BUFµØÖ·Ö¸Õë ALOOP: MOV DL,BUF[SI] ;BUFÊý¾Ý->DL CMP DL,'$' ;DL='$',EXIT JE STOP CMP DL,5AH
JBE UPPER ;´óд×Öĸ£¬´òÓ¡Êä³ö£¬µØÖ·Ö¸ÕëSI¼Ó1
SUB DL,20H ;Сд×Öĸ£¬DL¼õ20Hºó´òÓ¡Êä³ö£¬µØÖ·Ö¸ÕëSI¼Ó1 UPPER: MOV AH,02H INT 21H INC SI
JMP ALOOP STOP: MOV AH, 4CH INT 21H CODE ENDS END START
3.20 ÉèÓÐÈý¸ö×Ö½Ú±äÁ¿X¡¢Y¡¢Z£¬ÊÔÕÒ³öX¡¢YÓзûºÅÊýÖнϴóÕßËÍÈëZÖУ¬±àд³ÌÐò¡£
ÍÆ¼ö¼ì²âʵÀý£º-128ºÍ127 DATA SEGMENT X DB 0F0H Y DB 12H Z DB ? DATA ENDS
CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV AL,X ;X->AL CMP AL,Y ;X ? Y JGE NEXT ;X>=Y,X->Z MOV AL,Y ;X
END START
3.21 ÉèÔÚ±äÁ¿µ¥ÔªA¡¢BºÍCÖдæ·ÅÓÐÈý¸öÊý£¬ÈôÈý¸öÊý¶¼²»Îª0£¬ÔòÇó³öÈý¸öÊýÖ®ºÍ´æÈëDÖУ»ÈôÓÐÒ»¸öΪ0£¬Ôò½«ÆäËûÁ½¸öµ¥ÔªÒ²ÇåÁ㣬±àд³ÌÐò¡£
DATA SEGMENT A DB 0F0H B DB 12H C DB 22H D DW ? DATA ENDS
CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX CMP A,0 JZ STOP CMP B,0 JZ STOP CMP C,0 JZ STOP ;ÓÐÒ»¸öΪ0£¬È«²¿ÖÃ0 MOV AH,0 ;·ñÔò×÷¼Ó·¨ÔËË㣬·Åµ½D£¬×¢Òâ¼Ó·¨ÔËËã½á¹ûΪ×Ö MOV BH,0 MOV AL,A MOV BL,B ADD AX,BX MOV BL,C ADD AX,BX MOV D,AX JMP STOP NEXT: MOV A,0 MOV B,0 MOV C,0 STOP: MOV AH, 4CH INT 21H CODE ENDS END START
3.22 ÊÔ·ÖÎöÏÂÁгÌÐò¶Î£¬ËµÃ÷Íê³ÉÁËʲô²Ù×÷£¿³ÌÐòÖ´ÐÐǰºóHEXNUM×Ö½Úµ¥ÔªµÄÄÚÈÝÊÇʲô£¿
ASCNUM DB 41H HEXNUM DB £¿
MOV AH£¬ASCNUM CMP AH£¬39H JBE NEXT SUB AH£¬7
NEXT£ºSUB AH£¬30H
MOV HEXNUM£¬AX HLT ½â£º
'0'~'9'Óë'A'~'F'×é³ÉµÄһλʮÁù½øÖÆÊýµÄASCIIÂëת»»ÎªÒ»Î»Ê®Áù½øÖÆÊý¡£ ³ÌÐòÖ´ÐÐǰ£º[HEXNUM] = ? ³ÌÐòÖ´Ðкó£º[HEXNUM] = 0AH
3.23 ÔÚÊý¾ÝÇøSTR1µ¥Ôª¿ªÊ¼´æ·ÅÒ»³¤¶ÈΪ1¡«256¸ö×Ö·ûµÄ×Ö·û´®¡£ÒªÇó¶Ô¸Ã×Ö·û´®ÖÐÿ¸ö×Ö·ûÔÚ×î¸ßλÅäÉÏÒ»¸öżУÑé루¼´±£³ÖÒ»×Ö½ÚÊýÖÐ1µÄ¸öÊýΪżÊý£©£¬²¢´æ»Øµ½Ôµ¥ÔªÖС£
DATA SEGMENT
STR1 DB 'abcdefghi' LEN1 EQU $-STR1 DATA ENDS
CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV CX,LEN1 MOV SI,0
ALOOP: MOV AL,STR1[SI]
OR AL,0 ;Óë0Ïà»ò£¬²»Ó°ÏìÔÀ´µÄÖµ
JP CONTINUE ;Èô1µÄ¸öÊýΪżÊý£¬²»×öÈκδ¦Àí OR AL,80H ; Èô1µÄ¸öÊýΪżÊý£¬×î¸ßλÖÃ1 MOV STR1[SI],AL CONTINUE:INC SI
LOOP ALOOP STOP: MOV AH, 4CH INT 21H CODE ENDS END START
3.24 ÒÑÖªÔÚÊý¾ÝÇøÖÐDATA1ºÍDATA2¿ªÊ¼·Ö±ð´æ·ÅN¸ö×Ö½ÚÊý¾Ý£¬±àÖÆ³ÌÐò¼ì²éÁ½Êý¾Ý¿éÖеÄÊý¾ÝÊÇ·ñÏàͬ¡£ÈôÍêȫһÖ£¬Ôò½«±êÖ¾µ¥ÔªFLAGÖÃFFH£¬·ñÔòÖÃ0¡£²¢½«µÚÒ»´Î³öÏֵIJ»Í¬Êý¾ÝµÄµØÖ··Ö±ð´æ·ÅADR1ºÍADR2µ¥ÔªÖУ¬±àд³ÌÐò¡£
;¼ÙÉèΪ°´Ë³Ðò±È½Ï£¬·ÇÎÞÐò±È½Ï DATA SEGMENT
DATA1 DB 22H,33H,44H,55H DATA2 DB 22H,33H,44H,66H N EQU $-DATA2 FLAG DB ? ADR1 DW ? ADR2 DW ? DATA ENDS
CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV CX,N MOV SI,0 MOV DI,0
ALOOP1: MOV AL,DATA1[SI] CMP AL,DATA2[DI] JNZ NE12 INC SI INC DI
LOOP ALOOP1 MOV FLAG,0FFH
JMP EXIT NE12: MOV FLAG,0 MOV ADR1,SI MOV ADR2,DI EXIT: MOV AH, 4CH INT 21H

