- [nk1] 忘登录了,汗... 04/06 19:10
- [游客] 实验是没难度,但前面标志寄存器 算来算去的 烦啊…… 04/06 19:10
- [游客] 这个试验没什么难度啊,咋还绕晕了... 04/06 16:45
- [nk1] 谢谢提醒 04/05 10:41
- [yangzuhao] 把 mov ax,0b800h mov ds,ax mo 04/04 23:41
- [tomato] 恭喜课设一的完成。 04/03 21:31
- [tomato] 恭喜课设一的完成。 04/03 21:31
[2010-04-08 09:55] 课程设计1.NEW
所有程序中,我写的最烂的就是这个课程设计1了,烂到自己都看不下去了,昨天看到坛子上有位兄弟的课程设计1,给了我启发,以前我太执着于实验7了,非要用实验7的程序硬套。
于是今天抽空重新写了一个,这次仅仅使用了20多分钟就写好了。
下面程序有些寄存器与代码纯粹多余,写完之后也懒的修改了。
assume cs:code
code segment
ss1: db '1975','1976','1977','1978','1979','1980','1981','1982','1983'
db '1984','1985','1986','1987','1988','1989','1990','1991','1992'
db '1993','1994','1995'
ss2: dd 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514
dd 345980,590827,803530,1183000,1843000,2759000,3753000,4649000,5937000
ss3: dw 3,7,9,13,28,38,130,220,476,778,1001,1442,2258,2793,4037,5635,8226
dw 11542,14430,15257,17800
start: mov ax,cs
mov ds,ax
mov si,offset ss1
mov ax,0b800h
mov es,ax
mov bp,2*160+23*2
mov di,0
mov bx,0
mov cx,21
s: mov ax,[si]
mov byte ptr es:[bp+di],al
mov byte ptr es:[bp+di+2],ah
add si,2
mov ax,[si]
add di,4
mov byte ptr es:[bp+di],al
mov byte ptr es:[bp+di+2],ah
add bp,160
mov di,0
add si,2
loop s
mov si,offset ss2
mov di,0
mov bp,2*160+33*2
mov cx,21
s1: mov ax,[si]
mov dx,[si+2]
call dtoc
add si,4
add bp,160
loop s1
mov si,offset ss3
mov di,0
mov bp,2*160+43*2
mov cx,21
s2: mov ax,[si]
sub dx,dx
call dtoc
add si,2
add bp,160
loop s2
mov bp,2*160+53*2
mov di,0
mov si,offset ss3
mov bx,offset ss2
mov cx,21
s3: mov ax,[bx]
mov dx,[bx+2]
div word ptr [si]
sub dx,dx
call dtoc
add bx,4
add si,2
add bp,160
loop s3
mov ax,4c00h
int 21h
dtoc: push ax
push si
push cx
push bx
push dx
mov bx,10
push ax
push dx
dtoc_s1: mov cx,ax
mov ax,dx
mov dx,0
div bx
push ax
mov ax,cx
div bx
pop dx
mov cx,dx
add cx,ax
jcxz dtoc_s2
add di,2
jmp dtoc_s1
dtoc_s2: pop dx
pop ax
dtoc_s3: mov cx,ax
mov ax,dx
mov dx,0
div bx
push ax
mov ax,cx
div bx
add dx,30h
mov byte ptr es:[bp+di],dl
pop dx
mov cx,dx
add cx,ax
jcxz dtoc_ok
sub di,2
jmp dtoc_s3
dtoc_ok: pop dx
pop bx
pop cx
pop si
pop ax
ret
code ends
end start
于是今天抽空重新写了一个,这次仅仅使用了20多分钟就写好了。
下面程序有些寄存器与代码纯粹多余,写完之后也懒的修改了。
assume cs:code
code segment
ss1: db '1975','1976','1977','1978','1979','1980','1981','1982','1983'
db '1984','1985','1986','1987','1988','1989','1990','1991','1992'
db '1993','1994','1995'
ss2: dd 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514
dd 345980,590827,803530,1183000,1843000,2759000,3753000,4649000,5937000
ss3: dw 3,7,9,13,28,38,130,220,476,778,1001,1442,2258,2793,4037,5635,8226
dw 11542,14430,15257,17800
start: mov ax,cs
mov ds,ax
mov si,offset ss1
mov ax,0b800h
mov es,ax
mov bp,2*160+23*2
mov di,0
mov bx,0
mov cx,21
s: mov ax,[si]
mov byte ptr es:[bp+di],al
mov byte ptr es:[bp+di+2],ah
add si,2
mov ax,[si]
add di,4
mov byte ptr es:[bp+di],al
mov byte ptr es:[bp+di+2],ah
add bp,160
mov di,0
add si,2
loop s
mov si,offset ss2
mov di,0
mov bp,2*160+33*2
mov cx,21
s1: mov ax,[si]
mov dx,[si+2]
call dtoc
add si,4
add bp,160
loop s1
mov si,offset ss3
mov di,0
mov bp,2*160+43*2
mov cx,21
s2: mov ax,[si]
sub dx,dx
call dtoc
add si,2
add bp,160
loop s2
mov bp,2*160+53*2
mov di,0
mov si,offset ss3
mov bx,offset ss2
mov cx,21
s3: mov ax,[bx]
mov dx,[bx+2]
div word ptr [si]
sub dx,dx
call dtoc
add bx,4
add si,2
add bp,160
loop s3
mov ax,4c00h
int 21h
dtoc: push ax
push si
push cx
push bx
push dx
mov bx,10
push ax
push dx
dtoc_s1: mov cx,ax
mov ax,dx
mov dx,0
div bx
push ax
mov ax,cx
div bx
pop dx
mov cx,dx
add cx,ax
jcxz dtoc_s2
add di,2
jmp dtoc_s1
dtoc_s2: pop dx
pop ax
dtoc_s3: mov cx,ax
mov ax,dx
mov dx,0
div bx
push ax
mov ax,cx
div bx
add dx,30h
mov byte ptr es:[bp+di],dl
pop dx
mov cx,dx
add cx,ax
jcxz dtoc_ok
sub di,2
jmp dtoc_s3
dtoc_ok: pop dx
pop bx
pop cx
pop si
pop ax
ret
code ends
end start
评论次数(0) |
浏览次数(616) |
类型(汇编作业) |
收藏此文 |