Закрашенные прямоугольники - Assembler
Формулировка задачи:
Написать программу, которая рисует на экране случайное число прямоугольников
случайного размера и случайного цвета. (Использовать текстовый режим дисплея -
Псевдографика)
Не происходит вывод прямоугольник что не так? Может что-то не так с mov es:[si],bl?
.model tiny .model ;C_SEG SEGMENT PARA 'CODE' .stack 100 .code .ORG 100H ;ASSUME CS:C_SEG, DS:C_SEG, SS:C_SEG START: JMP GO GO: mov ax,0b800h;установка es на видеопамять push ax pop es push cs pop ds push cs pop ss ;----------------------- ;Видеорежим с цветными символами mov ah,0; mov al,03h; int 10h; call rr ex: ;Quit from program mov ah,4ch int 21h ;------------------------------------------ rr proc near call random and ax,0ffh; mov cx,ax l1: push cx call randrect pop cx loop l1 ret rr endp randrect proc near ; y call random; and ax,01111b push ax ; x call random; and ax,0111111b push ax ; sy call random; and ax,01111b inc ax push ax ; sx call random; and ax,01111b inc ax push ax ; c call random; and ax,01111b push ax ;mov dx,5; call rect add sp,10 ret randrect endp rect proc near push bp mov bp,sp x equ [bp+12] y equ [bp+10] sx equ [bp+8] sy equ [bp+6] c equ [bp+4] mov cx,sy loop1: push cx mov dx,cx mov cx,sx loop2: push dx mov ax,x add ax,cx push ax mov ax,y add ax,dx push ax mov dx,c call point pop ax pop ax pop dx loop loop2 pop cx loop loop1 pop bp ret rect endp point proc near push bp mov bp,sp x equ [bp+4] y equ [bp+6] mov ax,y shl ax,2 add ax,y shl ax,4 add ax,x shl ax,1 mov si,ax mov bl,219 mov es:[si],bl inc si mov es:[si],dl pop bp ret point endp random proc near mov ax,rnum or ax,ax jns getnext push ds mov ax,040h push ax pop ds mov ax,ds:[006ch] pop ds getnext: mul word ptr rconst xor dx,dx div word ptr rrange mov ax,dx mov rnum,dx xor dx,dx div word ptr rmrange mov ax,dx ret random endp rnum dw -1; для инициализации генератора rconst dw 16807 rrange dw 7fffh rmrange dw 0ffffh;0-max END START
Решение задачи: «Закрашенные прямоугольники»
textual
Листинг программы
.model tiny .code .186 ORG 100H START: mov ax,0b800h;установка es на видеопамять push ax pop es ;Видеорежим с цветными символами mov ax,3; int 10h; call rr xor ax,ax int 16h ;Quit from program ret ;------------------------------------------ rr proc call random and ax,0fh; mov cx,ax l1: push cx call randrect pop cx loop l1 ret rr endp randrect proc ;y call random; and ax,01111b push ax ;x call random; and ax,0111111b push ax ;sy call random; and ax,01111b inc ax push ax ;sx call random; and ax,01111b inc ax push ax ;c call random; and ax,01111b push ax ;mov dx,5; call rect add sp,10 ;retn N ret randrect endp rect proc push bp mov bp,sp x equ [bp+12] y equ [bp+10] sx equ [bp+8] sy equ [bp+6] c equ [bp+4] mov cx,sy loop1: push cx mov dx,cx mov cx,sx loop2: push dx mov ax,x add ax,cx push ax mov ax,y add ax,dx push ax mov dx,c call point pop ax pop ax pop dx loop loop2 pop cx loop loop1 pop bp ret rect endp point proc push bp mov bp,sp x equ [bp+4] y equ [bp+6] mov ax,y shl ax,2 add ax,y shl ax,4 add ax,x shl ax,1 mov si,ax mov bl,219 mov es:[si],bl inc si mov es:[si],dl pop bp ret point endp random proc mov ax,rnum or ax,ax jns getnext push ds mov ax,040h push ax pop ds mov ax,[006ch] pop ds getnext:mul word ptr rconst xor dx,dx div word ptr rrange mov ax,dx mov rnum,dx xor dx,dx div word ptr rmrange mov ax,dx ret random endp rnum dw -1; для инициализации генератора rconst dw 16807 rrange dw 7fffh rmrange dw 0ffffh;0-max END START
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д