Квадрат из "*" и изменяющимися сторонами - Assembler

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

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

Здравствуйте! Суть задачи в том, что при нажатии стрелки вправо квадрат увеличивается , при нажатии стрелки влево уменьшается. Собственно, как это реализовать в TASM?

Решение задачи: «Квадрат из "*" и изменяющимися сторонами»

textual
Листинг программы
.model small
.386
 
.stack 100h
 
.data
u dw 20
r dw 10
d dw 20
l dw 10 
tmp dw 0
 
.code
start:
mov ax,@data
mov ds,ax
 
mov ah,00h
mov al,03h
int 10h
 
push 0B800h
pop es
mov di,1020
 
mov ax,022Ah
 
mov cx,u
up:
stosw
loop up
 
mov cx,r
right:
stosw
 
add di,158
loop right
 
mov cx,d
down:
stosw
 
sub di,4
loop down
 
mov cx,l
left:
stosw
 
sub di,162
loop left
 
;;;;;;;;;;;;;;;;;;;;
 
input:
mov ah,01h
int 21h
 
cmp al,1Bh
je exit
 
int 21h
 
cmp al,4Dh
je big
 
cmp al,4Bh
je less
 
jmp input
 
big:
mov tmp,1
 
jmp del
 
less:
mov tmp,0
 
del:
mov di,1020
 
mov ax,0000h
 
mov cx,u
up_del:
stosw
loop up_del
 
mov cx,r
right_del:
stosw
 
add di,158
loop right_del
 
mov cx,d
down_del:
stosw
 
sub di,4
loop down_del
 
mov cx,l
left_del:
stosw
 
sub di,162
loop left_del
 
test tmp,1
jz one
 
two:
add u,2
inc r
add d,2
inc l
 
jmp change
 
one:
sub u,2
dec r
sub d,2
dec l
 
change:
mov di,1020
 
mov ax,022Ah
 
mov cx,u
up_put:
stosw
loop up_put
 
mov cx,r
right_put:
stosw
 
add di,158
loop right_put
 
mov cx,d
down_put:
stosw
 
sub di,4
loop down_put
 
mov cx,l
left_put:
stosw
 
sub di,162
loop left_put
 
jmp input
 
exit: 
mov ah,4Ch
mov al,00h
int 21h
end start

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


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

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

12   голосов , оценка 3.833 из 5
Похожие ответы