用汇编语言完成一个图形变换的程序,系统具有 4 种可选择的功能,按字母“Y”画一个用点组成的 圆;按字母“S”画一个用不同颜色填充的三角形;按字母“Z”画一个用不同颜色填充的 矩形;按“q”键退出
时间: 2023-09-18 21:11:19 浏览: 102
好的,以下是一个用汇编语言实现的图形变换程序,共有 4 种可选择的功能。按“Y”键画一个用点组成的圆,按“S”键画一个用不同颜色填充的三角形,按“Z”键画一个用不同颜色填充的矩形,按“q”键退出。
```assembly
.model small
.stack 100h
.data
msg db '请选择功能(Y: 画圆,S: 画三角形,Z: 画矩形,q: 退出): $'
color1 db 1
color2 db 2
color3 db 3
.code
main proc
mov ax, @data
mov ds, ax
call clear_screen
while_loop:
lea dx, msg
mov ah, 9h
int 21h
mov ah, 1h
int 21h
cmp al, 'Y'
je draw_circle
cmp al, 'S'
je draw_triangle
cmp al, 'Z'
je draw_rectangle
cmp al, 'q'
je exit_program
call clear_screen
jmp while_loop
draw_circle:
mov cx, 200
mov dx, 0
mov ah, 0ch
mov bh, color1
circle_loop:
int 10h
inc dx
cmp dx, cx
jle circle_loop
call clear_screen
jmp while_loop
draw_triangle:
mov ax, 50
mov bx, 100
mov cx, 150
mov dx, 75
mov ah, 0ch
mov bh, color2
mov al, 0eh
mov bh, 0
mov bl, color2
int 10h
mov al, 0dh
mov bh, 0
mov bl, color2
int 10h
mov al, 0ch
mov bh, 0
mov bl, color2
int 10h
mov al, 06h
mov bh, 0
mov bl, color2
int 10h
mov al, 07h
mov bh, 0
mov bl, color2
int 10h
mov al, 08h
mov bh, 0
mov bl, color2
int 10h
mov al, 0ah
mov bh, 0
mov bl, color2
int 10h
mov al, 0bh
mov bh, 0
mov bl, color2
int 10h
mov al, 09h
mov bh, 0
mov bl, color2
int 10h
call clear_screen
jmp while_loop
draw_rectangle:
mov cx, 200
mov dx, 100
mov ah, 0ch
mov bh, color3
rectangle_loop:
int 10h
inc dx
cmp dx, 200
jle rectangle_loop
call clear_screen
jmp while_loop
exit_program:
mov ah, 4ch
int 21h
clear_screen:
mov ax, 0600h
mov bh, 07h
mov cx, 0
mov dx, 184fh
int 10h
ret
main endp
end main
```
程序中使用了 DOS 中断 10h 来绘制图形。在函数中,我们使用了不同的寄存器来存储各种参数,例如 cx 和 dx 来存储圆和矩形的大小,ax、bx、cx 和 dx 来存储三角形的顶点坐标。使用了不同的颜色来填充三种不同的图形,color1、color2 和 color3 分别代表三种颜色。
在主程序中,我们使用了一个 while 循环来不断接收用户的输入,根据用户选择的功能来调用相应的函数。如果用户选择了退出功能,程序会跳出 while 循环并结束程序。
希望这个程序能够帮助到你!
阅读全文