Программа запускается, но не выполняет никаких действий - Assembler
Формулировка задачи:
есть текст программы набранный с ученика (проверял его правильность неоднократно). Что программа делает я понимаю. после получения com файла ,запускаю его в командной строке, программа запускается предлагает мне нажать клавишу и завершается. до этого была такая же проблема, но после нескольких перенаборов проблема решилась. пользуюсь masm32 запустил на нём уже около 10 программ, а тут застрял. вот текст программы:
cseg segment assume cs:cseg, ds:cseg, es:cseg, ss:cseg org 100h start: mov ax,0b800h mov es,ax mov ah,31 mov al,1 mov cx,254 next_screen: mov di,0 call face inc al loop next_screen mov ah,10h int 16h int 20h face proc mov dx,cx mov cx,2000 cycle_face: mov es:[di],ax add di,2 loop cycle_face mov cx,dx ret face endp cseg ends end start
Решение задачи: «Программа запускается, но не выполняет никаких действий»
textual
Листинг программы
; masm dos com # .286 .model tiny .code org 100h start: mov ax,3; установим 3 текстовый видеорежим int 10h les di,x; es=0B800h di=0 mov ax,2F01h;ah=31 al=1 mov dx,25; число столбцов в режиме 3 (80х25) next_screen:call face;выводим строку символов inc ax; следующий символ dec dx; последняя строка экрана? jnz next_screen mov ah,0;ждем нажатия на клавиатуру int 16h ret; выход из программы face proc mov cx,80; число строк в режиме 3 (80х25) rep stosw ;mov es:[di],ax add di,2 ret face endp x dd 0b8000000h end start
Объяснение кода листинга программы
- Установка текстового видеорежима 3: mov ax,3 int 10h
- Установка начального адреса видеопамяти: les di,x mov ax,2F01h mov dx,25
- Вывод строки символов на экран: call face
- Увеличение индекса строки на 1: inc ax
- Уменьшение количества столбцов на 1: dec dx
- Проверка на условие: jnz next_screen
- Ожидание нажатия на клавиатуру: mov ah,0 int 16h
- Выход из программы: ret
- Определение процедуры вывода строки символов: face proc
- Указание числа строк в режиме 3: mov cx,80
- Вывод строки символов в видеопамять: rep stosw
- Возврат из процедуры вывода строки символов: ret
- Объявление переменной x: x dd 0b8000000h
- Конец программы: end start
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д