⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 asmpro13.asm

📁 汇编语言的一段程序
💻 ASM
字号:
DATA SEGMENT                                   ;数据段定义 
INFORMATION1 DB "Please enter the matrix1!The array is 3*4!$" ;提示说明 
INFORMATION2 DB "Please enter the matrix2!The array is 4*5!$" ;提示说明 
tips   DB        'input a number (00~99)$'
;enter DB 0DH,0AH,"$"                           ;换行 
buf           DB        ?,?                     ;输入缓冲
M1 DB 0DH,0AH,"The array1:$"                   ;提示信息 
M2 DB 0DH,0AH,"The array2:$" 
M3 DB 0DH,0AH,"Array1*Array2:$" 
              
matrix1 DB 12 dup(?)                                              ;矩阵1 
matrix2 DB 20 dup(?)                                              ;矩阵2 
result DW 15 DUP(?)                                                ;矩阵相乘结果 

DATA ENDS 
enter         MACRO
              MOV       AH,02h
              MOV       DL,0ah
              INT       21h
              MOV       DL,0dh
              INT       21h     
              ENDM

              
              
CODE          SEGMENT                                  ;定义代码段 
main          PROC      FAR
              ASSUME CS:CODE,DS:DATA 
begin:        MOV AX,DATA                             ;begin: MOV AX,DATA ;置DS段初值 
              MOV DS,AX 
                                              ;MOV AX,A 
              LEA DX,INFORMATION1                     ;取信息提示地址偏移量 
              MOV AH,09h                                ;MOV AH,9 ;9号功能调用显示提示信息 
              INT 21H 
              enter

              LEA DX,m1                               ;LEA DX,M1 ;提示输入矩阵1 
              MOV AH,9 
              INT 21H 
              MOV CX,12 
              MOV BP,0
              enter
              k0:  CALL input
                  MOV       matrix1[BP],DL      
                  MOV       AH,2
                  MOV       DL,20h
                  INT       21h
                  INC BP                                           
             LOOP      k0
     
      	enter;MOV AH,9 ;9号功能调用显示      INT 21H 
     	 	LEA DX,INFORMATION2                     ;取信息提示地址偏移量 
    	 	 MOV AH,09h                                ;MOV AH,9 ;9号功能调用显示提示信息 
     		 INT 21H 
    		  enter

   		  MOV BP,0                                           
   		  LEA DX,m2                                  ;LEA DX,M2 ;提示输入矩阵2  
   		  MOV AH,9 
    		 INT 21H 
   		  enter
   		  XOR       BP,BP        
   		  MOV CX,20
      
    		 m0: CALL input
  	   			MOV       matrix2[BP],DL      
   		  		MOV       AH,2
 		   		MOV       DL,20h
 		  		 INT       21h
  		   			INC BP                                           
 		    LOOP      m0         ;MOV BL,OFFSET MATRIX1 ;取矩阵1的偏移地址 (33) 
 
              
        
                                                ;MOV BL,OFFSET MATRIX2 ;取矩阵2的偏移地址 
                                                ;INPUT2: INT 21 ;2号功能调用,用来输入数组数值 (47) 
     XOR AX,AX 
     MOV DI,0
     MOV SI,0
     MOV Bp,0
     MOV CX,0                                            ;CALL LINEMULCOLOUM ;调用矩阵1某行和矩阵2的列相乘子程序 (60) 
 q:  CALL LINEMULCOLOUM 
     mov di,0
     inc cx
     mov si,cx
     cmp cx,5
     jnz q
     MOV DI,4;inc di
     MOV SI,0
     MOV CX, 5
q1:  CALL LINEMULCOLOUM 
     mov di,4
     inc cx
     mov si,cx
     cmp cx,5
     jnz q1
     MOV DI,8;inc di
     MOV SI,0
     MOV CX,5 
q2:  CALL LINEMULCOLOUM 
     mov di,8
     inc cx
     mov si,cx
     cmp cx,5
     jnz q2 

              
 
		MOV AH,9 
		MOV DX,OFFSET M3 
	    INT 21H 
		enter
        call output
                            
              MOV       AH,4CH 
              INT 21H 

              RET  
main          ENDP
LINEMULCOLOUM PROC NEAR                         ;矩阵相乘子程序 
              push cx
              push si
              MOV       DX,0  
              MOV       CX,4                                        ;设置循环次数 
  again:      MOV AL,matrix1[DI] 
              mov ah,0                        ;取矩阵1的偏移地址 
              MOV BL,matrix2[SI]                                     ; 取矩阵2的偏移地址 
              mov bh,0                           ;数值进栈保存                                    ;AGAIN: IMUL BL ;矩阵1的行和矩阵2的列相乘 (99) 
              MUL BL 
		      ADD DX,AX 
		      ADD DI,01H
		      ADD SI,5               
		      LOOP again
              
              MOV       result[Bp],DX 
              
              ADD       Bp,2 
              pop cx
              pop si
              RET
LINEMULCOLOUM      ENDP 
input      PROC      NEAR
              PUSH      AX
              PUSH      BX
              PUSH      CX
              ;check
          s:  MOV       DI,2
         s1:  DEC       DI
              MOV       AH,01h       
              INT       21h
              CMP       AL,20h
              JZ        ent
              CMP       AL,30h
              JB        s
              CMP       AL,39h
              JA        s
              MOV       buf[DI],AL
              CMP       DI,0
              JNZ       s1
              DEC       DI
         ent: CMP       DI,1
              JZ        s
              INC       DI
              ;count
              MOV       BL,10   
              MOV       DL,buf[DI]
              MOV       DH,0
              SUB       DL,30h
              CMP       DI,1
              JZ        save
              INC       DI
          l:  MOV       AL,buf[DI]
              SUB       AL,30h
              MUL       BL
              ADD       DX,AX
              ;save
         save:
              POP       CX
              POP       BX
              POP       AX          
              RET
input      ENDP 
 
 output   proc     near
                LEA       SI,result
               MOV       CX,3
           m:  PUSH      CX  
               MOV       CX,5
           K:  PUSH      CX
               MOV       DX,0
               MOV       AX,[SI]
               MOV       CX,10000
               DIV       CX
               MOV       BX,DX  
               MOV       DL,AL
               cmp       dl,0
               jz         a
               ADD       DL,30h
               MOV       AH,02h
               INT       21h   
               
          a:   MOV       DX,0
               MOV       AX,BX   
               MOV       CX,1000
               DIV       CX
               MOV       BX,DX  
               MOV       DL,AL
               ADD       DL,30h
               MOV       AH,02h
               INT       21h   
                
               MOV       AX,BX  
               MOV       CL,100
               DIV       CL
               MOV       BL,AH
               MOV       DL,AL
               cmp       dl,0
               jz        b
               ADD       DL,30h
               MOV       AH,2h
               INT       21h
              
           b:  MOV       AL,BL
               MOV       AH,0
               MOV       CL,10
               DIV       CL
               MOV       BL,AH
               MOV       DL,AL
              ADD        DL,30h
               MOV       AH,02h
               INT       21h
              
              MOV       DL,BL
               ADD       DL,30h
               MOV       AH,02h
               INT       21h
               
               MOV       DL,20h
               MOV       AH,02h
               INT       21h
               POP       CX
               ADD      SI,2
               LOOP      k
               enter
               POP       CX
               LOOP      m
               ret
output     endp             
CODE ENDS 
END begin

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -