汇编语言程序 急啊!!!!!

来源:百度知道 编辑:UC知道 时间:2024/05/17 19:14:48
帮帮忙。在下面的程序里面让每个图形显示的颜色都不一样,还要让显示的图形大小不同,谢谢了!!
code segment
assume cs:code,ds:code
org 100h
start:
push cs
pop ds
mov ax,3
int 10h;置文本模式
mov ax,0b800h
mov es,ax;找显存段址
lea bx,h1
@in:
mov ah,1
int 16h
jz r0
mov ah,0
int 16h
cmp al,1bh;按Esc键退出程序
jz exit
t1:cmp al,'1';按1—4键
jb t3
cmp al,'4'
ja t2
call cls
lea bx,h1
sub al,31h
cbw
shl ax,1
add bx,ax
call [bx];手动切换显示四个图形之一
jmp @in
t2:cmp al,'A'
jb t3
cmp al,'Z'
jbe r1
r2:cmp al,'a';按a—z
jb t3
cmp al,'z'
jbe r1
t3:mov al,3fh
r1:mov zf,al
call cls
r0:call [bx];四组图形元素由该符号组成
jmp @in
exit:
mov ah,4ch
int 21h

h01 equ $
Tu01:;图1 长方形
mov al,zf
mov ah,07
mov dx,406H
mov si,6
Q1:mov di,dx;找屏幕位置
mov cx,5
nop;计算'*'个数<

; 本程序通过编译,运行正确
Code Segment
Assume CS:Code,DS:Code
; -------------------------------------
; 显示:长方形
Tu01 proc Near
push ax
mov ax,80
sub ax,dx
shr ax,1
shl ax,1
add di,ax
pop ax
@@Q1: push cx
push di
mov cx,dx
rep stosw ;写显存
pop di
pop cx
add di,160
loop @@Q1
ret
Tu01 Endp
; -------------------------------------
; 显示:平行四边形
Tu02 proc Near
push ax
mov ax,cx
add ax,dx
shr ax,1
add di,80
sub di,ax
and di,0fffeh
pop ax
@@Q2: push cx
push di
mov cx,dx
rep stosw ;写显存
pop di
pop cx
add di,158
loop @@Q2
ret
Tu02 Endp
; -------------------------------------
; 显示:左三角形
Tu03 proc Near
push ax
mov ax,80
sub ax,dx