Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.04.2023, 15:21   #1
ChestIotVaga
Пользователь
 
Регистрация: 21.11.2022
Сообщений: 84
Лампочка яхта tasm

помогите срочно задание такое нарисовать яхту по координатам вот мой код но там ошибки помогите исправить сдавать уже завтра работу
Код:
.MODEL SMALL
.STACK 100h

.DATA
    ; Инициализация цветовых констант
    BLACK equ 0
    WHITE equ 15
    BLUE equ 9

.CODE
    MOV AX, @DATA
    MOV DS, AX

    ; Рисуем корпус яхты
    MOV AX, 0A000h
    MOV ES, AX
    MOV AX, 20
    MOV BX, 40
    MOV CX, 60
    MOV DX, 20
    MOV BL, BLUE
    CALL draw_rect

    ; Рисуем мачту
    MOV AX, 0A000h
    MOV ES, AX
    MOV AX, 40
    MOV BX, 20
    MOV CX, 10
    MOV DX, 40
    MOV BL, WHITE
    CALL draw_rect

    ; Рисуем парус
    MOV AX, 0A000h
    MOV ES, AX
    MOV AX, 50
    MOV BX, 20
    MOV CX, 30
    MOV DX, 20
    MOV BL, BLUE
    CALL draw_triangle

    ; Задержка
    MOV CX, 0FFFFh
    MOV DX, 0FFFFh
    MOV AH, 86h
    INT 15h

    ; Выход из программы
    MOV AH, 4Ch
    INT 21h

; Процедура для рисования прямоугольника
draw_rect PROC
    PUSH AX
    PUSH BX
    PUSH CX
    PUSH DX
    PUSH DI

    MOV BX, AX ; Сохраняем цвет
    MOV AX, DI ; Вычисляем начальный адрес
    MOV DI, AX
    XOR AX, AX ; Очищаем AX для подсчета пикселей

    ; Рисуем прямоугольник
    draw_row:
        PUSH CX ; Сохраняем CX в стеке
        MOV CX, DX ; Загружаем DX в CX
        draw_pixel:
            MOV [ES:DI], BL ; Рисуем пиксель
            INC DI ; Переходим к следующему пикселю
            INC AX ; Увеличиваем счетчик пикселей
            LOOP draw_pixel ; Повторяем для всех пикселей строки
        POP CX ; Восстанавливаем CX из стека
        ADD DI, 320 - AX ; Переходим на следующую строку
        XOR AX, AX ; Обнуляем счетчик пикселей
        DEC DX ; Уменьшаем количество строк
        JNZ draw_row ; Повторяем для всех строк

    POP DI
    POP DX
    POP CX
    POP BX
    POP AX
    RET
draw_rect ENDP

; Процедура для рисования треугольника
draw_triangle PROC
    PUSH AX
    PUSH BX
    PUSH CX
    PUSH DX
    PUSH DI

    MOV BX, AX ; Сохраняем цвет

    MOV AX, 0 ; Сохраняем начальное
; положение X и Y
MOV CX, AX ; Сохраняем X
MOV DX, BX ; Сохраняем Y
; Рисуем треугольник
draw_row:
    CMP DX, BX ; Проверяем, достигли ли мы конечной позиции по Y
    JZ end_draw_triangle ; Если да, то заканчиваем рисование

    MOV AX, CX ; Загружаем X в AX
    MOV DI, DX ; Загружаем Y в DI
    MOV [ES:DI * 320 + AX], BL ; Рисуем пиксель

    INC CX ; Увеличиваем X
    CMP CX, AX ; Проверяем, достигли ли мы конечной позиции по X
    JZ end_draw_triangle ; Если да, то заканчиваем рисование

    CMP CX, AX ; Проверяем, находимся ли мы на правой стороне треугольника
    JA draw_right_side ; Если да, то переходим к рисованию правой стороны

    INC DX ; Увеличиваем Y
    JMP draw_row ; Переходим к следующей строке

draw_right_side:
    DEC DX ; Уменьшаем Y
    JMP draw_row ; Переходим к следующей строке

end_draw_triangle:
    POP DI
    POP DX
    POP CX
    POP BX
    POP AX
    RET
draw_triangle ENDP

; Начало программы
START:
MOV AX, @DATA
MOV DS, AX
; Рисуем яхту
MOV AX, BLUE
CALL draw_yacht

; Задержка
MOV CX, 0FFFFh
MOV DX, 0FFFFh
MOV AH, 86h
INT 15h

; Выход из программы
MOV AH, 4Ch
INT 21h
END START
ChestIotVaga вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Раз уж про США. Безос Яхта Перепотребление - даёшь новые технологии! ) Alar Свободное общение 65 13.05.2021 12:24
TASM: y=min(B(1)...B(N))^N+min(C(1)...C(k ))^k) r00sich8 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 16.06.2015 16:16
TASM NinjaNoob Помощь студентам 2 16.11.2012 23:38
TASM дело тонкое!:) (Где в TASM IDE?) 3.14oner Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 9 15.11.2011 16:20