用汇编完成一个图形变换的程序,系统具有 4 种可选择的功能,按字母“Y”画一个用点组成的 圆;按字母“S”画一个用不同颜色填充的三角形;按字母“Z”画一个用不同颜色填充的 矩形;按“q”键退出
时间: 2023-09-18 10:10:20 浏览: 90
好的,以下是用 x86 汇编语言实现的图形变换程序,你可以在命令行中输入 Y、S、Z 来选择不同的图形,输入 q 退出程序。这里我使用了 NASM 汇编器和 Linux 操作系统。
```assembly
section .data
msg db '请选择要画的图形(Y-圆形,S-三角形,Z-矩形,q-退出):', 0
choice db 0
radius dw 50
width dw 100
height dw 50
x dw 0
y dw 0
section .text
global _start
_start:
; 打印提示信息
mov eax, 4
mov ebx, 1
mov ecx, msg
mov edx, 44
int 0x80
; 读取用户输入
mov eax, 3
mov ebx, 0
mov ecx, choice
mov edx, 1
int 0x80
; 判断用户输入
cmp byte [choice], 'Y'
je draw_circle
cmp byte [choice], 'S'
je draw_triangle
cmp byte [choice], 'Z'
je draw_rectangle
cmp byte [choice], 'q'
je quit
jmp invalid_input
draw_circle:
; 画圆
mov ax, [radius]
mov bx, [x]
mov cx, [y]
mov dx, 0
mov ah, 0x0B
int 0x10
; 等待用户按下任意键
mov eax, 0
int 0x16
; 返回主菜单
jmp _start
draw_triangle:
; 画三角形
mov ax, 0x0F00
mov bx, [width]
mov cx, [height]
mov dx, 0
mov ah, 0x0B
int 0x10
; 等待用户按下任意键
mov eax, 0
int 0x16
; 返回主菜单
jmp _start
draw_rectangle:
; 画矩形
mov ax, 0x0F00
mov bx, [width]
mov cx, [height]
mov dx, 0
mov ah, 0x0B
int 0x10
; 等待用户按下任意键
mov eax, 0
int 0x16
; 返回主菜单
jmp _start
invalid_input:
; 输入无效
mov eax, 4
mov ebx, 1
mov ecx, msg
mov edx, 44
int 0x80
; 返回主菜单
jmp _start
quit:
; 退出程序
mov eax, 1
xor ebx, ebx
int 0x80
```
你可以将以上代码保存到一个文件中,然后使用 NASM 编译器和 ld 链接器将其汇编、链接成可执行文件,并在命令行中运行。
阅读全文