Таблица ASCII, объясните пожалуйста код, если можно то по строчкам - Assembler
Формулировка задачи:
.model tiny .code org 100h start: mov ax, 0003h int 10h mov dx, 0 mov si, 256 mov al,0 mov ah, 9 mov cx, 1 mov bl,01110001b cloop:int 10h push ax mov ah,2 inc dl int 10h pop ax inc al test al,0fn jnzcontine_loop push ax mov ah,2 inc dh mov dl,0 int 10h pop ax contine_loop: decsi jnzcloop ret mov ah,4ch int 21h end start
Решение задачи: «Таблица ASCII, объясните пожалуйста код, если можно то по строчкам»
textual
Листинг программы
.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,256 ; SI будет счетчиком цикла mov al,0 ; Первый символ - с кодом 0 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,0Fh ; Если 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) int 20h ; Завершение COM-файла end start
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д