|
50鱼币
本帖最后由 传说。 于 2014-5-28 22:27 编辑
assume cs:code,ss:stack,ds:data
data 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'
dd 16,22,382,1356,2390,8000,16000,24486,50065,97479, 197514
dd 345980,590827,803530,1183000,1843000,2795000,3753000,4649000,5937000
dw 3,7,9,13,28,38,130,220,476,778,1001,1442,2258,2793,4037,5635,8226
dw 11542,14430,15257,17800
dw 5,3,42,104,85,210,123,111,105,125,140,136,153,211,199,209,224,239
dw 260,304,333
data ends
stack segment
db 80 dup (0)
stack ends
code segment
start: mov ax,data
mov ds,ax
mov ax,stack
mov ss,ax
mov sp,0
mov si,0 ;数据段偏移地址
mov di,0 ;显存段偏移地址
mov bl,2 ;颜色属性
mov ax,0b800h
mov es,ax
mov cx,21d
s: push cx
mov cx,4
s0: mov al,[si]
mov es:[di],al
mov es:[di+1],bl
add di,2
inc si
loop s0
add di,98h
pop cx
loop s
mov cx,21
mov bx,0
mov di,0
mov sp,50h
s1: mov ds:[260],cx
mov ds:[262],di
mov dx,[si] ;高16位入ax
mov ax,[si+1] ;低16位入dx
ff: call divdw
ll: inc bx
mov cx,di
jcxz mm
ok1:push ax
push bx
mov ax,di
mov dx,ax
pop bx
pop ax
jmp short ff
mm: mov cx,ax
jcxz q
jmp short ok1
q: mov cx,bx
mov di,ds:[262]
ok:
pop ax
mov bl,2
add al,30h
mov es:20[di],al
mov es:20[di+1],bl
add di,2
inc si
loop ok
add si,2
mov cx,ds:[260]
add ds:[262],0a0h
loop s1
mov ax,4c00h
int 21h
divdw:
push cx
push bx
push ax ;保存低16位
mov ax,dx
mov dx,0 ;dx归零
mov bx,10d ;bx做除数
div bx ; ax/bx ax为商 dx位余数
mov di,ax ;商入di
pop ax ;低16位出栈
mov cx,ax
jcxz k
div bx ;(低16位+商)/bx
K: pop bx
pop cx
push dx
jmp short ll
code ends
end start
谁能帮我这程序更改好?双字型数据出不来。
|
最佳答案
查看完整内容
assume cs:code,ss:stack,ds:data
data 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'
dd 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417, 197514
dd 345980,590827,803530,1183000,1843000,2795000,3753000,4649000,5937000
dw 3,7,9,13,28,38, ...
|