INORDER PROC LEA SI,BUF LEA DI,BUF+2 MOV BX,SI MOV CX,COUNT
DEC CX
AGAIN: MOV AX,WORD PTR [BX]
SUB AX,WORD PTR [DI]
JB TO MOV BX,DI TO: ADD DI,2 LOOP AGAIN
MOV AX,WORD PTR [BX]
MOV STOR2,AX
LEA SI,BUF LEA DI,BUF+2 MOV BX,SI MOV CX,COUNT DEC CX
AGAIN1: MOV AX,WORD PTR [BX]
CMP AX,WORD PTR [DI]
JA TO1 MOV BX,DI TO1: ADD DI,2 LOOP AGAIN1
MOV AX,WORD PTR [BX]
MOV STOR1,AX
RET INORDER ENDP
PREPARE PROC MOV AX,STOR1 MOV AH,AL MOV CL,4 SHR AH,CL AND AX,0F0FH CMP AH,10 JB TP ADD AH ,37H JMP EN TP: ADD AH,30H EN:
CMP AL,10 JB TP1 ADD AL ,37H JMP EN1 TP1: ADD AL,30H EN1: MOV MAX+6,AH MOV MAX+7,AL
MOV AX,STOR1
MOV AL,AH MOV CL,4 SHR AH,CL AND AX,0F0FH CMP AH,10 JB TP2 ADD AH ,37H JMP EN2 TP2: ADD AH,30H EN2: CMP AL,10
41
JB TP3 ADD AL ,37H JMP EN3 TP3: ADD AL,30H EN3: MOV MAX+4,AH MOV MAX+5,AL
MOV AX,STOR2 MOV AH,AL MOV CL,4 SHR AH,CL AND AX,0F0FH CMP AH,10 JB TP4 ADD AH ,37H JMP EN4 TP4: ADD AH,30H EN4:
CMP AL,10 JB TP5 ADD AL,37H JMP EN5 TP5: ADD AL,30H EN5: MOV MIN+6,AH MOV MIN+7,AL
MOV AX,STOR2
MOV AL,AH MOV CL,4 SHR AH,CL AND AX,0F0FH
CMP AH,10 JB TP6 ADD AH,37H JMP EN6 TP6: ADD AH,30H EN6: CMP AL,10 JB TP7 ADD AL,37H JMP EN7 TP7: ADD AL,30H EN7: MOV MIN+4,AH MOV MIN+5,AL
RET
PREPARE ENDP
OUTPUT PROC LEA DX,PRINT MOV AH,9 INT 21H
RET
OUTPUT ENDP
CODE ENDS END MAIN
26.在BUFFER中定义了的十个带符号字,将其中的负数变成绝对值,并以十进制方式输出
DATA SEGMENT
42
BUF DW
125AH,4357H,0F50H,0B43H,4AC4H,7454H,8B15H,0A2A4H,0F3CH,00F7H MINUS DW 10 PRINT DB 10,13
OU DB 10 DUP(0,0,0,0,0,',' ),'$' DATA ENDS CODE SEGMENT
ASSUME CS:CODE,DS:DATA,ES:DATA MAIN PROC FAR MOV AX,DATA MOV ES,AX MOV DS,AX
CALL FIND CALL PREPARE CALL OUTPUT
MOV AH,4CH INT 21H MAIN ENDP
FIND PROC LEA BX,BUF
MOV CX,10
AGAIN: CMP WORD PTR [BX],0
JG TO
NEG WORD PTR [BX] TO: ADD BX,2 LOOP AGAIN
RET
FIND ENDP
PREPARE PROC
MOV CL,10
LEA SI,OU
LEA DI,BUF
AGAIN1: MOV CH,5 MOV BX,SI ADD BX,4
MOV AX,[DI]
AGAIN2: MOV DX,0
DIV MINUS
MOV [BX],DL OR BYTE PTR [BX],30H
DEC BX
INC SI DEC CH JNZ AGAIN2 INC SI ADD DI,2 DEC CL JNZ AGAIN1
RET
PREPARE ENDP
OUTPUT PROC LEA DX,PRINT MOV AH,9 INT 21H
RET
43
OUTPUT ENDP
CODE ENDS END MAIN
27.已知数组A包含20个互不相等的字型整数,数组B包含30个互不相等的字型整数,试编制一程序把在A中而不在B中出现的整数放于数组C中。
DATA SEGMENT
BUFA DW
125AH,4357H,0F50H,0B43H,4AC4H,7454H,8B15H,0A2A4H,0F3CH,00F7H
DW
1242H,34DEH,2467H,1EADH,0E343H,98A7H,0CDE3H,0982H,0ADCFH,65D2H
BUFB DW
9834H,3EADH,3467H,2ADEH,098EH,1356H,0CBEDH,09EDH,9ADFH,0963H
DW 1242H,34DEH,2467H,1EADH,0E343H,98A7H,0CDE3H,0982H,0ADCFH,65D2H
DW 38EDH,4AAEH,0C523H,8344H,9EDCH,0B574H,743FH,0C436H,05EEH,0F425H BUF DW 30 DUP(?) DATA ENDS CODE SEGMENT
ASSUME CS:CODE,DS:DATA,ES:DATA MAIN PROC FAR MOV AX,DATA MOV ES,AX MOV DS,AX
CALL OPERATE
MOV AH,4CH INT 21H MAIN ENDP
OPERATE PROC CLD MOV CL,20 LEA DI,BUF
LEA SI,BUFA
AGAIN: LODSW
LEA BX,BUFB
MOV CH,30
CON: CMP AX,[BX] JZ EN
ADD BX,2 DEC CH JNZ CON CALL INSERT EN: DEC CL JNZ AGAIN
RET
OPERATE ENDP
INSERT PROC
44
MOV [DI],AX ADD DI,2
RET
INSERT ENDP CODE ENDS END MAIN
28已知数组A包含20个互不相等的字型整数,数组B包含30个互不相等的字型整数,试编制一程序把既在A中又在B中出现的数存放于数组C中。
DATA SEGMENT
BUFA DW
125AH,4357H,0F50H,0B43H,4AC4H,7454H,8B15H,0A2A4H,0F3CH,00F7H
DW
1242H,34DEH,2467H,1EADH,0E343H,98A7H,0CDE3H,0982H,0ADCFH,65D2H
BUFB DW
9834H,3EADH,3467H,2ADEH,098EH,1356H,0CBEDH,09EDH,9ADFH,0963H
DW 1242H,34DEH,2467H,1EADH,0E343H,98A7H,0CDE3H,0982H,0ADCFH,65D2H
DW 38EDH,4AAEH,0C523H,8344H,9EDCH,0B574H,743FH,0C436H,05EEH,0F425H BUF DW 30 DUP(?) DATA ENDS CODE SEGMENT
ASSUME CS:CODE,DS:DATA,ES:DATA MAIN PROC FAR MOV AX,DATA MOV ES,AX MOV DS,AX
CALL OPERATE
MOV AH,4CH INT 21H MAIN ENDP
OPERATE PROC CLD MOV CL,20 LEA DI,BUF
LEA SI,BUFA
AGAIN: LODSW
LEA BX,BUFB
MOV CH,30
CON: CMP AX,[BX] JNZ TO CALL INSERT JMP EN TO: ADD BX,2 DEC CH JNZ CON
EN: DEC CL JNZ AGAIN
RET
OPERATE ENDP
45