Загрузка данных


TITLE LAB2_4 KORNEEV
; Лаба 2, Задание 2
; Студент: Корнеев
; Данные: 18.12.2006, оценки 4 и 5, возраст 19

.model small
.stack 512

.data
den DB 18
qwer DW 4321h
mes DW 12
Mas_1 DB 12 dup(19)
Mas_2 DW 20 dup(?)
stroka DB 'Korneev', '$'

.code
start:
; настраиваем сегмент данных
mov ax, @data
mov ds, ax      ; особый случай mov: напрямую в сегментный регистр число писать нельзя, только через ax

; год в di
mov di, 07D6h

; грузим переменные в регистры
mov al, den
mov cx, mes
mov ax, mes
mov es, ax      ; тут тоже особый случай mov: из памяти в es сразу не закинуть, делаем через регистр

; закидываем в стек den и mes
xor ah, ah      ; обнуляем ah, чтобы протолкнуть байт den как слово (стек ест только по 16 бит)
mov al, den
push ax
mov ax, mes
push ax

; меняем qwer и mes местами
mov ax, qwer    ; особенность mov: нельзя гонять данные из памяти в память, берем ax как посредник
xchg ax, mes
mov qwer, ax

; адрес den в si
lea si, den

; копируем ds в es через стек (напрямую mov es, ds нельзя)
push ds
pop es

; достаем из стека в обратном порядке (LIFO)
pop dx          ; сюда падает mes
pop cx          ; сюда падает den

; вывод фамилии
mov ah, 09h
lea dx, stroka
int 21h

; выход в DOS
mov ax, 4c00h
int 21h

end start