Ввод чисел на TASM
Мне необходимо реализовать расчет этого выражения (22/c+3*b)/(36-a*c/3), на ассемблере. С вводом и выводом я немного разобрался, но мне не понятно каким образом производятся вычисления.
.model large
DATA SEGMENT
enterA db 'enter A:$'
enterB db 'enter B:$'
enterC db 'enter C:$'
showchisl db 'Chisl = $'
showznam db 'Znam = $'
showresult db 'Result = $'
otst db '', 0Dh,0Ah,'$'
chisl db ' ','$'
znam db ' ','$'
result db ' ','$'
nameparA label byte
maxlenA db 4
actlenA db ?
namefldA db 4 dup ('$')
nameparB label byte
maxlenB db 4
actlenB db ?
namefldB db 4 dup('$')
nameparC label byte
maxlenC db 4
actlenC db ?
namefldC db 4 dup('$')
DATA ENDS
STK SEGMENT STACK
db 256 dup('')
STK ENDS
CODE SEGMENT
ASSUME CS:CODE, DS:DATA, SS:STK
START:
mov ax,Data
mov DS,AX
lea dx,enterA
mov ah,09
int 21h
lea dx,nameparA
mov ah,0ah
int 21h
lea dx,otst
mov ah,09
int 21h
lea dx,enterB
mov ah,09
int 21h
lea dx,nameparB
mov ah,0ah
int 21h
lea dx,otst
mov ah,09
int 21h
lea dx,enterC
mov ah,09
int 21h
lea dx,nameparC
mov ah,0ah
int 21h
lea dx,otst
mov ah,09
int 21h
;____________CHISCLITEL____________
mov ax,22
idiv namefldC
mov bl,al
mov ax,3
imul namefldB
mov cx,ax
mov al,bl
cbw
add ax,cx
cwd
mov word ptr [chisl],ax
mov word ptr [chisl]+2,dx
lea dx,showchisl
mov ah,09
int 21h
lea dx,chisl
int 21h
lea dx,otst
int 21h
;____________ZNAMENATEL___________
mov bx,36
mov al,namefldC
cbw
mov cl,3
idiv cl
cbw
imul namefldA
sub bx,ax
mov znam,bx
mov dx,word ptr [chisl]+2
mov ax,word ptr [chisl]
lea dx,showznam
mov ah,09
int 21h
lea dx,znam
int 21h
lea dx otst
int 21h
;___________RESULT______________
idiv [znam]
mov [result],ax
lea dx,showresult
int 21h
lea dx,result
int 21h
lea dx,otst
int 21h
mov ah,4ch
int 21h
ret
code ends
end