Скачиваний:
64
Добавлен:
15.06.2014
Размер:
123.39 Кб
Скачать

15) Ввести две строки. Вывести совпадающие (по позициям и значениям) символы в двух строках.

Опять же, вводим две строки. Далее, записываем первый элемент первой строки в al, первый элемент второй строки вah. Сравниваемah и alмежду собой, если равенство, выводим элемент на экран, если нет, переходим ко второму элементу и так далее пока не встретиться символ конца строки.

.model small

.386

.stack 256h

.data

str_1 db 10,0,10 dup ('$')

str_2 db 10,0,10 dup ('$')

str_3 db 0Ah,'$'

.code

input PROC

mov ah, 0Ah

int 21h

ret

input ENDP

output PROC

mov ah, 09h

int 21h

ret

output ENDP

start:

mov ax, @data

mov ds, ax

lea dx, str_1

call input

lea dx, str_3

call output

lea dx, str_2

call input

lea dx, str_3

call output

mov di,2

above:

xor ax,ax

cmp di, 10

jz exit

mov al, str_1[di]

mov ah, str_2[di]

cmp al, '$'

jz exit

cmp ah, '$'

jz exit

cmp al, ah

jz below

inc di

jmp above

below:

lea dx, str_1[di]

mov ah, 40h

mov cx, 1

int 21h

inc di

jmp above

;-------------------------------------------------

exit:

mov ah, 4ch

int 21h

end start

21) Определить косинус угла

#include "stdafx.h"

#include <iostream> //библиотека ввода-вывода

using namespace std; //объявление пространства имён std для cin.get() и cout

int main(int argc, _TCHAR* argv[])

{

int angle = 60; //угол в градусах

float div = 180; //эта цифра нужна, чтобы перевести градусы в радианы

float cos = 0; //переменная, где будет храниться косинус

//включаем блок встроенного ассемблера

__asm{

finit //приводит сопроцессор в начальное состояние

fild angle //наш угол на вершине стека сопроцессора

fldpi //pi на вершине стека сопроцессора

fmul //pi*угол

fdiv div //pi*угол/180(переводим в радианы)

fcos //cos угла

fstp cos //вытолкнуть в переменную cos содержимое вершины //стека сопроцессора (косинус угла)

}

cout<<cos; //вывод на экран результата

cin.get(); //задержка перед выходом до нажатия любой кнопки

return 0; //завершение программы

}

22) Определить длину окружности

#include "stdafx.h"

#include <iostream>

using namespace std;

int main(int argc, _TCHAR* argv[])

{

float radius = 1;

float two = 2;

float lngth = 0;

__asm{

finit //приводит сопроцессор в начальное состояние

fld radius //на вершине стека сопроцессора радиус

fmul two //радиус * 2

fldpi //на вершине стека сопроцессора число пи

fmul //умножить радиус умноженный на 2, на пи

fst lngth1 //вытолкнуть в переменную lngth содержимое вершины стека сопроцессора (радиус*2*пи)

}

cout<<lngth;

cin.get();

return 0;

}

23) Определить длину гипотенузы по двум катетам

#include "stdafx.h"

#include <iostream>

using namespace std;

int main(int argc, _TCHAR* argv[])

{

float cath_1 = 5;

float cath_2 = 3;

float hypo = 0;

__asm{

finit //приводит сопроцессор в начальное состояние

fld cath_1 //на вершине теперь первый катет

fmul st(0),st(0) //квадрат первого катета

fld cath_2//теперь в ST(0) второй катет, а квадрат первого в ST(1)

fmul st(0),st(0) //квадрат второго

fadd //складываем ST(0) и ST(1). Результат в ST(0) будет

fsqrt //берём корень из ST(0)

fst hypo //сохраняем результат в переменную

}

cout << hypo;

cin.get();

return 0;

}

Соседние файлы в папке asma