Answer the question
In order to leave comments, you need to log in
Why do other memory models not work in this code (only the flat memory model works)?
Hello
I am writing a program on tasm
.model flat, C; 1 segm
; сегмент данных
.data
count DW 2, 0
; сегмент кода
.code
laba proc C, source:qword, result:qword
mov ecx, dword ptr [result]
;загружаем адрес переменной result
FLD qword PTR [ecx] ;загружаем значение переменной result, используя ее адрес
;загружаем адрес переменной source
FLD source ;загружаем значение переменной source, используя ее адрес
FLD1 ; загружет 1 в ст0
FADD ST[0],ST[1]; 1+a
FSQRT
FSTP ST[2]; rezultat v st2
FLD1;
FSUB ST[0],ST[1]
FSQRT
FST ST[1]
FLD ST[2]
FPATAN;вычисляет арктангенс, принимает 2 переменнве ст 0 и ст1
FIMUL count
FSTP qword PTR [ecx]; ;заносим результат (ST[0]) в переменную result и выталкиваем значение из регистра ST[0]
RET ;выходим из подпрограммы
laba endp
end
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
extern "C"
{
void laba(double a, double &b);
}
void main()
{
double a = 0;
double b = 0;
scanf("%lf", &a);
laba(a, b);
printf("%.10lf\n", b);
}
Answer the question
In order to leave comments, you need to log in
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question