Движение точки вверх - вниз - Assembler
Формулировка задачи:
.code start: mov ax, 0013h ; int 10h ; ;--------------тело проги tochka: MOV AH,0ch mov dx, 100 MOV CX, 160 ; ставим точку в центр MOV AL,14 dvigaem: ;метка движения mov ah,1 int 21h cmp al, 'u' je vverh ; при нажатии у -переход на метку вверх cmp al, 'd' je vniz ; соответственно вниз loop dvigaem vverh: MOV AH,0ch dec dx MOV CX, 160 MOV AL,14 je dvigaem vniz: MOV AH,0ch inc dx MOV CX, 160 MOV AL,14 je dvigaem ;---------------тело проги mov ah, 0 ; vihod po najatiu int 16h mov ax, 0003h ; vozvrat v videorezim int 10h metka_vihoda : mov ax, 4c00h ; 2 stroki - vihod iz programmi int 21h end start
Решение задачи: «Движение точки вверх - вниз»
textual
Листинг программы
.model tiny .386 .code org 100h begin: xor ax, ax mov es, ax mov AX,13h int 10h MOV AH,0ch mov dx, 100 MOV CX, 160 ; ставим точку в центр MOV AL,14 int 10h key_loop: xor ax,ax ;ждем символ с клавиатуры int 16h cmp ah,1 ; Нажали Esc? je quit ; Да, выход cmp ah, 16h ; 'U' jz scrl_up cmp ah, 20h ; 'D' jz scrl_dn jmp key_loop scrl_up: sub dx, es:[485h] pusha mov ax, 0601h scrl: xor bx, bx xor cx, cx mov dh,es:[484h] ; rows mov dl,es:[44Ah] ; columns int 10h popa jmp key_loop scrl_dn: add dx, es:[485h] pusha mov ax, 0701h jmp scrl quit: mov ax,3 int 10h ret end begin
Объяснение кода листинга программы
Выше представлен код на языке Assembler, который, предположительно, выполняет движение точки вверх и вниз. Список переменных и их значений:
- AX — 13h; Начальное значение для точки (13 соответствует символу 'E' в кодировке MSDOS)
- DX — 100; Координаты точки (100 соответствует X 100 соответствует Y)
- CX — 160; Координаты точки (160 соответствует X 100 соответствует Y)
- AL — 14; Код цвета точки (14 соответствует светло-синему цвету)
- AH — 0ch; Код функции вывода символа
- ES — ax; Сегментный регистр для вывода на экран
- BX, CX — 0; Служат для хранения координат курсора (указатель на экран)
- DH — 0; Служит для хранения количества строк (0 соответствует одной строке)
- DL — 0; Служит для хранения количества столбцов (0 соответствует одному столбцу)
- AX — 0601h; Код функции перемещения точки вверх
- AX — 0701h; Код функции перемещения точки вниз
- AX — 03; Код функции выхода из программы
- AX — 0; Служит для хранения количества строк (0 соответствует одной строке)
- AX — 0; Служит для хранения количества столбцов (0 соответствует одному столбцу)
- AX — 485h; 485h = 1000011110101111
- AX — 44Ah; 44Ah = 1000011110101111
- AX — 0601h; 0601h = 601
- AX — 0701h; 0701h = 701
- AX — 03; 03 = 3
- AX — 0; 0 = 0
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д