START:PUSH DS MOV AX,DATA MOV DS,AX MOV SI,2000H MOV DI,3000H MOV CX,100 LP1: MOV AL,[SI] MOV [DI],AL INC SI INC DI
LOOP LP1 POP DS HLT CODE ENDS END START
22. ÔÚDATA¿ªÊ¼µÄ4¸öµ¥ÔªÖдæ·Å×ÅÒ»¸ö32λÊý£¬Çó³öÆäÖеġ°1¡±µÄ¸öÊý£¬²¢´æÈëCOUNTµ¥ÔªÖС£ ½â£º
DATA SEGMENT
DATA1 DB 0FEH£¬86H£¬7CH£¬35H COUNT DB 00H DATA ENDS
STACK SEGMENT
DB 100 DUP£¨£¿£©
STACK ENDS CODE SEGMENT
ASSUME CS£ºCODE£¬DS£ºDATA£¬SS£ºSTACK START£ºPUSH DS
MOV AX£¬DATA
MOV DS£¬AX MOV AX£¬STACK MOV SS£¬AX MOV SI£¬OFFSET DATA1 MOV BX£¬[SI] MOV DX£¬[SI+2] MOV CX£¬32 XOR AL£¬AL LP1£ºRCR DX,1
RCR BX,1 JNC LP2 INC AL LP2£ºLOOP LP1
MOV COUNT£¬AL POP DS MOV AH£¬4CH INT 21H HLT CODE ENDS
END START
1. ÏÂÁбäÁ¿¸÷Õ¼¶àÉÙ×Ö½Ú£¿
A1 DW 23H£¬5876H 4×Ö½Ú
21
A2 DB 3 DUP£¨?£©£¬0AH£¬0DH£¬¡®$¡¯ 6×Ö½Ú
A3 DD 5 DUP£¨1234H£¬567890H£© 4¡Á2¡Á5=40×Ö½Ú A4 DB 4 DUP£¨3 DUP£¨1£¬2£¬¡®ABC¡¯£©£© 5¡Á3¡Á4=60×Ö½Ú
µ÷ÊÔ³ÌÐò£º
STACK SEGMENT STACK DB 100 DUP(?) STACK ENDS DATA SEGMENT
DA1 DW 23H,5876H
DA2 DB 3 DUP(?) ,0AH,0DH,'$' DA3 DD 5 DUP(1234H,567890H) DA4 DB 4 DUP(3 DUP(1,2,'ABC')) DA5 DB 10 DUP(?) DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK START:PUSH DS
MOV AX,DATA
MOV DS,AX
MOV AX,OFFSET DA1 MOV BX,OFFSET DA2 MOV CX,OFFSET DA3 MOV DX,OFFSET DA4 MOV DI,OFFSET DA5 POP DS HLT CODE ENDS END START
5. ¶ÔÓÚÏÂÃæµÄÊý¾Ý¶¨Ò壬¸÷ÌõMOVÖ¸ÁîÖ´Ðкó£¬ÓйؼĴæÆ÷µÄÄÚÈÝÊÇʲô£¿
DA1 DB ?
DA2 DW 10 DUP£¨?£© DA3 DB ¡®ABCD¡¯ MOV
AX£¬TYPE DA1
MOV BX£¬SIZE DA2 MOV CX£¬LENGTH DA3
½â£º¸÷ÌõMOVÖ¸ÁîÖ´Ðкó£¬ÓйؼĴæÆ÷µÄÄÚÈÝÈçÏ£º
MOV AX£¬TYPE DA1 £»£¨AX£©= 1
MOV BX£¬SIZE DA2 £»£¨BX£©= 20
MOV CX£¬LENGTH DA3 £»£¨CX£©=1 µ÷ÊÔ³ÌÐò
STACK SEGMENT STACK
DB 100 DUP(?) STACK ENDS DATA SEGMENT DA1 DB ?
DA2 DW 10 DUP(?) DA3 DB 'ABCD' DATA ENDS
22
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK START: PUSH DS
MOV AX,DATA
MOV DS,AX
MOV AX,TYPE DA1 MOV BX,SIZE DA2 MOV CX,LENGTH DA3 POP DS HLT CODE ENDS END START
6. ϶γÌÐòÍê³Éºó£¬AHµÈÓÚʲô£¿
IN
JZ
L1
AH£¬0 AL£¬5FH
TEST AL£¬80H MOV
JMP STOP
L1£ºMOV AH£¬0FFH STOP£ºHLT ½â£º
Èç¹ûµØÖ·Îª5FHµÄÍâÉèÊäÈëµ½ALÖеÄÊý¾ÝµÄ×î¸ßλ=1£¬Ôò£¨AH£©= 0£¬·ñÔò£¬£¨AH£©= 0FFH¡£
10. ±àÖÆÁ½¸öͨÓùý³Ì£¬Íê³ÉÁ½Î»Ê®Áù½øÖÆÊýת»»³ÉASCIIÂ룬²¢½«ASCIIÂë×Ö·ûÏÔʾ¡£
£¨1£©Á½Î»Ê®Áù½øÖÆÊýת»»³ÉASCIIÂë
ÉèÁ½Î»Ê®Áù½øÖÆÊý´æ·ÅÔÚDLÖУ¬Êä³öµÄASCIIÂë´æ·ÅÔÚBXÖС£ CON PROC PUSH AX PUSH CX MOV CL, 4 MOV AL, DL AND AL, 0FH CMP AL, 0AH JNC LP1 ADD AL, 30H JMP LP2 LP1: ADD AL, 37H LP2: MOV BL, AL MOV AL, DL SHR AL, CL AND AL, 0FH CMP AL, 0AH
23
JNC LP3 ADD AL, 30H JMP LP4 LP3: ADD AL, 37H LP4: MOV BH, AL POP CX POP AX RET CON ENDP
ËÄλʮÁù½øÖÆÊýת»»³ÉASCIIÂ룬
ÉèËÄλʮÁù½øÖÆÊý´æ·ÅÔÚ´æ´¢Æ÷BUF1µ¥ÔªÖУ¬Êä³öµÄASCIIÂë´æ·ÅÔÚ´æ´¢Æ÷BUF2¿ªÊ¼µÄµ¥ÔªÖС£ CON PROC PUSH AX PUSH CX PUSH DX
MOV DI, OFFSET BUF2 MOV SI, OFFSET BUF1 MOV CL, 4 MOV DH, 4 MOV DX, [SI] LP1: ROL DX, CL MOV AL, DL AND AL, 0F ADD AL, 30H CMP AL, 3AH JC LP2 ADD AL, 07H LP2: MOV [DI], AL INC DI DEC CH JNZ LP1 POP DX POP CX POP AX RET CON ENDP
£¨2£©ASCIIÂë×Ö·ûÏÔʾ Éè2¸öASCIIÂë×Ö·ûÔÚBXÖС£ DISP PROC PUSH AX
24