Выполнение файлов com и exe. ASM 8086 - Assembler
Формулировка задачи:
У меня проблема. Даже в простых программах вычисляющих сумму или разность 2 чисел, записанных в сегменте dana (не вводимых с консоли) я не могу вывести и проверить результат даже имея эмулятор EMU8086.
При запуске com как из Windows так и в командной строке окошко захлопывается. Вот код
Сообщения str1,str2,str3 просто не выводятся. Компиляция нормальная
.model tiny .code org 100h .data str1 DB 'Press F1! $' str2 DB 'You have press F1!$' str3 DB 'Sucker!!!$' start: mov ax,@data mov ds,ax lol: lea dx,str1 mov ah,09h int 21h mov ah,01h int 21h test al,al jz lol cmp al,3Bh je yo jmp a1 yo: lea dx,str2 mov ah,09h int 21h xor ah,ah int 16h a1: lea dx,str3 mov ah,09h int 21h xor ah,ah int 16h exit: mov ah,04Ch mov al,01h int 21h end start
Решение задачи: «Выполнение файлов com и exe. ASM 8086»
textual
Листинг программы
.model tiny .code org 100h start: ;mov ax,@data ;mov ds,ax lol: lea dx,str1 mov ah,09h int 21h mov ah,01h int 21h test al,al jz lol cmp al,3Bh je yo jmp a1 yo: lea dx,str2 mov ah,09h int 21h xor ah,ah int 16h a1: lea dx,str3 mov ah,09h int 21h xor ah,ah int 16h exit: mov ah,04Ch mov al,01h int 21h .data str1 DB 'Press F1! $' str2 DB 'You have press F1!$' str3 DB 'Sucker!!!$' end start
Объяснение кода листинга программы
- Установка модели памяти на
tiny
и кодирование на языке ассемблера 8086. - Определение точки входа в программу - метки
start
. - Загрузка сегмента данных в регистр DS перед выполнением операций с переменными.
- Установка цикла, который будет выполняться до тех пор, пока значение переменной
al
не станет равным 0. - Вывод на экран строки
Press F1!
с использованием функции 09h. - Проверка значения переменной
al
на равенство 3Bh (это символ F1 в кодировке MSDOS). - Если условие выполняется, то происходит переход к метке
yo
. - Если условие не выполняется, то происходит переход к метке
a1
. - В обоих случаях после выполнения цикла происходит очистка регистра AH и выполнение функции 16h (вывод строки в консоль).
- После выполнения всех операций происходит выход из программы с помощью функции 04Ch и передачей в нее значения 01h.
- Определение трех строк для вывода на экран в сегменте данных.
- Вывод на экран первой строки
Press F1!
с использованием функции 09h. - Вывод на экран второй строки
You have press F1!
с использованием функции 09h. - Вывод на экран третьей строки
Sucker!!!
с использованием функции 09h.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д