Загрузка данных


dosseg
.model small
.stack 200h

.data

A dw ?
B dw ?
H dw ?
V dw ?

SA db 'Input length: $'
SB db 13,10,'Input width: $'
SH db 13,10,'Input height: $'
SV db 13,10,'Volume = $'


string db 255,0,255 dup(?)

errmsg db 'Invalid character! Use digits only.',13,10,'$'

negflag dw ?

.code


IntegerIn proc

start:

    mov ah,0Ah
    lea dx,string
    int 21h

    xor ax,ax
    lea si,string+2

    mov negflag,ax

    cmp byte ptr [si],'-'
    jne m2

    not negflag
    inc si
    jmp m3

m2:
    cmp byte ptr [si],'+'
    jne m3
    inc si

m3:

    cmp byte ptr [si],13
    je ex1

    cmp byte ptr [sia],'0'
    jb err1

    cmp byte ptr [si],'9'
    ja err1

    mov bx,10
    mul bx

    sub byte ptr [si],'0'

    add al,[si]
    adc ah,0

    inc si
    jmp m3

err1:

    lea dx,errmsg
    mov ah,9
    int 21h
    jmp start

ex1:

    cmp negflag,0
    je ex

    neg ax

ex:
    ret

IntegerIn endp


IntegerOut proc

    xor cx,cx
    mov bx,10

    cmp ax,0
    jge m

    neg ax

    push ax

    mov ah,2
    mov dl,'-'
    int 21h

    pop ax

m:

    inc cx
    xor dx,dx
    div bx

    push dx

    or ax,ax
    jnz m

m1:

    pop dx
    add dx,'0'

    mov ah,2
    int 21h

    loop m1

    ret

IntegerOut endp


Volume proc near

    push bp
    mov bp,sp

    mov ax,[bp+8]      
    mov bx,[bp+6]      
    mul bx             

    mov bx,[bp+4]      
    mul bx             

    pop bp
    ret 6

Volume endp

Begin:

    mov ax,@data
    mov ds,ax


    mov ah,9
    lea dx,SA
    int 21h

    call IntegerIn
    mov A,ax


    mov ah,9
    lea dx,SB
    int 21h

    call IntegerIn
    mov B,ax


    mov ah,9
    lea dx,SH
    int 21h

    call IntegerIn
    mov H,ax


    mov ax,A
    push ax

    mov ax,B
    push ax

    mov ax,H
    push ax

    call Volume

    mov V,ax


    mov ah,9
    lea dx,SV
    int 21h

    mov ax,V
    call IntegerOut



    mov ax,4C00h
    int 21h

end Begin










#include <iostream>
using namespace std;

int Volume(int a, int b, int h)
{
    return a * b * h;
}

int main()
{
    int A, B, H, V;

    cout << "Input length: ";
    cin >> A;

    cout << "Input width: ";
    cin >> B;

    cout << "Input height: ";
    cin >> H;

    V = Volume(A, B, H);

    cout << "Volume = " << V;

    return 0;
}