+ -
当前位置:首页 → 问答吧 → 求助:用汇编编写一个输出“hello world”的动画

求助:用汇编编写一个输出“hello world”的动画

时间:2010-04-17

来源:互联网

rt,谢谢,合适的给分

作者: qijiba   发布时间: 2010-04-17

www.aogosoft.com

有汇编动画的例子,可以参考一下

作者: mydo   发布时间: 2010-04-17

引用 1 楼 mydo 的回复:
www.aogosoft.com

有汇编动画的例子,可以参考一下

额。。。没找到。。能具体点?

作者: qijiba   发布时间: 2010-04-17

史上最强的HelloWord[3D旋转]_蓝色space_百度空间
http://hi.baidu.com/blueglass2/blog/item/bd5b6c16ad500b4221a4e97f.html

史上最强的HelloWord[3D旋转]2009-03-28 18:02;HelloWorld [旋转的3D文字]
  ;编译方法: Tasm /x/t hello.asm Tlink /x/t hello.obj
  ;上下左右键移动 pgdown扩大 pgup缩小 esc退出
  Code Segment
  assume cs:code,ds:code,es:code
  .386P
  ORG 100H
  START:
  mov ax,13h
  int 10h
  lea dx,msg
  mov ah,9
  int 21h
  ;==========================
  push 0a000h
  pop es
  xor bp,bp
  mov pcnt,0
  mov di,140h*8*4
  mov si,140h*8
  @scan: 
  cmp byte ptr es:[si],0
  jz @1
  mov ax,di
  call addxy
  inc ax
  call addxy
  add ax,140h
  call addxy
  dec ax
  call addxy
  @1: sub di, 2
  dec si
  jnz @scan
  ;==========================
  @main: call drawing
  inc Zrot
  test Zrot,8
  jnz norot
  inc Xrot
  inc Yrot
  norot: call scankey
  jmp short @main
  exit: mov ax,3
  int 10h
  int 20h
  ;=================
  addxy: push ax
  xor dx,dx
  mov bx,140h
  div bx
  sub ax,60
  sub dx,60
  sal ax, 1
  sal dx, 1
  mov [400h+bp+0],ax
  mov [400h+bp+2],dx
  inc pcnt
  add bp,4
  pop ax
  ret
  ;==================
  scankey:
  mov dx,3dah
  ta: in al,dx
  test al,8
  jnz ta
  tb: in al,dx
  test al,8
  jz tb
  in al,60h
  k0: cmp al, 75
  Jne k1
  sub xx, 8
  k1: cmp al, 77
  Jne k2
  add xx, 8
  k2: cmp al, 72
  Jne k3
  sub yy, 6
  k3: cmp al, 80
  Jne k4
  add yy, 6
  k4: cmp al, 73
  jne k5
  add zof,12
  k5: cmp al, 81
  jne k6
  sub zof,12
  k6: cmp al, 1
  je exit
  ret
  ;=================
  drawing:push cx
  mov bp,2400h
  mov cx,pcnt
  mov si,400h ;读取静态库
  stext:lodsw
  mov Yp,ax
  lodsw ;si+=4
  mov Xp,ax
  mov ax,-20 ;<------!
  mov Zp,ax
  xor di,di
  call sincos
  call resincos
  call resincos
  mov di,[bp]
  xor ax,ax
  stosb
  mov bx,zp
  add bx,Zof
  mov ax,256
  imul xp
  idiv bx
  add ax,XX ;get Screen X
  cmp ax,1
  jl e
  cmp ax,318
  jg e
  mov di, ax
  mov ax,256
  imul yp
  idiv bx
  add ax,YY ;get Screen Y
  cmp ax,1
  jl e
  cmp ax,200
  jg e
  imul ax,140h
  add di, ax
  mov [bp],di
  mov al,52h
  stosb
  e: add bp, 2
  loop stext
  pop cx
  ret
  ;=================
  sincos:
  fldpi
  fidiv rrr
  fimul word ptr [xrot+di]
  fst tan
  fSinCos
  fxch
  fimul zp
  fistp zt
  fimul yp
  fisub zt
  fistp yt
  push yt
  fld tan
  fSinCos
  fimul zp
  fistp zt
  fimul yp
  fiadd zt
  fistp zp
  pop yp
  ret
  resincos:
  add di, 2
  mov ax, zp
  xchg ax,xp
  xchg ax,yp
  xchg ax,zp
  call sincos
  ret
  ;===========================
  msg db 'HelloWord$' ;要显示其它字符直接改这里,但长度不要超过10个字符
  rrr dw 180d
  Zof dw 300
  YY dw 100
  XX dw 160
  Xrot dw ?
  Yrot dw ?
  Zrot dw ?
  pcnt dw ?
  Yp dw ?
  Xp dw ?
  Zp dw ?
  xt dw ?
  yt dw ?
  zt dw ?
  tan dd ?
  code ends
  end START

