Обработка массивов данных. Интерфейс с языками высокого уровня

Страницы работы

Содержание работы

Новосибирский государственный технический университет

Кафедра автоматики

Лабораторная работа №2

по дисциплине «Программирование»

ОБРАБОТКА МАССИВОВ  ДАННЫХ.  ИНТЕРФЕЙС С  ЯЗЫКАМИ ВЫСОКОГО УРОВНЯ.


Вариант: 3

Группа: АА-86

Студенты: Земцов Н.

                    Касьянова А.

                    Сапрыкин О.

Преподаватель: Ханин А.Г.



Новосибирск

2009



1. Цель работы

Ознакомиться с методами адресации и командами передачи уп­равления, ознакомиться с правилами оформления ассемблерных про­цедур, вызываемых из Си-программ.

2. Задания к лабораторной работе. Исходные данные:

1. Определить длины строк

2. В  конец  первой  строки  дописать первые n символов из второй строки

3. Поменять местами второй и четвертый байты второй строки

4. Вернуть в вызывающую программу длину второй строки.


3. Листинг

C.C:

#include <stdio.h>

#include <dos.h>

extern int func(char *str1, char *str2, int num);

int main()

{

  char st1[100], st2[100];

  int num, n;

  printf("\nFirst string: ");

  scanf("%s" ,st1);

  printf("\nSecond string: ");

  scanf("%s", st2);

  printf("\nNumber: ");

  scanf("%d", &n);

  num=func(st1, st2, n);

  printf("\nFirst string: %s", st1);

  printf("\nSecond string: %s", st2);

  printf("\nLength of second string: %d", num);

}
asm.asm:

.MODEL SMALL, C

.STACK 4096

.CODE

PUBLIC func

func proc near c str1: word, str2: word, n: word

local len1: word, len2: word

            xor bx, bx

            mov si, str1

FindLen1:

            cmp byte ptr [si+bx], 0

            jz br01

            inc bx

            jmp short FindLen1

br01:

mov len1, bx

xor bx, bx

 mov di, str2

FindLen2:

        cmp byte ptr [di+bx], 0

        jz br02

        inc bx

        jmp short FindLen2

br02:

        mov len2, bx

        mov dx, n       

Exchange:

            mov al, [si]

            test al, al

            jz EndExchange

            mov ah, [di]

            test ah, ah

            jz EndExchange

            xor bx, bx

            mov bx, len1

            mov [si+bx], ah

            inc si

            inc di

        dec dx

            jnz Exchange

            xor ax, ax

            mov [si+bx], ax

EndExchange:

        mov di, str2

            mov ax, [di+1]

            mov dx, [di+3]

            xchg al, dl

            mov [di+1], ax

            mov [di+3],dx

            mov ax, len2

        ret

func endp

end


4. Пример работы программы

5. Вывод

Мы ознакомились с методами адресации и командами передачи уп­равления и с правилами оформления ассемблерных про­цедур, вызываемых из Си-программ.

Похожие материалы

Информация о работе

Тип:
Отчеты по лабораторным работам
Размер файла:
35 Kb
Скачали:
0