Закрасить прямоугольник зеленым цветом - Assembler

Узнай цену своей работы

Формулировка задачи:

Кто нибудь может помочь по TASM. Дано программа которая выводит на экран прямоугольник. Можете помочь мне закрасит ее полностью.Спасибо всем.
Листинг программы
  1. .model small
  2. .stack 100h
  3. VGA_mode equ 13h ; 320x200 256 цветный графический режим
  4. color equ 2 ; цвет линий
  5. x_sise equ 300 ; ширина прямоугольника в пикселях
  6. y_sise equ 100 ; высота прямоугольника в пикселях
  7. x_pos equ 10 ; положение нижнего левого угла прямоуг-ка
  8. y_pos equ 50
  9. .code
  10. start:
  11. set_mode:
  12. mov ah,00h ; вызов нулевой функции BIOS
  13. mov al,VGA_mode ; и инициализация графического режима
  14. int 10h
  15. set_proc:
  16. mov ah,0Ch ; настройка параметров для вызова функции 0Ch
  17. mov al,color
  18. mov cx,x_pos
  19. mov dx,y_pos
  20. line_1: ;
  21. int 10h
  22. inc cx
  23. cmp cx,(x_pos + x_sise)
  24. jne line_1
  25. line_2: ;
  26. int 10h
  27. inc dx
  28. cmp dx,(y_pos + y_sise)
  29. jne line_2;
  30. line_3: ;
  31. int 10h
  32. dec cx
  33. cmp cx,x_pos
  34. jne line_3;
  35. line_4: ;
  36. int 10h
  37. dec dx
  38. cmp dx,y_pos
  39. jne line_4
  40. anykey: ; блок отвечающий за завершение приложения
  41. mov ah,1 ; при нажатии любой клавиши
  42. int 16h ; вызов 16h прерывания BIOS, определения
  43. jz anykey ; наличия введенного символа
  44. int 21h
  45. end start

Решение задачи: «Закрасить прямоугольник зеленым цветом»

textual
Листинг программы
  1. .model small
  2. .stack 100h
  3.  
  4. VGA_mode        equ 13h ; 320x200 256 цветный графический режим
  5. color           equ 2       ; цвет линий
  6. x_size      equ 300 ; ширина прямоугольника в пикселях
  7. y_size      equ 100 ; высота прямоугольника в пикселях
  8. x_pos       equ 10      ; положение нижнего левого угла прямоуг-ка
  9. y_pos       equ 50
  10. .code
  11. start:
  12. set_mode:
  13.         mov     ah,     00h             ; вызов нулевой функции BIOS
  14.         mov     al,     VGA_mode        ; и инициализация графического режима
  15.         int     10h
  16.  
  17.         mov     ah,     0Ch             ; настройка параметров для вызова функции 0Ch
  18.         mov     al,     color           ;цвет точек
  19.         mov     bh,     0               ;номер видеостраницы
  20.         mov     dx,     y_pos           ;строка
  21.         mov     cx,     x_pos           ;колонка
  22.  
  23.         mov     di,     y_size
  24. @@Vertical:
  25.  
  26.         mov     cx,     x_pos           ;колонка
  27.         mov     si,     x_size          ;вывести x_size точек в горизонтальной линии
  28. @@Horizontal:
  29.         int     10h                     ;вывести точку
  30.         inc     cx                      ;прирастить координату x
  31.         dec     si
  32.         jnz     @@Horizontal
  33.  
  34.         inc     dx                      ;переход к следующей горизонтальной линии с
  35.         dec     di
  36.         jnz     @@Vertical
  37.  
  38.  
  39. anykey:                                 ; блок  отвечающий за завершение приложения
  40.         mov     ah,     1               ; при нажатии любой клавиши
  41.         int     16h                     ; вызов 16h прерывания BIOS, определения
  42.         jz      anykey                  ; наличия введенного символа
  43.         mov     ah,     0
  44.         int     16h
  45.  
  46.         mov     ax,     0003h
  47.         int     10h
  48.  
  49.         mov     ax,     4C00h
  50.         int     21h
  51.    end  start

Объяснение кода листинга программы

  1. Установка начального регистра для видеорежима: mov ah, 00h; mov al, VGA_mode; int 10h
  2. Установка цвета точек: mov ah, 0Ch; mov al, color; mov bh, 0; mov dx, y_pos; mov cx, x_pos
  3. Цикл для вывода горизонтальных линий: @@Horizontal
  4. Цикл для вывода вертикальных линий: @@Vertical
  5. Блок обработки нажатия клавиши: anykey
  6. Завершение приложения: mov ax, 0003h; int 10h
  7. Вывод сообщения об ошибке: mov ax, 4C00h; int 21h

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 4.467 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы