汇编……求助
时间:2010-12-09
来源:互联网
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
各位大侠帮忙注释一下这个程序……
或者给我说说要完成一个卫星绕地球的动态图(椭圆轨道)这个程序要用到什么汇编的知识,我只是想自己学学看…………最好帮我写一个简单的例子……谢谢了,小弟现在要做课设,但是汇编只学了一点基础,图形编程没有学……
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
各位大侠帮忙注释一下这个程序……
或者给我说说要完成一个卫星绕地球的动态图(椭圆轨道)这个程序要用到什么汇编的知识,我只是想自己学学看…………最好帮我写一个简单的例子……谢谢了,小弟现在要做课设,但是汇编只学了一点基础,图形编程没有学……
作者: T20091 发布时间: 2010-12-09
学习一下先~~
作者: masmaster 发布时间: 2010-12-09
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28