汇编网首页登录博客注册
hantayi的学习博客
博客首页博客互动【做检测题】论坛求助

我的博客

个人首页 |  我的文章 |  我的相册 |  我的好友 |  最新访客 |  文章收藏 |  论坛提问 |  友情链接 |  给我留言  
图片载入中
学习动态
最新留言
文章收藏
友情链接

[2010-07-24 08:44] 课程设计1

图片载入中
偷工减料的把这个程序写完了。
写汇编程序真是一种煎熬啊。
要时刻注意着寄存器的值,注意保存,恢复现场。
程序一大了,就难以控制了。
写了一天才写完了。

assume cs:codesg,ds:datasg

datasg segment

        db '1975','1976','1977','1978','1979','1980','1981','1982','1983'
    db '1984','1985','1986','1987','1988','1989','1990','1991','1992'
    db '1993','1994','1995'

datasg ends

var segment
        
        dw 0                        ;首地址        0 1
        db 0                         ;字2
        db 0                        ;3
        dw 0                        ;4 5
        db 0                        ;dl   6
        db 0                        ;dh   7
        db 0                        ;dh  8
var ends        

codesg segment
        
start:        

                mov bp,0
                mov dh,1
                mov cx,21
s2:                

                mov ax,var
             mov ds,ax           
             mov ds:[6],cx

                mov cx,4
                
                mov dl,1
                
s1:                mov ax,var
             mov ds,ax
                mov ds:[4],cx                ;保存cx
                
                mov ax,var
             mov ds,ax
             
                mov ds:[3],dl                ;lie
 
             mov ds:[8],dh                        ;hang
             
             mov ax,datasg
             mov es,ax
             
             mov al,es:[bp]
             mov ds:[2],al
             call setpos
             inc bp
             
             mov ax,var
             mov ds,ax
             mov dl,ds:[3]
             inc dl
             mov cx,ds:[4]
             loop s1
             
             mov ax,var
             mov ds,ax
             mov cx,ds:[6]
             mov dh,ds:[8]
             inc dh
             loop s2
             
             mov ax,4c00h
                int 21h
        

setpos: mov ax,var
             mov ds,ax
             
             mov ax,160
             mul dh
             mov bx,ax                 ;bx=160*dh
            mov ax,2
             mul dl               ;ax=dl*2
             add bx,ax             ;mov bx,(160*dh+dl*2)设置es:bx指向显存首地址
             mov ds:[0],bx
        
                mov ax,0b800h
             mov ds,ax
             
             mov ax,var
             mov es,ax
             
                mov al,es:[2]            ;显示字符
                mov bx,es:[0]          ;设置位置
                mov [bx],al
                
                mov al,01000010b     ;显示属性
                                                 ;设置位置
                mov [bx+1],al
                
                
                ret
                
        
codesg ends


end start
评论次数(1)  |  浏览次数(709)  |  类型(汇编作业) |  收藏此文  | 

[  kyolxs   发表于  2010-07-26 19:20  ]

写完程序的感觉特别美妙吧?

路过。纯支持!

 
 请输入验证码  (提示:点击验证码输入框,以获取验证码