Помогите. Не работает умножение матриц(2x3 на 3x2). так же не понимаю, как сделать правильный вывод в консоль полученной матрицы. masm и link не пишет никаких ошибок, но при запуске написано: "lab.exe не является приложением Win32". | Код | stack segment dw 256 dup(?) stack ends data segment matrA db "314271$" qlmatrA db 2 qcmatrA db 3 matrB db "159314$" matrR db "0000$" data ends code segment assume cs: code, ds: data, ss: stack lea bp, [matrA] mov ah, [qlmatrA] mov al, [qcmatrA] lea di, [matrB] lea si, [matrR] call MatrProd mov ah,4ch int 21h MatrProd: push cx push bp push di push si mov cx, 0 mov cl, ah mMatrProdLoopRows: push cx mov cx, 0 mov cl, ah push di mMatrProdLoopColumns: call CalcResultElement mov [si], dx inc si inc di loop mMatrProdLoopColumns pop di pop cx push ax mov ah, 0 add bp, ax pop ax loop mMatrProdLoopRows pop si pop di pop bp pop cx ret CalcResultElement: push bx push cx push bp push di mov cx, 0 mov cl, al mov dx, 0 mCalcResultElementLoopColumns: push ax mov ax, 0 mov al, byte [bp] mov bx, 0 mov bl, byte [di] push dx mul bx pop dx add dx, ax pop ax inc bp push ax mov al, ah mov ah, 0 add di, ax pop ax loop mCalcResultElementLoopColumns pop di pop bp pop cx pop bx ret code ends
|
|