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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.02.2023, 15:18   #1
ChestIotVaga
Пользователь
 
Регистрация: 21.11.2022
Сообщений: 84
По умолчанию Подскажите как добавить надпись в картинку по заданию надо нарисовать дом и указать автора

код на tasm
как изменить на другую фамилию место Петров
Код:
; аналог черепашьей графики
    .model tiny
    .code
    org 100h
start:  jmp beg
 
; надпись может быть любого размера
; ! - конец строки
; * - точка
; . - нет рисования
; $ - конец данных
img db "*****.*****.*****.****...***..****..!"
    db "*...*.*.......*...*...*.*...*.*...*.!"
    db "*...*.*****...*...****..*...*.****..!" 
    db "*...*.*.......*...*.....*...*.*...*.!"
    db "*...*.*****...*...*......***..****..$"
 
x0  dw 0
 
; Подпись cx dx - координаты верхнего левого угла, al - цвет, si - адрес картинки
sign:mov bl,al
     mov x0,cx
     cld
sign1:lodsb
    cmp al,"$" ; это конец данных ?
    jz signex
    cmp al,"!" ; это конец горизонтали ?
    jz signcr
    cmp al,"*" ; надо поставить точку ?
    jnz signskip
    mov al,bl
    call plot ; ставим точку
signskip:inc cx ; изменяем координаты точки
    jmp sign1 ; конец цикла
signcr:inc dx ; новая гориз. линия
    mov cx,x0
    jmp sign1
signex:ret    ; выход из подпрограммы
 
; вывод точки
; x=cx, y=dx, color=al
plot:   push cx
    push dx
    push di
    push es
    cmp cx,320 ; координаты выходят за границы экрана ?
    jnc pl1
    cmp dx,200
    jnc pl1
    push ax
    mov ax,320 ; di=320*y+x
    mul dx
    add ax,cx
    mov di,ax
    mov ax,0A000h
    mov es,ax
    pop ax
    mov es:[di],al ; выводим точку
pl1:    pop es
    pop di
    pop dx
    pop cx
    ret
 
; вывод линии
; bx - длина линии, ah - направление, cx,dx - координаты (начальной) точки, al - цвет
 
linetosub:cmp bx,0
    jz lt1
lt0:    call plot ; поставить точку
    cmp ah,0  ; ah=0 - двигаться на Север
    jz goN
    cmp ah,1  ; ah=0 - двигаться на СевероВосток
    jz goNE
    cmp ah,2  ; и т д - всего 8 возможных направлений (0-7)
    jz goE
    cmp ah,3
    jz goSE
    cmp ah,4
        jz goS
    cmp ah,5
    jz goSW
    cmp ah,6
    jz goW
    cmp ah,7
    jz goNW
movcont:dec bx
    jnz lt0
lt1:    ret
goN:    dec dx ; перемещение точки
    jmp movcont
goNE:   inc cx
    dec dx
    jmp movcont
goE:    inc cx
    jmp movcont
goSE:   inc cx
    inc dx
    jmp movcont
goS:    inc dx
    jmp movcont
goSW:   dec cx
    inc dx
    jmp movcont
goW:    dec cx
    jmp movcont
goNW:   dec cx
    dec dx
    jmp movcont
 
; макро - вывод линии - направление,длина,цвет
lineto  macro direction,size,color
    mov ah,direction
    mov al,color
    mov bx,size
    call linetosub
    endm
 
beg:    push cs
    pop  ds
    mov ax,13h ; видео режим 320*200*256 VGA
    int 10h
    mov  cx,160 ; стена дома
    mov dx,100  ; cx,dx - координата точки, от которой идет рисование
    lineto 0,50,15
    lineto 2,50,15
    lineto 4,50,15
    lineto 6,50,15
    mov  cx,160 ; крыша
    mov dx,50
    lineto 1,25,15
    lineto 0,5,15
    lineto 4,5,15
    lineto 3,25,15
    mov  cx,190 ; дверь
    mov dx,100
    lineto 0,30,12
    lineto 2,12,12
    lineto 4,30,12
    lineto 6,12,12
    mov  cx,170 ; окно
    mov dx,70
    lineto 0,10,14
    lineto 2,10,14
    lineto 4,10,14
    lineto 6,10,14
    lineto 2,5,14
    lineto 0,10,14
 
    mov cx,158 ; заборчик
    mov dx,100
    mov bx,6
z1: push bx
    lineto 0,25,10
    lineto 7,5,10
    lineto 5,5,10
    lineto 4,25,10
    lineto 2,10,10
    lineto 6,10,10
    pop  bx
    dec  bx
    jnz z1
; подпись
    mov cx,160 ; координаты подписи
    mov dx,180
    mov al,15  ; цвет подписи - белый
    mov si,offset img ; данные подписи
    call sign
    mov ah,0 ; ожидать нажатия на клавишу
    int 16h
 
    mov ax,3 ; установить текстовый режим
    int 10h
    mov ax,4C00h ; выход в Dos
    int 21h
    end start
ChestIotVaga вне форума Ответить с цитированием
Старый 22.02.2023, 16:07   #2
macomics
Участник клуба
 
Регистрация: 17.04.2022
Сообщений: 1,833
По умолчанию

Ну так фамилия написана в строке img. Просто отредактируйте ее.
Код:
img db ".*.*......*......****....***.....*.*.....***....****....***..!"
    db "*****....*.*....*.......*...*...*****.....*....*.......*.....!"
    db "*.*.*...*****...*.......*...*...*.*.*.....*....*........***..!" 
    db "*.*.*...*...*...*.......*...*...*.*.*.....*....*...........*.!"
    db "*.*.*...*...*....****....***....*.*.*....***....****....***..$"
Изображения
Тип файла: png drawhome.png (8.9 Кб, 18 просмотров)

Последний раз редактировалось macomics; 22.02.2023 в 16:40.
macomics вне форума Ответить с цитированием
Старый 23.02.2023, 04:23   #3
Пётр Седов
Форумчанин
 
Регистрация: 26.10.2022
Сообщений: 119
По умолчанию

Цитата:
Сообщение от ChestIotVaga Посмотреть сообщение
Код:
    mov ax,13h ; видео режим 320*200*256 VGA
Олдскулы свело . Привет 90-ые .
Пётр Седов вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как добавить свою надпись в адресную строку ? Dotya HTML и CSS 1 30.09.2017 21:54
Добавить надпись на изображение и сохранить(с надписью уже) igrok111 Общие вопросы Delphi 9 27.12.2015 13:29
Надпись на кнопке полностью не помещается (Подскажите новичку) Streammer C# (си шарп) 2 10.04.2015 12:46
Нарисовать блок-схему к заданию Julichka1k Помощь студентам 0 25.12.2011 10:48