assume cs:code, ds:data, es:table, ss:stacks
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, 2759000, 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
data ends
table segment
db 21 dup (‘year sumn ne ?? ‘)
table ends
stacks segment
dw 0, 0, 0, 0
stacks ends
code segment
start:
mov ax, data
mov ds, ax
mov ax, table
mov es, ax
mov ax, stacks
mov ss, ax
mov sp, 8
mov si, 0
mov di, 0
mov cx, 21
s:
push cx
mov cx, 2
mov bx, 0
s1:
mov ax, ds:[0+si+bx]
mov es:[0+di+bx], ax
mov ax, ds:[84+si+bx]
mov es:[5+di+bx], ax
add bx, 2
loop s1
add si, bx
push si
mov ax, si
mov dl, 2
div dl
mov si, ax
sub si, 2
mov ax, ds:[168+si]
mov es:[10+di], ax
pop si
mov dx, es:[7+di]
mov ax, es:[5+di]
div word ptr es:[10+di]
mov es:[13+di], ax
add di, 16
pop cx
loop s
mov ax, 4C00H
int 21H
code ends
end start
执行前data段:
执行前table段:
执行后table段:
原文:https://www.cnblogs.com/P201821430020/p/12054660.html