Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Nachnem_zhe_razbor_sey.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
1.69 Mб
Скачать

Начнем же разбор сей «ужасной программы»

Задание: создать массив из 10 двухбайтных чисел и найти среднее значение.

Первый абзац:

masm ;режим работы TASM

model small

stack 256 ;выделение памяти для стэка

  1. Первая строчка

Существует несколько видов ассемблера, какие-то работают под виндой, какие-то под досом, какие-то предназначенны для конкретного процессора.

У нас на лабораторных мы работаем в программе TASM, которая имеет несколько режимов работы.

Таким образом первая строчка становится более менее понятной:

masm ;режим работы TASM

  1. Вторая строчка – я не разбирался

  1. Поговорим о стеке

Иначае говоря, СТЕК – это такая хрень, в которую мы можем последовательно записывать что угодно. Если на примере, стек это книжный шкаф, на полку которого, мы последовательно составляем книги. Номер полки шкафа хранит регистр SS, номер книги на этой полке хранит регистр SP. ВСЕ

Теперь о там на какой ХЕР он сдался нам???

Когда у нас работает программа нам необходимо вводить числа с клавиатуры и выводить результаты на экран. Для этого используются так называемые прерывания. Получается, что в какой-то момент процессор останавливает свою работу и ждет ввода чисел с клавиатуры. Перед тем как это все происходит он записывает в СТЕК, грубо говоря, номер строчки программы, для того чтобы потом знать куда вернуться и продолжить выполнение программы. Помимо номера строчки в стек заносится еще что-то, но пока что не суть.

Таким образом третья строчка, становится более менее понятной:

stack 256 ;выделение памяти для стэка

  1. Второй абзац

.data ;начало сегмента данных

input db 40 dup(0)

middle1 db 40 dup(0)

output db 4 dup(0)

middle2 dw 10 dup(0)

output3 db 4 dup(0)

x dw 010h

y dw 1 dup (0)

z dw 1 dup (0)

В данной программе мы используем память (для хранения чисел), поэтому есть два сегмента: 1) Сегмент кода, в котором прописана программа; 2) Сегмент данных, в котором говорится, сколько места занимает каждая переменная и чему каждая из них равна.

В данной программе мы используем два размера переменных:

- db – это значит 1 байт (8 бит)

- dw – это значит «слово» из 2 соседних байт (8+8=16 бит)

В программе мы можем либо называть каждую переменную по-своему (a, b, c, d, x, y, z, …), либо можем создавать массив (input[1], input[2], input[3] ….).

Разберем абзац:

input db 40 dup(0) ; значит мы выделяем в памяти 40 байт, каждый из которых приравнивается НУЛЮ и называем этот массив INPUT (для входных данных)

middle1 db 40 dup(0) ;создаем массив из 40 байт, приравниваем их к 0, и называем масиив MIDDLE (на рус. Средний)

output db 4 dup(0) ; 4 нулевых байта с именем OUTPUT (для выходного числа)

middle2 dw 10 dup(0) ;Создаем 10 нулевых слов с именем массива MIDDLE2

x dw 010h; Создаем слово Х, равное 00 01 в шестандцатеричном виде (h на конце).

далее аналогично…

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]