Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Laba_2 (1).docx
Скачиваний:
5
Добавлен:
12.09.2019
Размер:
112.84 Кб
Скачать

Задача 3.3:

data segment para 'data' ;Откроем сегмент данных

txt db 'A', 84h, 'B', 84h, 'P', 84h, 'И', 84h, 'Я', 84h, '!', 84h

txt_len=$-txt

data ends ;Откроем сегмент данных

assume CS:code, DS:data ;Определим соответствие сегментных регистров сегментам

stk segment stack para 'stack' ;Откроем сегмент стека

db 256 dup (?) ;Отведем под стек 256 байт

stk ends ;Закроем сегмент стека

code segment para 'code' ;Откроем сегмент команд

begin: mov AX, data ;Настроим DS

mov DS, AX ;на сегмент данных

mov AX, 0B800h ;Сегментный адрес видеобуфера

mov ES, AX ;Инициализируем ES

;Выведем на экран текст

mov DI, 1672 ;Смещение до середины экрана

lea SI, txt ;DS:SI -> txt

cld ;Направление по строчке вперед

mov CX, txt_len/2 ;Столько слов переслать

rep movsw

mov AX, 4C00h ;Функция DOS завершения программы

int 21h ;Вызов функции DOS

code ends ;Закроем сегмент команд

end begin ;Конец текста с точкой входа

Самостоятельная работа

Составить программу по аналогии с примерами, собрать ее и посмотреть в отладчик.

1. Зафиксировать состояния системных регистров и регистров общего назначения на каждом шагу

выполнения программы.

2. Составить программу, которая выполняет пересылку, в зависимости от варианта:

2) КОНСТАНТА- СТЕК-DH-ІМ’Я1, АДРЕСА (ІМ’Я1) -ІМ’Я2

3. Составить программу, которая осуществляет обмен содержимого указанных регистров:

2) CX, SI

тремя способами: с помощью mov, xchg и стека.

Задача 3.4

data segment para 'data' ;Откроем сегмент данных

name1 db 5

name2 dw 8 ;Двухсловная ячейка

data ends ;Откроем сегмент данных

assume CS:code, DS:data ;Определим соответствие сегментных регистров сегментам

stk segment stack para 'stack' ;Откроем сегмент стека

db 256 dup (?) ;Отведем под стек 256 байт

stk ends ;Закроем сегмент стека

code segment para 'code' ;Откроем сегмент команд

begin: mov AX, data ;Настроим DS

mov DS, AX ;на сегмент данных

push 9 ;9 -> в стек

pop CX ;Из стека ->CX

mov name1, word ptr DH ;уточняем размер DH, перемещаем в name1

lea name2, name1 ;помещаем адрес переменной name1 в переменную name2

mov AX, 4C00h ;Функция DOS завершения программы

int 21h ;Вызов функции DOS

code ends ;Закроем сегмент команд

end begin ;Конец текста с точкой входа

Задача 3.5

data segment para 'data' ;Откроем сегмент данных

num1 dw 5

num2 dw 8

data ends ;Откроем сегмент данных

assume CS:code, DS:data ;Определим соответствие сегментных регистров сегментам

stk segment stack para 'stack' ;Откроем сегмент стека

db 256 dup (?) ;Отведем под стек 256 байт

stk ends ;Закроем сегмент стека

code segment para 'code' ;Откроем сегмент команд

begin: mov AX, data ;Настроим DS

mov DS, AX ;на сегмент данных

mov CX, num1 ;присваиваем значение num1 в регистр CX

mov SI, num2 ;присваиваем значение num2 в регистр SI

mov AX, CX ;используем регистр AX в качестве временного хранилища для обмена

mov CX, SI ;CX присваиваем значение SI

mov SI, AX ;SI присваиваем значение AX. обмен произведен.

mov AX, 4C00h ;Функция DOS завершения программы

int 21h ;Вызов функции DOS

code ends ;Закроем сегмент команд

end begin ;Конец текста с точкой входа

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