- [kyolxs] 写完程序的感觉特别美妙吧? 路过。纯支持! 07/26 19:20
- [tinyparticle] 这个。。。。。无语。。。 07/23 21:11
- [tinyparticle] (2)mov sp,32 ================================ 博 07/21 18:10
- [tinyparticle] (1)mov al,1,这句冒似有问题哦 (3)mov cx,10h,在载入程序时,cx保存程序的 07/21 18:05
- [tinyparticle] mov ax,[0008] ax=89h mov ax,[0002] ax=66 === 07/21 17:58
[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
写汇编程序真是一种煎熬啊。
要时刻注意着寄存器的值,注意保存,恢复现场。
程序一大了,就难以控制了。
写了一天才写完了。
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) |
类型(汇编作业) |
收藏此文 |