
- •Л Составитель: преп.Каф.ИнформатикиАркабаев Нуркасым Кылычбековичабораторная работа №1 Начало работы на языке ассемблера
- •Теоретическая часть
- •Int 21h
- •Int 21h
- •Задание
- •Контрольные вопросы.
- •Лабораторная работа №2 д Составитель: преп.Каф.ИнформатикиАркабаев Нуркасым Кылычбековичирективы языка ассемблера
- •Теоретическая часть
- •Задания (2 часа)
- •Int 21h
- •Int 21h
- •Контрольные вопросы
- •Лабораторная работа №3 к Составитель: преп.Каф.ИнформатикиАркабаев Нуркасым Кылычбековичоманды пересылки данных. Стек.
- •Теоретическая часть
- •Команды пересылки данных
- •Задание
- •Контрольные вопросы:
- •Лабораторная работа №4 а Составитель: преп.Каф.ИнформатикиАркабаев Нуркасым Кылычбековичрифметические операции. Битовые команды.
- •Теоретическая часть
- •Битовые команды
- •Задание
- •X dw ?
- •Int 21h
- •Int 21h
- •Контрольные вопросы:
- •Теоретическая часть
- •Задание
- •1. Предварительная подготовка
- •2 Порядок выполнения работы на эвм
- •Контрольные вопросы:
- •С Составитель: преп.Каф.ИнформатикиАркабаев Нуркасым Кылычбековичтроковые функции и массивы (4 часа).
- •Теоретическая часть Строковые инструкции
- •Инициализация массивов
- •Задание
- •Контрольные вопросы:
- •Лабораторная работа №7 п Составитель: преп.Каф.ИнформатикиАркабаев Нуркасым Кылычбековичроцедуры.
- •Теоретическая часть
- •Работа команд ret и retf
- •Задание
- •Программа №7.1
- •Контрольные вопросы
Инициализация массивов
В одной директиве определения данных может указываться несколько значений. Например, директива:
Array DW 0, 1, 2, 3, 4
создает массив из пяти элементов с именем Array, элементы которого имеют размер в слово (Рис. 1). В директивах определения данных можно использовать любое число значений, умещающееся на строке.
Как быть в том случае, если вы хотите определить массив, который слишком велик и не может уместиться на одной строке? Для этого просто нужно добавить несколько строк. Метку в директиве определения данных указывать необязательно. Например, по директивам:
...
SquareArray DD 0, 1, 4, 9, 16
DD 25, 36, 49, 64, 81
DD 100, 121, 144, 169, 196
…
создается массив элементов размером в двойное слово с именем SquareArray, состоящий из квадратов первых 15 целых чисел.
Турбо Ассемблер позволяет вам определить блок памяти, инициализированный указанным значением, с помощью операции DUP. Например:
BlankArray DW 100h DUP (0)
Здесь создается массив BlankArray, состоящий из 255 (десятичное) слов, инициализированных значением 0. Аналогично, директива:
ArrayOfA DB 92 DUP ('A')
создает массив из 92 байт, каждый из которых инициализирован символом A.
Задание
Повторить теоретический материал о строковых операциях по конспекту лекций и литературе.
Прочитайте задание, которое выполняет нижеприведенная программа, напишите эту программу с именем Lab6.asm.
Сделайте исполняемый файл, и проследить за работой в Турбоотладчике.
Перепишите программу в ваш отчет, и заполните комментариями о содержании регистров все строки в сегменте кода.
На основе проделанной работы сделать отчет, внести в него краткие выводы.
;Даны два массива ArrayA, ArrayB,
;состоящие из 10 элементов каждый
;Сравнить эти массивы поэлементно и
; - если элементы равны, то записать в соответствующий элемент
; третьего массива (Difference) 'Y'
; - иначе 'N'
;Найти сумму и количество всех одинаковых и различных
;элементов двух массивов (ArrayA,ArrayB)
.model tiny
.stack 100h
.data
ArrayA db 05,10,06,44,20,32,05,11,46,0
ArrayB db 35,10,15,44,20,02,65,10,46,0
Difference db 10 dup(0)
NumOfDiff dw 0
NumOfEqual dw 0
.code
start:
mov ax,@data
mov ds,ax
push ds
pop es
mov di,offset Difference
mov cx,10
mov al,'Y'
cld
rep stosb
mov si,offset ArrayA
mov di,offset ArrayB
mov bx,offset Difference
mov cx,10
cld
findDE:
cmpsb
jne NotEqual
inc NumOfEqual
inc bx
dec di
dec si
mov al,byte ptr ds:[si]
cbw
add SumOfEqual, ax
mov al,byte ptr ds:[di]
cbw
add SumOfEqual, ax
inc si
inc di
jmp NextElement
NotEqual:
inc NumOfDiff
mov byte ptr ds:[bx],'N'
inc bx
dec di
dec si
mov al,byte ptr ds:[si]
cbw
add SumOfDiff, ax
mov al,byte ptr ds:[di]
cbw
add SumOfDiff, ax
inc si
inc di
NextElement:
loop findDE
mov ax,4c00h
int 21h
end start
Написать свою программу, которая сравнивала бы поэлементно буквы вашего имени и фамилии. В случае разницы размеров дополнить начальными буквами. Имя и фамилию написать заглавными латинскими буквами. Например,
PAVLOVA ANNAANN (имя ANNA дополнена тремя буквами из маго себя ANN)
Подсчитать количество одинаковых и различных элементов, начиная с последнего, в обратном порядке.