Где нужно исправить - Assembler
Формулировка задачи:
нужно вывести в asciii 32 символа начиная с '1' с начала строчки в одну строчку. я вроде написала, но выводит не сначала строчки
.model tiny .code org 100h ; Начало COM-файла start: mov ax,0003h int 10h ; Видеорежим 3 (очистка экрана и установка курсора в 0,0) mov dl,0 ; DH и DL будут использоваться для хранения положения mov dh,0 push ax ; Сохранить текущий символ и номер функции mov ah,2 ; Номер видеофункции 2 - изменить положение курсора int 10h ; ; курсора. Начальное положение - 0,0 mov si,32 ; SI будет счетчиком цикла mov al,49 ; Первый символ - с кодом 49h mov ah,9 ; Номер видеофункции "вывод символа с атрибутом" mov cx,1 ; Выводится один символ за раз mov bl,00011111b ; атрибут символа - белый на синем cloop: int 10h ; Вывести символ на экран push ax ; Сохранить текущий символ и номер функции mov ah,2 ; Номер видеофункции 2 - изменить положение курсора inc dl ; Увеличить текущий столбец на 1 int 10h ; Переместить курсор mov ax,0920h ; AH = 09, AL = 20h (ASCII-код пробела) int 10h ; Вывести пробел mov ah,2 ; Номер видеофункции 2 inc dl ; Увеличить столбец на 1 int 10h ; Переместить курсор pop ax ; Восстановить номер функции в ah и текущий символ в al inc al ; Увеличить AL на 1 - следующий символ test al,1Fh ; Если AL не кратен 16, jnz continue_loop ; продолжить цикл, push ax ; иначе сохранить номер функции и текущий символ mov ah,2 ; Номер видеофункции 2 inc dh ; Увеличить номер строки на 1 mov dl,0 ; Столбец = 0 int 10h ; Установить курсор на начало следующей строки pop ax ; Восстановить номер видеофункции и текущий символ continue_loop: dec si ; Уменьшить SI на 1, если он не стал нулем - продолжить jnz cloop ; CX используется внутри цикла, так что нельзя ; использовать команду LOOP для его организации mov ah,0Ch ; Очистка буфера клавиатуры mov al,1 int 21h mov ah,08h ; Приглашение на ввод символа int 21h mov ax,0003h int 10h ; Видеорежим 3 (очистка экрана и установка курсора в 0,0) ret ; Завершение COM-файла end start
Решение задачи: «Где нужно исправить»
textual
Листинг программы
.model tiny .code org 100h ; Начало COM-файла start: xor ax, ax mov es, ax mov cx, ax mov dh, es:[484h] ; rows on screen mov dl, es:[44Ah] ; cols -//- mov ah,6 mov bx, 1F00h int 10h mov dx, cx xchg bh,bl mov ah,2 int 10h mov cx, 32 mov si,0E31h mov dx,0E20h @@: mov ax, si inc si int 10h mov ax, dx int 10h loop @@ xor ax,ax int 16h ret ; Завершение COM-файла end start
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д