Выводы.
В результате работы были разобраны некоторые базовые концепции языка асемблера. Были удачно транслированы и собраны тестовые программы, разобран принцип их работ, произведена пошаговая отладка с занесением результатов в таблицу.
Приложение 1
HELLO1.ASM
; HELLO1.ASM - упрощенная версия учебной программы лаб.раб. N1
; по дисциплине "Архитектура компьютера"
; *****************************************************************
; Назначение: Программа формирует и выводит на экран приветствие
; пользователя с помощью функции ДОС "Вывод строки"
; (номер 09 прерывание 21h), которая:
; - обеспечивает вывод на экран строки символов,
; заканчивающейся знаком "$";
; - требует задания в регистре ah номера функции=09h,
; а в регистре dx - смещения адреса выводимой
; строки;
; - использует регистр ax и не сохраняет его
; содержимое.
; ******************************************************************
DOSSEG ; Задание сегментов под ДОС
.MODEL SMALL ; Модель памяти-SMALL(Малая)
.STACK 100h ; Отвести под Стек 256 байт
.DATA ; Начало сегмента данных
Greeting LABEL BYTE ; Текст приветствия
DB 'Ларин Антон 8383',13,10,'$'
.CODE ; Начало сегмента кода
mov ax, @data ; Загрузка в DS адреса начала
mov ds, ax ; сегмента данных
mov dx, OFFSET Greeting ; Загрузка в dx смещения
; адреса текста приветствия
DisplayGreeting:
mov ah, 9 ; # функции ДОС печати строки
int 21h ; вывод на экран приветствия
mov ah, 4ch ; # функции ДОС завершения программы
int 21h ; завершение программы и выход в ДОС
END
Приложение 2
HELLO2.ASM
; HELLO2 - Учебная программа N2 лаб.раб.#1 по дисциплине "Архитектура компьютера"
; дштл Программа использует процедуру для печати строки
;
; ТЕКСТ ПРОГРАММЫ
EOFLine EQU '$' ; Определение символьной константы
; "Конец строки"
; Стек программы
AStack SEGMENT STACK
DW 12 DUP(?) ; Отводится 12 слов памяти
AStack ENDS
; Данные программы
DATA SEGMENT
; Директивы описания данных
HELLO DB 'Кто здесь?', 0AH, 0DH,EOFLine
GREETING DB 'Ларин Антон 8383$'
DATA ENDS
; Код программы
CODE SEGMENT
ASSUME CS:Code ;DS:DATA SS:STACKSS
; Процедура печати строки
WriteMsg PROC NEAR
mov AH,9
ret
WriteMsg ENDP
; Головная процедура
Main PROC FAR
push DS ;\ Сохранение адреса начала PSP в стеке
sub AX,AX ; > для последующего восстановления по
push AX ;/ команде ret, завершающей процедуру.
mov AX,DATA ; Загрузка сегментного
mov DS,AX ; регистра данных.
mov DX, OFFSET HELLO ; Вывод на экран первой
call WriteMsg ; строки приветствия.
mov DX, OFFSET GREETING ; Вывод на экран второй
call WriteMsg ; строки приветствия.
ret ; Выход в DOS по команде,
; находящейся в 1-ом слове PSP.
Main ENDP
CODE ENDS
END Main