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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.04.2023, 21:44   #1
ChestIotVaga
Пользователь
 
Регистрация: 21.11.2022
Сообщений: 84
Стрелка TASM Нарисовать грузовичок

Здравствуйте. Нужно написать программу на tasm, которая нарисует грузовик не большой. Фото прикладываю к теме. Помогите, пожалуйста https://programmersforum.ru/attachme...1&d=1681065834 не нашлось более лучшего рисунка
Изображения
Тип файла: jpg detsad-301366-1602403652.jpg (47.6 Кб, 14 просмотров)
ChestIotVaga вне форума Ответить с цитированием
Старый 10.04.2023, 10:08   #2
ChestIotVaga
Пользователь
 
Регистрация: 21.11.2022
Сообщений: 84
По умолчанию

вот что мне удалось написать квадрат с пикселем помогите
Код:
CSeg segment byte public 'CODE'
assume cs:CSeg

PIXEL_COLOR equ 12

org 100h

_start:
mov ax,13h
int 10h

push 0a000h
pop ds

mov ax,(200 - 12)/2
mov di,320
mul di
add ax,(320 - 12)/2
xchg ax,di

mov cx,12 ; установить размер квадрата в 12x12
PutSquare:
push cx
mov cx,12 ; установить размер строки в 12
PutRow:
mov byte ptr ds:[di],PIXEL_COLOR
inc di
loop PutRow
add di,308 ; перейти на следующую строку (320 - 12) + 2 = 308
pop cx
loop PutSquare

xor ax,ax
int 16h

mov ax,3
int 10h

mov ah,4ch
int 21h

CSeg ends
end _start
ChestIotVaga вне форума Ответить с цитированием
Старый 10.04.2023, 11:27   #3
macomics
Участник клуба
 
Регистрация: 17.04.2022
Сообщений: 1,833
По умолчанию

Попробуйте вот это. Должно рисовать прямоугольники произвольной формы. С кругами чуть сложнее. Там надо будет вычислить из прямоугольной области радиусы и центр. Потом в циклах, похожих на те что в процедуре прямоугольника, надо добавить проверку: "(x` - c.x)^2 / r.x^2 + (y` - c.y)^2 / r.y^2 <= 1" - тут понадобится FPU, поэтому пока не привожу. Если вам подойдёт с FPU, тогда напишу.
Код:
SetPoint: ; ax = x; dx = y; bl = color
	push	dx
	push	ds
	push	di
	cmp	ax, 0
	jl	out_of_range
	mov	di, 320
	cmp	ax, di
	jge	out_of_range
	cmp	dx, 0
	jl	out_of_range
	cmp	dx, 200
	jge	out_of_range
	xchg	ax, di
	mul	dx
	mov	dx, 0xA000
	add	di, ax
	mov	ds, dx
	mov	[di], bl
out_of_range:
	pop	di
	pop	ds
	pop	dx
	ret

DrawRectangle: ; ax = left; cx = top; dx = right; di = bottom; bl = fillColor; bh = borderColor
	push	ax
	push	cx
	push	dx
	push	di
	cmp	ax, dx
	je	DrawRectangleEmpty
	jg	DrawRectangleGoodX
	xchg	ax, dx
DrawRectangleGoodX:
	cmp	di, cx
	je	DrawRectangleEmpty
	jg	DrawRectangleGoodY
	xchg	cx, di
DrawRectangleGoodY:
	sub	di, cx
	xchg	dx, di
	xchg	dx, cx
	xchg	bl, bh
	push	ax
DrawRectangleTop:
	call	SetPoint
	inc	ax
	cmp	ax, di
	jle	DrawRectangleTop
	pop	ax
	dec	cx
	jz	DrawRectangleEmpty
	dec	cx
	jz	DrawRectangleBottom
	xchg	bl, bh
DrawRectangleLoopY:
	push	ax
	xchg	bl, bh
	call	SetPoint
	xchg	bl, bh
	jmp	DrawRectangleLoopXStart
DrawRectangleLoopX:
	call	SetPoint
DrawRectangleLoopXStart:
	inc	ax
	cmp	ax, di
	jl	DrawRectangleLoopX
	pop	ax
	inc	dx
	loop	DrawRectangleLoopY
	xchg	bl, bh
DrawRectangleBottom:
	call	SetPixel
	inc	ax
	cmp	ax, di
	jle	DrawRectangleBottom
	xchg	bl, bh
DrawRectangleEmpty:
	pop	di
	pop	dx
	pop	cx
	pop	ax
	retn
macomics вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Надо нарисовать "треугольную " спираль TASM Veles221 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 18.11.2020 20:37
tasm coldq Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 9 13.11.2018 22:16
TASM дело тонкое!:) (Где в TASM IDE?) 3.14oner Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 9 15.11.2011 16:20
TASM for DOS Lazio Фриланс 2 11.03.2011 14:28