Ошибка 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                     ;Завершение программы

Объяснение кода листинга программы

Список элементов:

  1. Исполняемый файл DOS EXE (MZ EXE).
  2. Точка входа в программу.
  3. Размер стека.
  4. Сегмент данных.
  5. Строка Hello, asmworld!$.
  6. Сегмент кода.
  7. Инициализация регистра DS.
  8. Вывод строки.
  9. Завершение программы. Когда программа запускается, она начинает выполнение с точки входа в код, которая находится в сегменте code_seg. Первым делом происходит инициализация регистра DS, который используется для доступа к переменным в сегменте данных. Затем в цикле выполняется команда вывода строки на экран с помощью функции BIOS int 21h. После того как строка выведена на экран, программа завершается с помощью команды int 21h с аргументом 4C00h.

Оцени полезность:

11   голосов , оценка 4.091 из 5
Похожие ответы