Задача 3.6
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
xchg CX,SI ;используем директиву для обмена значениями между регистрами CX и SI
mov AX, 4C00h ;Функция DOS завершения программы
int 21h ;Вызов функции DOS
code ends ;Закроем сегмент команд
end begin ;Конец текста с точкой входа
Задача 3.7
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
push CX ;помещаем CX в стек
push SI ;помещаем SI в стек
pop CX ;помещаем из стека в регистр CX
pop SI ;помещаем из стека в регистр SI
mov AX, 4C00h ;Функция DOS завершения программы
int 21h ;Вызов функции DOS
code ends ;Закроем сегмент команд
end begin ;Конец текста с точкой входа
Вывод: в ходе выполнения лабораторной работы я научилась пересылать данные между регистрами, сегментными регистрами и стеком различными способами с помощью команд mov, xchg, push и pop.