汇编……求助

冬南风 2010-12-09 12:21:25
CODE SEGMENT
ASSUME CS:CODE,DS:CODE
start: MOV AX,CODE
MOV DS,AX
mov ax,0b800h
MOV ES,AX
cld
AGAIN: MOV AX,3
INT 10H
lea dx,MENU ;主菜单
mov ah,9
int 21h
input:
mov ah,0
int 16h
cmp al,'1'
jnz cp2
call sub01 ;输入一个字符串
jmp input
cp2:cmp al,'2'
jnz cp3
call sub02 ;字符串左右移动
jmp AGAIN ;返回到主菜单
cp3:cmp al,'3' ;返回DOS
jnz input
lea dx,MESG
mov ah,9
int 21h
mov ah,1
int 21h
MOV AH,4CH
INT 21H

DELAY PROC
PUSH CX
PUSH DX
MOV DX,1000
D1:MOV CX,0ffffh
LOOP $
DEC DX
JNZ D1
POP DX
POP CX
RET
DELAY ENDP

sub01:
mov ax,0e0dh
int 10h
mov al,0ah
int 10h
lea dx,str
mov ah,0ah
int 21h ;输入一个字符串
mov ax,0e0ah
int 10h
ret

sub02:
cmp str+1,2
jnb y2
jmp quit
y2:call line ;画矩形框
mov dl,60-2
mov al,str+1
sub dl,al
mov dh,0
mov CNT3,dx
mov bl,al
inc al
shr al,1
cbw
mov CNT2,ax
sub bl,al
mov bh,0
mov CNT4,bx
y3:
mov bp,es
push ds
pop es
mov di,1000h
mov cx,CNT1
jcxz u1
mov al,20h
rep stosb
u1:lea si,buf
mov cx,CNT2
rep movsb
mov cx,CNT3
jcxz u2
mov al,20h
rep stosb
u2:mov cx,CNT4
rep movsb
mov cx,CNT5
jcxz u3
mov al,20h
rep stosb
u3:
show:
mov es,bp
mov ah,70h
mov si,1000h
mov di,left
mov cx,60-2
ppp:
lodsb
stosw
loop ppp
mov ah,1
int 16h
jnz sss ;按任意键,返回主菜单
call delay
cmp CNT3,0
jnz kk1
here:
mov al,1000b
xor byte ptr [kk1+1],al
xor byte ptr [kk1+5],al
xor byte ptr [kk1+9],al
xor byte ptr [kk2-3],al
kk1:
inc CNT1
inc CNT5
dec CNT3
cmp CNT3,0
jz kk2
dec CNT3
kk2:
cmp CNT1,0
jz here
jmp y3
sss:mov str+1,0
quit:
lea si,CNT1
xor ax,ax
mov cx,5
kk3:mov [si],ax
inc si
inc si
loop kk3
xor di,di
mov cx,80*25
mov ax,720h
rep stosw ;清全屏
ret

line: ;矩形框
mov di,(18*80+10)*2
mov al,201 ;左上角
mov ah,4
stosw
mov cx,60-2
mov al,205 ;横框
rep stosw
mov al,187 ;右上角
stosw
add di,20*2
mov al,186 ;竖框
stosw
mov left,di
mov cx,60-2
mov al,20H ;空格
rep stosw
;mov right,di
mov al,186 ;竖框
stosw
add di,20*2
mov al,200 ;左下角
stosw
mov cx,60-2
mov al,205 ;横框
rep stosw
mov al,188 ;右下角
stosw
ret

MENU DB 5 DUP(0AH)
DB 31 DUP(' '),'MAIN MENU',0DH,0AH
DB 25 DUP(' '),201,21 DUP(205),187,0DH,0AH
DB 25 DUP(' '),186,' 1.Input a String ...',186,0DH,0AH
DB 25 DUP(' '),186,' 2.Display Model ... ',186,0DH,0AH
DB 25 DUP(' '),186,' 3.Return to DOS ... ',186,0DH,0AH
DB 25 DUP(' '),200,21 DUP(205),188,0DH,0AH
DB 28 DUP(' '),'Choice(1,2,3):$'
MESG DB 0dh,0ah,0dh,0ah,9,'Press any key to exit ...$'

CNT1 DW 0 ;前导空格长度
CNT2 DW 0 ;左半字符串长度
CNT3 DW 0 ;中间空格长度
CNT4 DW 0 ;右半字符串长度
CNT5 DW 0;末尾空格长度

;num dw 2
left dw 0
;right dw 0
str db 21
db 0
buf db 0dh,20 dup(0)

CODE ENDS
END start

各位大侠帮忙注释一下这个程序……
或者给我说说要完成一个卫星绕地球的动态图(椭圆轨道)这个程序要用到什么汇编的知识,我只是想自己学学看…………最好帮我写一个简单的例子……谢谢了,小弟现在要做课设,但是汇编只学了一点基础,图形编程没有学……
...全文
99 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复

21,459

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