Сообщение "terminated, exit code 2" при запуске программы в TD - Assembler

Узнай цену своей работы

Формулировка задачи:

когда запускаю TD выбивает terminated , exit code 2
.model small
.stack 100h
.data
TWO equ 2
VECTOR dw 1, 5, 7, 2, 4, 3, 6, 9, 10, 8
.code
.startup
lea bx, VECTOR
mov ax, [bx]+8
mov dx, TWO
Xchg ax, dx
 
mov ah, 4ch
int 21h
end

Решение задачи: «Сообщение "terminated, exit code 2" при запуске программы в TD»

textual
Листинг программы
.model small
.stack 100h
.data
TWO equ 2
VECTOR db 1, 5, 7, 2, 4, 3, 6, 9, 10, 8
.code
startup:
mov ax,@data           ;в сегментный регистр DS
mov ds,ax              ;помещается адрес сегмента данных
mov bx, offset VECTOR  ;загружаем в bx адрес VECTOR
mov ax, [bx]+8         ;загружаем девятый элемент массива (число 10)
                       ;AH - смещение, AL - значение
mov dx, TWO            ;загружаем в dx значение константы TWO
xchg ax, dx            ;меняем местами регистры ax и dx
 
mov ax, 4c00h          ;выход
int 21h
end startup

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

Выполнение кода:

  1. .model small — Эта инструкция устанавливает модель памяти, используемую в программе. В данном случае используется модель small, что означает, что сегменты данных и кода имеют по 64 КБ.
  2. .stack 100h — Эта инструкция устанавливает стек размером в 100 байт.
  3. .data — Эта инструкция определяет сегмент данных.
  4. TWO equ 2 - Эта инструкция определяет константу TWO со значением 2.
  5. VECTOR db 1, 5, 7, 2, 4, 3, 6, 9, 10, 8 - Эта инструкция определяет массив VECTOR, содержащий числа от 1 до 10.
  6. .code — Эта инструкция определяет сегмент кода.
  7. startup: — Эта инструкция определяет точку входа в программу.
  8. mov ax,@data — Эта инструкция загружает в регистр AX адрес сегмента данных.
  9. mov ds,ax — Эта инструкция присваивает сегменту данных значение из регистра AX.
  10. mov bx, offset VECTOR — Эта инструкция загружает в регистр BX адрес массива VECTOR.
  11. mov ax, [bx]+8 - Эта инструкция загружает в регистр AX девятый элемент массива VECTOR, то есть число 10.
  12. mov dx, TWO — Эта инструкция загружает в регистр DX значение константы TWO.
  13. xchg ax, dx — Эта инструкция меняет местами значения в регистрах AX и DX.
  14. mov ax, 4c00h — Эта инструкция устанавливает значение в регистре AX равным 4C00H.
  15. int 21h — Эта инструкция вызывает функцию 21, которая завершает работу программы и возвращает в DOS.
  16. end startup — Эта инструкция указывает на конец программы.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

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

6   голосов , оценка 3.667 из 5