wuxin.ASM
上传用户:jxwdyz
上传日期:2020-09-03
资源大小:2k
文件大小:5k
源码类别:

汇编语言

开发平台:

DOS

  1. .386
  2. DATA SEGMENT USE16
  3. X DB 3
  4. Y DB 4
  5. Z DB 3
  6. BUFER1  DB 20 DUP(0)
  7. BUFER2  DB 20 DUP(0)
  8. BUFER3  DB 20 DUP(0)
  9. COUNT1  DW 0
  10. COUNT2  DW 0
  11. COUNT3  DW 0
  12. FILE DB 20 DUP(0)
  13. BUFFER  DB 200 DUP(0)
  14. DJZS DW ?
  15. ERRMSG DB 'ERROR IN READ FILE.','$'
  16. ERROP   DB 'ERRTR IN OPEN FILE.','$'
  17. BUF  DD 200 DUP(0)
  18. LIE     DB 0
  19. HAN DB 0 
  20. COUNT   DW ?
  21. BUF1 DD 300 DUP(0)
  22. BUF2 DD 300 DUP(0)
  23. BUF3 DD 300 DUP(0)
  24. M DB 0
  25. N DB 0
  26. BUFO DB 200 DUP(0)
  27. OUTFILE  DB 20 DUP(0)
  28. SSMESG   DB  0DH,0AH,'SUCCEED IN MUL OF METRIX!','$'
  29. DATA     ENDS
  30. STACK SEGMENT USE16 STACK
  31. DB 200 DUP(0)
  32. STACK ENDS
  33. CODE SEGMENT USE16
  34.      ASSUME CS:CODE,DS:DATA,SS:STACK
  35. BEGIN:
  36.     MOV AX,DATA
  37. MOV DS,AX
  38. MOV ES,AX
  39. CALL CFX 
  40. MOV CX,COUNT1
  41. LEA SI,BUFER1
  42. LEA DI,FILE
  43. A: MOV DX,[SI]
  44. MOV [DI],DX
  45. INC SI
  46. INC DI
  47. LOOP A
  48. CALL DJZ
  49. CALL MTOSH
  50. MOV AL,HAN
  51. MOV X,AL
  52. MOV AL,LIE
  53. MOV Y,AL
  54. MOV CX,COUNT
  55. LEA SI,BUF
  56. LEA DI,BUF1
  57. A1: MOV DX,[SI]
  58. MOV [DI],DX
  59. ADD SI,4
  60. ADD DI,4
  61. LOOP A1
  62. MOV CX,COUNT2
  63. LEA SI,BUFER2
  64. LEA DI,FILE
  65. B: MOV DX,[SI]
  66. MOV [DI],DX
  67. INC SI
  68. INC DI
  69. LOOP B
  70. CALL DJZ
  71. CALL MTOSH
  72. MOV AL,HAN
  73. MOV Y,AL
  74. MOV AL,LIE
  75. MOV Z,AL
  76. MOV CX,COUNT
  77. LEA SI,BUF
  78. LEA DI,BUF2
  79. B1: MOV DX,[SI]
  80. MOV [DI],DX
  81. ADD SI,4
  82. ADD DI,4
  83. LOOP B1
  84. CALL JZCF
  85. pts:
  86. MOV CX,COUNT3
  87. LEA SI,BUFER3
  88. LEA DI,OUTFILE
  89. M1: MOV DX,[SI]
  90. MOV [DI],DX
  91. INC SI
  92. INC DI
  93. LOOP M1
  94. CALL SHTOM
  95. MOV AH,4CH
  96. INT 21H
  97. CFX PROC
  98. PUSH AX
  99. PUSH BX
  100. PUSH CX
  101. PUSH SI
  102. PUSH DX
  103. MOV AH,51H
  104. INT 21H
  105. MOV ES,BX
  106. MOV BX,80H
  107. XOR CX,CX
  108. MOV CL,BYTE PTR ES:[80H]
  109. MOV SI,0
  110. INC BX
  111. LOOP0:
  112. INC BX
  113. MOV DL,ES:[BX]
  114. CMP DL,0DH
  115. JE  P0
  116. CMP DL,20H
  117. JE  Q01
  118. MOV BUFER1[SI],DL
  119. INC SI
  120. MOV COUNT1,SI
  121. JMP LOOP0
  122. Q01:
  123. MOV SI,0
  124. LOOP1:
  125. INC BX
  126. MOV DL,ES:[BX]
  127. CMP DL,0DH
  128. JE P0
  129. CMP DL,20H
  130. JE Q02
  131. MOV BUFER2[SI],DL
  132. INC SI
  133. MOV COUNT2,SI
  134. JMP LOOP1
  135. Q02:
  136. MOV SI,0
  137. LOOP2:
  138. INC BX
  139. MOV DL,ES:[BX]
  140. CMP DL,0DH
  141. JE P0
  142. CMP DL,20H
  143. JE LOOP2
  144. MOV BUFER3[SI],DL
  145. INC SI
  146. MOV COUNT3,SI
  147. JMP LOOP2
  148. P0:
  149. POP DX
  150. POP SI
  151. POP CX
  152. POP BX
  153. POP AX
  154. RET
  155. CFX ENDP
  156. DJZ PROC
  157. PUSH CX
  158. PUSH DX
  159. PUSH BX
  160. MOV AH,3DH
  161. LEA DX,FILE
  162. MOV AL,02H
  163. INT 21H
  164. JC OPERR
  165. MOV BX,AX
  166. READIN: 
  167. LEA DX,BUFFER
  168. MOV CX,100H
  169. PUSH CX
  170. MOV AH,3FH
  171. INT 21H
  172. MOV DJZS,AX
  173. JC RDERR
  174. OR AX,AX
  175. JZ EXIT
  176. POP CX
  177. JMP EXIT
  178. OPERR: LEA DX,ERROP
  179. MOV AH,9
  180. INT 21H
  181. JMP E
  182. RDERR:  LEA DX,ERRMSG
  183. MOV AH,9
  184. INT 21H
  185. JMP E
  186. EXIT: MOV AH,3EH
  187. INT 21H
  188. E:
  189. POP BX
  190. POP DX
  191. POP CX
  192. RET
  193. DJZ ENDP
  194. MTOSH PROC
  195. PUSH CX
  196. PUSH SI
  197. PUSH DI
  198. PUSH EBX
  199.         
  200.     mov han,0
  201.     mov lie,0
  202. MOV CX,DJZS
  203. XOR SI,SI
  204. XOR DI,DI
  205. XOR EAX,EAX
  206. LOP0:
  207. MOV BL,BUFFER[SI]
  208. INC SI
  209. DEC CX
  210. or cx,cx
  211. jbe  EXIT1
  212. CMP BUFFER[SI],0DH
  213. JE  LOP2
  214. CMP BUFFER[SI],20H
  215. JE LOP1
  216. SUB BL,30H
  217. MOVZX EBX,BL 
  218. IMUL EAX,10
  219. ADD EAX,EBX
  220. JMP LOP0
  221. LOP1:
  222. INC LIE
  223. SUB BL,30H
  224. MOVZX EBX,BL 
  225. IMUL EAX,10
  226. ADD EAX,EBX
  227. MOV BUF[DI],EAX
  228. INC SI
  229. DEC CX
  230. or cx,cx
  231. jbe  EXIT1
  232. ADD DI,4
  233. XOR EAX,EAX
  234. JMP LOP0
  235. LOP2:
  236. INC HAN
  237. MOV LIE,0
  238. SUB BL,30H
  239. MOVZX EBX,BL 
  240. IMUL EAX,10
  241. ADD EAX,EBX
  242. MOV BUF[DI],EAX
  243. ADD SI,2
  244. DEC CX
  245. DEC CX
  246. or cx,cx
  247. jbe  EXIT1
  248. ADD DI,4
  249. XOR EAX,EAX
  250. JMP LOP0
  251. EXIT1:
  252. INC LIE
  253. INC HAN
  254. SUB BL,30H
  255. MOVZX EBX,BL 
  256. IMUL EAX,10
  257. ADD EAX,EBX
  258. MOV BUF[DI],EAX
  259. MOV AX,DI
  260. MOV BL,4
  261. DIV BL
  262. MOV AH,0
  263. MOV COUNT,AX
  264. INC COUNT
  265. POP EBX
  266. POP DI
  267. POP SI
  268. POP CX
  269. RET
  270. MTOSH ENDP
  271. JZCF PROC
  272.     MOV CH,0;矩阵1的行数 
  273.     MOV DL,0;矩阵1的列数,矩阵2的行数 
  274.     MOV CL,0;矩阵2的列数 
  275. LP:
  276. ;计算矩阵1中要取出的数据的位置    
  277.     MOV AL,CH
  278.     MOV AH,0
  279.     MUL Y
  280.     
  281.     ADD AL,DL
  282.     
  283.     MOVZX EBX,AL
  284.     MOV EAX,BUF1[EBX*4];取出矩阵1中数据 
  285.     PUSH EAX
  286.     MOV AL,DL
  287.     MOV AH,0
  288.     MUL Z
  289.     MOV AL,AL
  290.     
  291.     ADD AL,CL
  292.     
  293.     MOVZX EBX,AL
  294. POP EAX
  295.     IMUL EAX,BUF2[EBX*4]
  296.     PUSH EAX
  297. MOV AL,CH
  298.     MOV AH,0
  299.     MUL Z
  300.     ADD AL,CL
  301.     MOVZX EBX,AL
  302. POP EAX
  303.     ADD BUF3[EBX*4],EAX
  304.      
  305.     INC DL
  306.     CMP DL,Y
  307.     JB LP
  308.     
  309.     MOV DL,0
  310.     INC CL
  311.     CMP CL,Z
  312.     JB LP
  313.     MOV CL,0
  314.     MOV DL,0
  315.     INC CH
  316.     CMP CH,X
  317.     JB LP
  318. POP EBX
  319. POP EAX
  320. POP CX
  321. POP DX
  322. ;ret
  323. jmp pts
  324. JZCF ENDP
  325.      
  326. SHTOM PROC
  327. PUSH SI
  328. PUSH CX
  329. PUSH DI
  330. PUSH EDX
  331. PUSH EAX
  332. PUSH EBX
  333. MOV EBX,10
  334. XOR SI,SI
  335. XOR CX,CX
  336. LEA DI,BUFO
  337. L0: XOR EDX,EDX 
  338. MOV EAX,BUF3[SI]
  339. L1:  
  340. XOR EDX,EDX
  341. DIV EBX
  342. ADD DX,30H
  343. PUSH DX
  344. INC CX
  345. OR EAX,EAX
  346. JNZ L1
  347. L2:
  348. POP AX
  349. MOV [DI],AL
  350. INC DI
  351. LOOP L2
  352. INC N
  353. MOV AH,N
  354. CMP AH,Z
  355.     JZ CHH
  356.     MOV WORD PTR [DI],20H
  357. ADD SI,4
  358. INC DI
  359.         JMP L0
  360. CHH:
  361. INC M
  362. MOV AL,M
  363. CMP AL,X
  364. JE EXIT2
  365. MOV WORD PTR [DI],0DH
  366.     INC DI
  367. MOV WORD PTR [DI],0AH
  368. INC DI
  369. ADD SI,4
  370. MOV N,0
  371. JMP L0
  372. EXIT2: 
  373. MOV DX,OFFSET OUTFILE
  374. MOV ax,3D02H
  375. int 21h
  376. MOV BX,AX
  377. LEA DX,BUFO
  378. SUB DI,DX
  379. MOV CX,DI
  380. MOV AH,40H
  381. INT 21H
  382. MOV AH,3EH
  383. INT 21H
  384. POP EBX
  385. POP EAX
  386. POP EDX
  387. POP DI
  388. POP CX
  389. POP SI
  390. ret
  391. SHTOM ENDP
  392. CODE  ENDS
  393. END BEGIN
  394.  
  395.