Наименьшее и наибольшее из чисел - Assembler

Узнай цену своей работы

Формулировка задачи:

Не могли бы помочь перевести в ассемблер данный код Даны три числа. Вывести вначале наименьшее, а затем наибольшее из данных чисел. Помогите решать пожалуйста.
var
c,b,a:integer;
begin
Writeln('Введите первое целое число A=');
readln(a);
Writeln('Введите второе целое число B=');
readln(b);
Writeln('Введите второе целое число C=');
readln(c);
if (A>C)and(A>B) then
begin
if Bthen Writeln(' наименьшее из данных чисел B =',inttostr(B))
else Writeln(' наименьшее из данных чисел C =',inttostr(C));
Writeln(' наибольшее из данных чисел A =',inttostr(a));
end;
if (B>C)and(B>A) then
begin
if Athen Writeln(' наименьшее из данных чисел A =',inttostr(A))
else Writeln(' наименьшее из данных чисел C =',inttostr(C));
Writeln(' наибольшее из данных чисел B =',inttostr(B));
end;
if (C>A)and(C>B) then
begin
if Athen Writeln(' наименьшее из данных чисел A =',inttostr(A))
else Writeln(' наименьшее из данных чисел C =',inttostr(C));
Writeln(' наибольшее из данных чисел B =',inttostr(B));
end;
end.

Решение задачи: «Наименьшее и наибольшее из чисел»

textual
Листинг программы
;FASM, сохранять в cp866
format  PE console 4.0
include 'win32a.inc'
    cinvoke printf, tps, msg0   ; выводим приглашение
    cinvoke scanf, tpi, A       ; вводим A
    cmp eax, 1          ; верный ввод?
    jnz gtfo            ; нет, отваливаем
    inc byte [AB]
    cinvoke printf, tps, msg0   ; выводим приглашение
    cinvoke scanf, tpi, B       ; вводим B
    cmp eax, 1          ; верный ввод?
    jnz gtfo            ; нет, отваливаем
    inc byte [AB]
    cinvoke printf, tps, msg0   ; выводим приглашение
    cinvoke scanf, tpi, C       ; вводим C
    cmp eax, 1          ; верный ввод?
    jnz gtfo            ; нет, отваливаем
    mov eax, [A]
    cmp eax, [B]
    cmovg   eax, [B]
    cmp eax, [C]
    cmovg   eax, [C]
    mov ebx, [A]
    cmp ebx, [B]
    cmovl   ebx, [B]
    cmp ebx, [C]
    cmovl   ebx, [C]
    cinvoke printf, msg1, eax, ebx  ; выводим на экран
    invoke  fflush, 0       ; актуализируем буфферизованный вывод
    invoke  _getch          ; any key
gtfo:   invoke  exit, 0         ; выход
A:  dd  ?
B:  dd  ?
C:  dd  ?
msg0:   db  'Введите число A=',0
AB  =   $-3
msg1:   db  'Min=%d, Max=%d', 0
tpi db  '%i',0
tps db  '%s',0
 
data import
library msvcrt,'msvcrt.dll'
 
import  msvcrt,\
    printf,'printf',\
    scanf,'scanf',\
    fflush,'fflush',\
    _getch,'_getch',\
    exit,'exit'
end data

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 4.1 из 5
Похожие ответы