îÁÒÏÄ, ÐÙÔÁÀÓØ ÎÁÐÉÓÁÔØ ×ÎÅÛÎÀÀ ÐÒÏÃÅÄÕÒÕ Assembler, ×ÙÚÙ×ÁÅÍÕÀÀ ÉÚ óÉ.
åÓÔØ ÔÁËÏÊ ÕÐÒÏÛÅÎÎÙÊ ËÏÄ ÐÒÏÃÅÄÕÒÙ:
==================================
MASM
..386
..MODEL SMALL
..CODE
PUBLIC _diving
_diving PROC WINDOWS C
ARG a:BYTE, b:BYTE, c:BYTE, d:BYTE RETURNS sum
USES BX, CX, DX, SP, DS, SS, BP
LOCAL sum:WORD
MOV AX, 10h
MOV sum, AX
RET
_diving endp
END
==================================
É ×ÙÚÙ×ÁÀÝÅÊ ÜÔÕ ÐÒÏÃÅÄÕÒÕ óÉ-ÐÒÏÇÒÁÍÍÙ:
==================================
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <bios.h>
void proverka(short int *b, float min, float max);
extern int diving(short int a, short int b, short int c, short int d);
main()
{
short int a,b,c,d;
do
{
a=b=c=d=0;
textcolor(10);
textbackground(1);
clrscr();
printf("Vvedite a,b,c,d ot -128 do 127:\n");
proverka(&a, -128, 127);
proverka(&b, -128, 127);
proverka(&c, -128, 127);
proverka(&d, -128, 127);
printf("Result: %d",diving(a, b, c, d));
printf("\nVihod - ESC...");
} while (bioskey(0)!=283);
return 0;
}
void proverka(short int *b, float min, float max)
{
char s[10];
signed int a=0;
while (a==0)
{
scanf("%s",&s);
a=atoi(s);
if ((a < min) || (a > max))
a=0;
if ( a == 0 )
printf("Oshibka vvoda! Povtorite...\n");
else
*b=a;
}
}
===========================
ïÔÔÒÁÎÓÌÉÒÏ×ÁÌ ÜÔÏ ×ÓÅ × 2 *.obj ÆÁÊÌÁ, ÐÙÔÁÀÓØ ÓÌÉÎËÏ×ÁÔØ Ó ÐÏÍÏÛØÀ ËÏÍÁÎÄÙ
tcc.exe asm-lab.obj l8.obj
É ÎÉÞÅÇÏ ÎÅ ×ÙÈÏÄÉÔ. ðÉÛÅÔ:
Turbo C Version 2.0 Copyright (c) 1987, 1988 Borland International
Turbo Link Version 2.0 Copyright (c) 1987, 1988 Borland International
Undefined symbol '_diving' in module ASM-LAB.C
Available memory 413320
÷ÎÉÍÁÎÉÅ ×ÏÐÒÏÓ: ÷ ÞÅÍ Ñ ÔÏÒÍÏÖÕ?
ðÏÄÓËÁÖÉÔÅ ÐÌÚ...