类别:3d特效 网友评论:4
  breakan 2009-05-24 09:24 | 回复 一定要用tasm编译吗? 
  blueglass2 2010-01-13 23:18 | 回复 嗯 
  Real_Launcelot 2010-04-08 23:09 | 回复 
  回复blueglass2:我觉得其他汇编也可以吧...只是语法稍有不同,能完成的功

能不会少的。你真厉害,一个盒子竟然能让你做出这么多东西。。。 
  Real_Launcelot 2010-04-08 23:09 | 回复 回复blueglass2:你有计算机图形

学基础吧? 
  

&copy;2010 Baidu

作者: dididu1515   发布时间: 2010-04-18

如用MASM6.11编译,可在
START:
后添上
push cs
pop ds
将 int 20h 改成
mov ah,4ch
int 21h
 编译方法:
masm hello.asm
link /tiny hello.obj

作者: dididu1515   发布时间: 2010-04-18

;每天回帖即可获得10分可用分!
;80x86汇编屏保程序_翻卷式旋转_Hello_world!
;
  code Segment
  .386P
  org 100h
  assume cs:code,ds:code,es:code
  start:
  push cs
  pop ds
  push ds
  pop es
  call csh
  mov ax,13h
  int 10h
  mov ax,1300h
  mov bx,000eh ;BH=页码 BL=属性(若AL=00H或01H)
  mov cx,cnt ;0014h ;CX=显示字符串长度
  mov dx,100h ;010ah ;DH,DL=起始行,列
  mov bp,offset hello ;ES:BP=显示字符串的地址
  int 10h
call read
call clear
kll:
mov bp,1000h
hhh:call write
mov ah,1
int 16h
jz ppp
mov ah,0
int 16h
cmp al,1bh
jz exit
ppp:call delay
call delay
add bp,2
cmp bp,1000h+360*2
jbe hhh
jmp kll
exit:
  mov ax,3
  int 10h
  mov ah,4ch
  int 21h

 csh:
  cld
  MOV DI,1000H
  MOV CX,360
 @csh:
  INC ROT
  FLDPI
  FIDIV RRR
  FIMUL ROT
  FSINCOS
  FIMUL RX
  FISTP XX
  FIMUL RY
  FISTP YY
  ADD XX, 160 ;120
  ADD YY, 90 ;100
  MOV AX, YY
 imul ax,320
 add ax,XX
  stosw
  LOOP @csh
  ret 
;=========== 
  color DB 2
  RRR DW 180
  YY DW 100
  XX DW 160
  RX DW 110 ;120
  RY DW 60 ;90
  ROT DW ?
;------------
Delay:
  push dx
  push ax
  t_a: mov dx,3dah
  in al, dx
  test al, 8
  Jnz t_a
  t_b: in al, dx
  test al, 8
  Jz t_b
  pop ax
  pop dx
  ret 

clear:
mov ax,0a000h
mov es,ax
  xor di,di
  mov ax,di
  mov cx,320*200
  rep stosb
  ret
;----------------
read:
mov ax,0a000h
mov ds,ax
push cs
pop es
cld
mov di,2000h
xor si,si
mov bx,14*8 ;字符串长度
nt1: push si
mov cx,20 ;字符高度
nt2:
lodsb
stosb
add si,320-1
loop nt2
pop si
inc si
dec bx
jnz nt1
ret
;
;----------------
write:
push cs
pop ds
mov ax, 0a000h
mov es, ax
mov bx,bp
mov dx,14*8 ;字符串长度
mov si,2000h
wr1: push bx
mov di,[bx]
mov cx,20 ;字符高度
wr2: lodsb
stosb
add di,320-1
loop wr2
pop bx
add bx,2
cmp bx,1000h+359*2
jbe rrp
mov bx,1000h
rrp:
dec dx
jnz wr1
ret
;--------------
  hello db ' Hello World! '
  cnt equ $- hello
  code ends 
  end start

作者: dididu1515   发布时间: 2010-04-20

支持一个,想学学,不过没有时间啊。

作者: wslmsx   发布时间: 2010-04-20

佩服!!

作者: DrsExplorer   发布时间: 2011-10-06