Вторник, 26.11.2024, 15:09
Приветствую Вас Гость | RSS
Главная | | Регистрация | Вход
Меню сайта
Форма входа
Поиск
Календарь
«  Март 2012  »
ПнВтСрЧтПтСбВс
   1234
567891011
12131415161718
19202122232425
262728293031
Архив записей
Наш опрос
Оцените мой сайт
Всего ответов: 20
Мини-чат
Друзья сайта
  • Заказ Художник
  • Рыбалка
  • Новости
  • Наш университет io-96
  • Железо и другие
  • Наш Counter-Strike
  • Google ot Turbokherson
  • Google ot Turbokherson87
  • Android
  • Программы и Софт
  • Программирование
  • Лечение здоровья
  • О Ремонт компьютер
  • Наш сайт Turbokherson
  • Программирование ICQ 378204653 от Turbokherson
    Главная » 2012 » Март » 30 » Ассемблер работа с файлами. Запись в файл
    01:46
    Ассемблер работа с файлами. Запись в файл

    Написать программу с записью данных в файл. Проанализировать 2 массива, которые состоят из 15  элементов каждый. Подсчитать количество элементов первого массива, которые имеют равные значения во втором массиве. Вывести соответствующие сообщения.

    Текст программы:

    .386                   ; директива определения типа микропроцессора
    .model  flat, stdcall                    ; задание линейной модели памяти
    ; но соглашения ОС Windows
    option casemap:none          ; отличие малых и больших букв
    include    \masm32\include\windows.inc
    include    \masm32\include\kernel32.inc
    includelib \masm32\lib\user32.lib
    includelib \masm32\lib\kernel32.lib
    BSIZE  equ 42          ; количество байтов, которые записываются в файл
    .data               ; директива определения данные
    fName   BYTE "лабораторная по файлам",0   
    fHandle DWORD ? ; резервирование у памяти 32-разрядной
    cWritten  DWORD  ? ; резервирование 32-разрядного амбарчика памяти
    ; с именем cWritten для адреса символов выведения
    st1 db 'Количество одинаковых чисел в массиве = ',0
    st1_kol = $ - st1
    st2 db 50 dup(0)
    stemp2 db 2 dup(0),0
    ifmt db "%d ",0
    masivA db 1,6,4,6,9,15,21,2,51,8,12,3,13
    masivB db 1,5,4,43,13,4,65,9,7,21,32,23,15,51,66
    temp db 15
    prom db 0

    .code                                ; директива начала сегмента-данных
    start:                ; метка начала программы с именем start

    mov eax,0
    mov ebx,0

    lea esi, masivA

    M1:
    mov eax,0
    mov al, byte ptr[esi]
    lea edi, masivB
    dec temp
    jz _end
    inc esi
    mov ecx,15
    Temp1:
    mov bl, byte ptr[edi]
    inc edi
    cmp eax,ebx
    jz M3

    M2:       
    loop Temp1
    jmp M1

    M3:
    inc prom
    jmp M1

    _end:
    lea edi, st2
    lea esi, st1
    mov ecx,st1_kol

    _m1:
    mov al[esi]
    mov [edi],al
    inc esi
    inc edi
    loop _m1
    mov eax,0
    mov al,prom

             invoke  wsprintf \         ; АПИ-ФУНКЦИЯ преобразования числа
    ADDR stemp2 \  ; адрес буфф., куда будет записан помет. символов
    ADDR ifmt \                     ; адрес строки преобразования формата
    eax                    ; регистр, содержание которого преобразовывается
    lea esi, stemp2
    mov ecx,2
    dec edi
    z1:
    mov al[esi]
    mov [edi],al
    inc edi
    inc esi
    loop z1

    invoke CreateFile, ADDR fName ; адрес имени файла с символами
    GENERIC_WRITE,\                ; запись в файл
    0, NULL  ; параметры многозадачности
    CREATE_ALWAYS                  ; уничтожить и создать новый файл
    FILE_ATTRIBUTE_ARCHIVE, 0
    mov   fHandle, eax        ; запоминание дескриптора устройства
    invoke  WriteFile, fHandle    ; дескриптор устройства
    ADDR st2        ; адрес области памяти, которая хранит символы
    BSIZE      ; количество символов
    ADDR cWritten         ; адрес памяти, где сохраняется число
    NULL      ; записанных в файл символ_в
    invoke  CloseHandle, fHandle           ; дескриптор файла
    invoke  ExitProcess, 0              ; возвращение управления ОС Windows
    end start                       ; директива окончания программы с именем start

    Результат работы программы:



    http://life-prog.ru/view_zam.php?id=44&cat=3&page=1
    Просмотров: 1563 | Добавил: Turbokherson | Рейтинг: 0.0/0
    Всего комментариев: 0
    Имя *:
    Email *:
    Код *:
    Создать бесплатный сайт с uCozCopyright MyCorp © 2024