΢»úÔÀíÓë½Ó¿Ú¼¼Êõ£¨µÚ¶þ°æ£©
Ç廪´óѧ³ö°æÉç
MOV
NEXT1:
MOV INC
LOOP
NEXT1 MOV MOV MOV
NEXT2:
MOV CMP JNZ INC
AH,55H
byte ptr[BX],AH BX
BX,0000H CX,0C000H AL,81H AH, [BX] AH,55H EXIT BX
LOOP NEXT2 MOV MOV
AL,7EH AH,4CH
EXIT:
INT 21H CODE END
ENDS START
6. ÔÚµ±Ç°Êý¾Ý¶Î 4000H ¿ªÊ¼µÄ 128 ¸öµ¥ÔªÖдæ·ÅÒ»×éÊý¾Ý£¬ ÊÔ±à³ÌÐò½«ËüÃÇ˳
Ðò°áÒÆµ½ A000H ¿ªÊ¼µÄ˳Ðò 128 ¸öµ¥ÔªÖУ¬²¢½«Á½¸öÊý¾Ý¿éÖð¸öµ¥Ôª½øÐбÈ
½Ï ; ÈôÓÐ´í½« BL Öà 00H; È«¶ÔÔò½« BL Öà FFH £¬ÊÔ±à³ÌÐò¡£ ´ð£º
DATA SEGMENT
ORG 400H
DA1 ORG
DB 128 DUP(?)
0A00H DB
128 DUP(?)
DA2
DATA
ENDS
CODE SEGMENT ASSUME
CS:CODE,DS:DATA,ES:DATA
START: MOV AX,DATA
MOV DS,AX
17
΢»úÔÀíÓë½Ó¿Ú¼¼Êõ£¨µÚ¶þ°æ£©
Ç廪´óѧ³ö°æÉç
LEA SI,DA1
LEA DI,DA2
MOV CX,128
AGAIN:
MOV AL,[SI]
INC SI INC
DI
LOOP
AGAIN LEA
SI, DA1 LEA
DI, DA2 MOV
CX,128
NEXT:
MOV
AL,[SI]
MOV BL,[DI] CMP AL,BL
JNZ
ERROR
INC SI INC DI
MOV
BL,0FFH LOOP
NEXT JMP
EXIT
ERROR: MOV
BL,00H EXIT:
MOV
AH,4CH
INT 21H
CODE ENDS
END START
7. Éè±äÁ¿µ¥Ôª A¡¢B¡¢C ´æ·ÅÓÐ 3 ¸öÊý£¬Èô 3 ¸öÊý¶¼²»ÎªÁ㣬ÔòÇó 3 ¸öÊýµÄºÍ£¬´æ
·ÅÔÚ D ÖÐ; ÈôÓÐÒ»¸öΪÁ㣬Ôò½«ÆäÓàÁ½¸öÒ²ÇåÁ㣬ÊÔ±àд³ÌÐò¡£ ´ð£º
DATA
SEGMENT
A
DB ? B
DB
?
18
΢»úÔÀíÓë½Ó¿Ú¼¼Êõ£¨µÚ¶þ°æ£©
Ç廪´óѧ³ö°æÉç
C DB DATA CODE ASSUME
? ENDS
SEGMENT
CS:CODE,DS:DATA
AX,DATA DS,AX A,00H LP1 B,0 C,0 LP4
START: MOV
MOV CMP JNZ MOV MOV JMP
LP1:
CMP B,00H JNZ MOV MOV JMP
LP2 A,0 C,0 LP4
LP2:
CMP C,00H JNZ MOV MOV JMP MOV ADD ADD MOV INT
LP3 A,0 B,0 LP4 AL,A AL,B AL,C AH,4CH 21H
ENDS START
LP3:
LP4:
CODE END
8. ÓÐÒ»¸ö 100 ¸ö×Ö½ÚµÄÊý¾Ý±í£¬±íÄÚÔªËØÒѰ´´Ó´óµ½Ð¡µÄ˳ÐòÅÅÁкã¬ÏÖ¸ø¶¨Ò»ÔªËØ£¬ÊÔ±à³ÌÐòÔÚ±íÄÚ²éÕÒ£¬Èô±íÄÚÒÑÓдËÔªËØ£¬Ôò½áÊø ; ·ñÔò£¬°´Ë³Ðò½«´ËÔªËØ²åÈë±íÖÐÊʵ±µÄλÖ㬲¢ÐÞ¸Ä±í³¤¡£
19
΢»úÔÀíÓë½Ó¿Ú¼¼Êõ£¨µÚ¶þ°æ£©
Ç廪´óѧ³ö°æÉç
´ð£º
DATA SEGMENT
BUFF DA1
DB DB
100 DUP(?) (?) DB 0
LENGTH
DATA
ENDS
CODE SEGMENT ASSUME
CS:CODE,DS:DATA
AX,DATA DS,AX SI,0 AL,DA1 CX,100 BUFF[SI],AL EXIT SI
FIND0 DI,99
START: MOV
MOV MOV MOV MOV
FIND0: CMP
JZ
INC
LOOP
MOV
MOV SI,0
COMPARE: CMP BUFF[DI],AL
JG
INSERT
BL,BUFF[DI] BUFF[DI+1],BL DI DI,SI
COMPARE EXIT
BUFF[DI+1],AL LENGTH , 101
AH,4CH
MOV
MOV
DEC
CMP
JNL
JMP
INSERT:
MOV MOV
EXIT: MOV
INT 21H
20