毕业论文论文范文课程设计实践报告法律论文英语论文教学论文医学论文农学论文艺术论文行政论文管理论文计算机安全
您现在的位置: 毕业论文 >> 课程设计 >> 正文

汇编课程设计 第3页

更新时间:2007-11-8:  来源:毕业论文
                        
               

Count  dw 0                        ;保存字符个数
Pointer  dw 0                        ;保存字符首地址
Line  db 0                        ;保存行号        
Column  db 0                        ;保存列号
Data   ends

Codes  segment
   Assume cs:codes,ds:data,es:data,ss:stacks
Start:          mov  ax,data
   Mov  ds,ax
   Mov  es,ax
   ;设置为80×25彩色文本方式
                        mov         ah,0
                        mov             al,3
                        int             10h
                        call    clear             ;清屏幕   
                        mov   ah,0
               
                    lea   bp,string
                    mov   cx,strlen
                    mov   dx,0101h
                    mov    bh,0
                    mov   bl,9eh      
                    mov   al,0
                    mov   ah,13h
                    int   10h
                    mov   ah,7
                    int   21h                       
                        Lea  si,robot2 ;数据段首地址送DI
   Mov  dx,1480h ;显示的起始行号和列号
   Mov  bh,0      
                        Call            moves1  
   Lea  di,robot1 ;数据段首地址送DI
   Mov  dx,1400h ;显示的起始行号和列号
   Mov  bh,0      
                        Call            moves      ;调用MOVES子程序
                         
                        call   delay      ;清屏幕
                        call   clear
                        Lea  si,robot4 ;数据段首地址送DI
   Mov  dx,1440h ;显示的起始行号和列号
   Mov  bh,0      
                        Call            moves1  
                        Lea  di,robot3 ;数据段首地址送DI
   Mov  dx,1400h ;显示的起始行号和列号
   Mov  bh,0      
                        Call            moves      ;调用MOVES子程序
                        Mov             ah,4ch     ;主程序结束返回DOS
   Int  21h

 

Moves1  proc    ;机器人移动子程序                               
   Pushr ax,bx,cx,dx        ;保存寄存器内容
   Push  si         
   Xor  ch,ch
   Mov  cl,[si]     ;字符个数送CX
   Inc  si
                          ;指向第一个显示符
   Mov  count,cx    ;保存字符个数
   Mov  pointer,si  ;保存字符首地址
   Mov  line,dh     ;保存行号
   Mov  column,dl   ;保存列号
Next1:                  add             dh,[si+2]   ;根据偏移值计算下
   Add  dl,[si+3]   ;计算列号
         ;判断是否到屏幕最右端
       
   

                        mov             ah,2        
   Int  10h          ;设置光标位置
   Mov  al,[si]      ;取字符
   Mov  bl,[si+1]    ;取字符属性
   Push  cx           ;保存计数值
   ;设置写彩色字符
                        mov             ah,9        
                        mov             cx,1
                        int             10h

   Pop  cx           ;恢复计数值
   Add  si,4         ;指向下一个显示字
   Loop next1                 ;机器人没画完转
                       
   
                        Pop  si
   Popr  ax,bx,cx,dx
   Ret
Moves1  endp


Moves  proc    ;机器人移动子程序
   Pushr ax,bx,cx,dx        ;保存寄存器内容
   Push  di         
   Xor  ch,ch
   Mov  cl,[di]     ;字符个数送CX
   Inc  di          ;指向第一个显示符号
   Mov  count,cx    ;保存字符个数
   Mov  pointer,di  ;保存字符首地址
   Mov  line,dh     ;保存行号
   Mov  column,dl   ;保存列号
Next:                   add             dh,[di+2]   ;根据偏移值计算下一个符号的行号
   Add  dl,[di+3]   ;计算列号
   Cmp  dl,50;判断是否到屏幕最右端
   Jb  write       ;否,继续画
                        Cmp  dh,10;判断是否到屏幕最右端
   Jb  write       ;否,继续画
                       
   Pop  di
   Popr  ax,bx,cx,dx
   Ret

Write:      mov             ah,2        
   Int  10h          ;设置光标位置
   Mov  al,[di]      ;取字符
   Mov  bl,[di+1]    ;取字符属性
   Push  cx           ;保存计数值
   ;设置写彩色字符
                        mov             ah,9        
                        mov             cx,1
                        int             10h

   Pop  cx           ;恢复计数值
   Add  di,4         ;指向下一个显示字符
   Loop next                 ;机器人没画完转next
                        Call            delay        ;延时子程序
                        Call            Erase        ;清除机器人子程序
   Jmp  short next
Moves  endp
   
Erase  proc
   Mov  cx,count      ;字符个数送CX
   Mov  di,pointer    ;字符首地址送DI
   Mov  dh,line       ;行号送DH
   Mov  dl,column     ;列号送DL
l:   add  dh,[di+2]     ;根据相对偏移计算行号
            mov     ah,2          ;设置光标位置
            add     dl,[di+3]
            int     10h     
   mov  al,[di]        ;取字符    
   mov  bl,0           ;字符属性为黑底黑字
   push  cx           
   mov      ah,9           ;写字符
                        mov             cx,1          
                        int             10h
   pop  cx
   add  di,4           ;指向下一个字符
   loop  l              ;未清除完转L
   mov  cx,count       ;为重画机器人做准备
   mov  di,pointer
                 
   mov  dh,line      
   inc  column       ;inc向左走,dec向右走
   mov  dl,column
                       
   ret
erase  endp
                       

delay  proc   ;延时子程序
   pushr ax,bx,cx,dx
                        mov             dx,4000h
go:                     mov             cx,4000h
repeat:          loop  repeat
   dec  dx
   jne  go
   popr  ax,bx,cx,dx
   ret
delay  endp

clear   proc  ;清屏幕子程序
   pushr ax,bx,cx,dx
   mov  bh,7
   mov  dx,184fh
   mov      ax,0600h
                        mov             cx,0
                        int             10h
   popr  ax,bx,cx,dx
   ret
clear            endp

codes  ends
   end start

上一页  [1] [2] [3] 

汇编课程设计 第3页下载如图片无法显示或论文不完整,请联系qq752018766
设为首页 | 联系站长 | 友情链接 | 网站地图 |

copyright©youerw.com 优文论文网 严禁转载
如果本毕业论文网损害了您的利益或者侵犯了您的权利,请及时联系,我们一定会及时改正。