Ошибка stac segment при решении уравнения - Assembler
Формулировка задачи:
Добрый вечер!!!
выбивает ошибку в 1 строчке "stac segment ", условие задачи :
Написать программу на языке ассемблер, которая решает заданное математическое уравнение.
Уравнение: F=A-B+5
Исходные данные: A=3, B=2
Ответ: F=3-2+5=6
начинаю изучать ассемблер, помогите решить проблему!
stac segment db 64 dup (0) ends data segment A db ? B db ? F db ? stA db 13,10,'Введите A = $' stB db 13,10,'Введите B = $' stX db 13,10,'Решение функции F=A-B+5 $' stF db 13,10,'Результат F = $' stQ db 13,10,'Для выхода нажмите любую клавишу...$' ends code segment assume ds:data, cs:code, ss:stac Start: mov ax,data mov ds,ax mov es,ax ;----------------------------------------- ; Вывод строки 'Введите A =' mov ah,09h lea dx,stA int 21h ; Ввод значения переменной A mov ah,01h int 21h sub al,30h mov A,al ; Вывод строки 'Введите B =' mov ah,09h lea dx,stB int 21h ; Ввод значения переменной B mov ah,01h int 21h sub al,30h mov B,al ; Вывод строки 'Решение функции F=A-B+5' mov ah,09h lea dx,stX int 21h ; Решение уравнения mov al,A sub al,B add al,5 mov F,al ; Вывод строки 'Результат F =' mov ah,09h lea dx,stF int 21h ; Вывод ответа mov ah,02h mov dl,F add dl,30h int 21h ;----------------------------------------- ; Вывод строки 'Для выхода нажмите любую клавишу...$' mov ah,09h lea dx,stQ int 21h ; Ожидание нажатия клавиши mov ah,08h int 21h ; Выход mov ax,4C00h int 21h ends END Start
Решение задачи: «Ошибка stac segment при решении уравнения»
textual
Листинг программы
format MZ ;Исполняемый файл DOS EXE (MZ EXE) entry code_seg:start ;Точка входа в программу stack 200h ;Размер стека ;-------------------------------------------------------------------- segment data_seg ;Cегмент данных hello db 'Hello, asmworld!$' ;Строка ;-------------------------------------------------------------------- segment code_seg ;Сегмент кода start: ;Точка входа в программу mov ax,data_seg ;Инициализация регистра DS mov ds,ax mov ah,09h mov dx,hello ;Вывод строки int 21h mov ax,4C00h int 21h ;Завершение программы
Объяснение кода листинга программы
Список элементов:
- Исполняемый файл DOS EXE (MZ EXE).
- Точка входа в программу.
- Размер стека.
- Сегмент данных.
- Строка
Hello, asmworld!$
. - Сегмент кода.
- Инициализация регистра DS.
- Вывод строки.
- Завершение программы. Когда программа запускается, она начинает выполнение с точки входа в код, которая находится в сегменте code_seg. Первым делом происходит инициализация регистра DS, который используется для доступа к переменным в сегменте данных. Затем в цикле выполняется команда вывода строки на экран с помощью функции BIOS int 21h. После того как строка выведена на экран, программа завершается с помощью команды int 21h с аргументом 4C00h.