wuxin.ASM
上传用户:jxwdyz
上传日期:2020-09-03
资源大小:2k
文件大小:5k
- .386
- DATA SEGMENT USE16
- X DB 3
- Y DB 4
- Z DB 3
- BUFER1 DB 20 DUP(0)
- BUFER2 DB 20 DUP(0)
- BUFER3 DB 20 DUP(0)
- COUNT1 DW 0
- COUNT2 DW 0
- COUNT3 DW 0
- FILE DB 20 DUP(0)
- BUFFER DB 200 DUP(0)
- DJZS DW ?
- ERRMSG DB 'ERROR IN READ FILE.','$'
- ERROP DB 'ERRTR IN OPEN FILE.','$'
- BUF DD 200 DUP(0)
- LIE DB 0
- HAN DB 0
- COUNT DW ?
- BUF1 DD 300 DUP(0)
- BUF2 DD 300 DUP(0)
- BUF3 DD 300 DUP(0)
- M DB 0
- N DB 0
- BUFO DB 200 DUP(0)
- OUTFILE DB 20 DUP(0)
- SSMESG DB 0DH,0AH,'SUCCEED IN MUL OF METRIX!','$'
- DATA ENDS
- STACK SEGMENT USE16 STACK
- DB 200 DUP(0)
- STACK ENDS
- CODE SEGMENT USE16
- ASSUME CS:CODE,DS:DATA,SS:STACK
- BEGIN:
- MOV AX,DATA
- MOV DS,AX
- MOV ES,AX
- CALL CFX
- MOV CX,COUNT1
- LEA SI,BUFER1
- LEA DI,FILE
- A: MOV DX,[SI]
- MOV [DI],DX
- INC SI
- INC DI
- LOOP A
-
- CALL DJZ
-
- CALL MTOSH
- MOV AL,HAN
- MOV X,AL
- MOV AL,LIE
- MOV Y,AL
-
- MOV CX,COUNT
- LEA SI,BUF
- LEA DI,BUF1
- A1: MOV DX,[SI]
- MOV [DI],DX
- ADD SI,4
- ADD DI,4
- LOOP A1
-
-
-
- MOV CX,COUNT2
- LEA SI,BUFER2
- LEA DI,FILE
- B: MOV DX,[SI]
- MOV [DI],DX
- INC SI
- INC DI
- LOOP B
-
- CALL DJZ
- CALL MTOSH
- MOV AL,HAN
- MOV Y,AL
- MOV AL,LIE
- MOV Z,AL
- MOV CX,COUNT
- LEA SI,BUF
- LEA DI,BUF2
- B1: MOV DX,[SI]
- MOV [DI],DX
- ADD SI,4
- ADD DI,4
- LOOP B1
-
-
- CALL JZCF
- pts:
- MOV CX,COUNT3
- LEA SI,BUFER3
- LEA DI,OUTFILE
- M1: MOV DX,[SI]
- MOV [DI],DX
- INC SI
- INC DI
- LOOP M1
- CALL SHTOM
-
- MOV AH,4CH
- INT 21H
-
- CFX PROC
- PUSH AX
- PUSH BX
- PUSH CX
- PUSH SI
- PUSH DX
- MOV AH,51H
- INT 21H
- MOV ES,BX
- MOV BX,80H
- XOR CX,CX
- MOV CL,BYTE PTR ES:[80H]
- MOV SI,0
- INC BX
- LOOP0:
- INC BX
- MOV DL,ES:[BX]
- CMP DL,0DH
- JE P0
- CMP DL,20H
- JE Q01
- MOV BUFER1[SI],DL
- INC SI
- MOV COUNT1,SI
- JMP LOOP0
- Q01:
- MOV SI,0
- LOOP1:
- INC BX
- MOV DL,ES:[BX]
- CMP DL,0DH
- JE P0
- CMP DL,20H
- JE Q02
- MOV BUFER2[SI],DL
- INC SI
- MOV COUNT2,SI
- JMP LOOP1
- Q02:
-
- MOV SI,0
- LOOP2:
- INC BX
- MOV DL,ES:[BX]
- CMP DL,0DH
- JE P0
- CMP DL,20H
- JE LOOP2
- MOV BUFER3[SI],DL
- INC SI
- MOV COUNT3,SI
- JMP LOOP2
- P0:
- POP DX
- POP SI
- POP CX
- POP BX
- POP AX
- RET
- CFX ENDP
-
- DJZ PROC
- PUSH CX
- PUSH DX
- PUSH BX
- MOV AH,3DH
- LEA DX,FILE
- MOV AL,02H
- INT 21H
- JC OPERR
- MOV BX,AX
- READIN:
- LEA DX,BUFFER
- MOV CX,100H
- PUSH CX
- MOV AH,3FH
- INT 21H
- MOV DJZS,AX
- JC RDERR
- OR AX,AX
- JZ EXIT
- POP CX
- JMP EXIT
- OPERR: LEA DX,ERROP
- MOV AH,9
- INT 21H
- JMP E
- RDERR: LEA DX,ERRMSG
- MOV AH,9
- INT 21H
- JMP E
- EXIT: MOV AH,3EH
- INT 21H
-
- E:
-
- POP BX
- POP DX
- POP CX
- RET
- DJZ ENDP
- MTOSH PROC
- PUSH CX
- PUSH SI
- PUSH DI
- PUSH EBX
-
- mov han,0
- mov lie,0
- MOV CX,DJZS
- XOR SI,SI
- XOR DI,DI
- XOR EAX,EAX
-
- LOP0:
- MOV BL,BUFFER[SI]
- INC SI
- DEC CX
- or cx,cx
- jbe EXIT1
- CMP BUFFER[SI],0DH
- JE LOP2
- CMP BUFFER[SI],20H
- JE LOP1
- SUB BL,30H
- MOVZX EBX,BL
- IMUL EAX,10
- ADD EAX,EBX
- JMP LOP0
-
- LOP1:
- INC LIE
- SUB BL,30H
- MOVZX EBX,BL
- IMUL EAX,10
- ADD EAX,EBX
- MOV BUF[DI],EAX
- INC SI
- DEC CX
- or cx,cx
- jbe EXIT1
- ADD DI,4
- XOR EAX,EAX
- JMP LOP0
- LOP2:
- INC HAN
- MOV LIE,0
- SUB BL,30H
- MOVZX EBX,BL
- IMUL EAX,10
- ADD EAX,EBX
- MOV BUF[DI],EAX
- ADD SI,2
- DEC CX
- DEC CX
- or cx,cx
- jbe EXIT1
- ADD DI,4
- XOR EAX,EAX
- JMP LOP0
-
- EXIT1:
- INC LIE
- INC HAN
- SUB BL,30H
- MOVZX EBX,BL
- IMUL EAX,10
- ADD EAX,EBX
- MOV BUF[DI],EAX
- MOV AX,DI
- MOV BL,4
- DIV BL
- MOV AH,0
- MOV COUNT,AX
- INC COUNT
- POP EBX
- POP DI
- POP SI
- POP CX
- RET
- MTOSH ENDP
- JZCF PROC
- MOV CH,0;矩阵1的行数
- MOV DL,0;矩阵1的列数,矩阵2的行数
- MOV CL,0;矩阵2的列数
- LP:
- ;计算矩阵1中要取出的数据的位置
- MOV AL,CH
- MOV AH,0
- MUL Y
-
- ADD AL,DL
-
- MOVZX EBX,AL
- MOV EAX,BUF1[EBX*4];取出矩阵1中数据
- PUSH EAX
- MOV AL,DL
- MOV AH,0
- MUL Z
- MOV AL,AL
-
- ADD AL,CL
-
- MOVZX EBX,AL
- POP EAX
- IMUL EAX,BUF2[EBX*4]
- PUSH EAX
- MOV AL,CH
- MOV AH,0
- MUL Z
- ADD AL,CL
- MOVZX EBX,AL
- POP EAX
- ADD BUF3[EBX*4],EAX
-
- INC DL
- CMP DL,Y
- JB LP
-
- MOV DL,0
- INC CL
- CMP CL,Z
- JB LP
-
- MOV CL,0
- MOV DL,0
- INC CH
- CMP CH,X
- JB LP
-
- POP EBX
- POP EAX
- POP CX
- POP DX
- ;ret
- jmp pts
- JZCF ENDP
-
- SHTOM PROC
- PUSH SI
- PUSH CX
- PUSH DI
- PUSH EDX
- PUSH EAX
- PUSH EBX
-
- MOV EBX,10
- XOR SI,SI
- XOR CX,CX
- LEA DI,BUFO
- L0: XOR EDX,EDX
- MOV EAX,BUF3[SI]
- L1:
-
- XOR EDX,EDX
- DIV EBX
- ADD DX,30H
- PUSH DX
- INC CX
- OR EAX,EAX
- JNZ L1
-
- L2:
- POP AX
- MOV [DI],AL
- INC DI
- LOOP L2
-
- INC N
- MOV AH,N
- CMP AH,Z
- JZ CHH
- MOV WORD PTR [DI],20H
- ADD SI,4
- INC DI
- JMP L0
- CHH:
- INC M
- MOV AL,M
- CMP AL,X
- JE EXIT2
- MOV WORD PTR [DI],0DH
- INC DI
- MOV WORD PTR [DI],0AH
- INC DI
- ADD SI,4
- MOV N,0
- JMP L0
- EXIT2:
- MOV DX,OFFSET OUTFILE
- MOV ax,3D02H
- int 21h
-
- MOV BX,AX
- LEA DX,BUFO
- SUB DI,DX
- MOV CX,DI
- MOV AH,40H
- INT 21H
-
- MOV AH,3EH
- INT 21H
- POP EBX
- POP EAX
- POP EDX
- POP DI
- POP CX
- POP SI
- ret
- SHTOM ENDP
- CODE ENDS
- END BEGIN
-
-
-
-